1、计算机图形学计算机图形学 计算机图形学计算机图形学课程设计课程设计 (2015-2016 学年第二学期)学年第二学期) 学学 院院 专业班级专业班级 学学 号号 学生姓名学生姓名 老老 师师 编写日期:2016 年 xx月 xx 日 2 / 42 目 录 真实感游戏场景绘制 3 一 实验目的 3 二 实验内容 3 三 实验分工 4 四 理论基础 4 1 雾化模型 . 4 2 颜色模型 . 5 3 光照模型 . 6 4 纹理模型 . 6 五 系统描述 13 1 墙壁、地面、箱子 . 13 2 石柱、雪人 . 14 3 玻璃球 . 15 4 天空 . 17 六 心得体会 19 七 附录:程序源代码
2、 19 计算机图形学计算机图形学 3 / 42 真实感游戏场景绘制 【摘要摘要】本次课程设计绘制了一个真实感的三维场景,并实现场景漫游。主 要绘制了墙壁与地面、天空、石柱、箱子、玻璃球、雪人、雾等对象。以 Visual Studio2012 为平台用 OpenGL 基础知识实现此真实感场景的绘制。 一一 实验目的实验目的 1熟悉 OpenGL 基础函数,并了解其用法。 2 通过程序模拟真实感游戏场景, 掌握图形综合展示效果, 基于专业背景, 结合实验课内容与课程设计要求, 使用 OpenGL 绘制简单的 3D 真实感游戏场景, 包括光栅化算法、多边形裁剪计算以及消隐算法在场景绘制中的应用。 二
3、二 实验内容实验内容和效果和效果 光栅化算法、多边形裁剪计算以及消隐算法在场景绘制中的应用,其中真实 感场景绘制包括颜色模型、 纹理模型、 雾化模型、 运动模型以及环境光、 漫反射、 镜面反射等光照模型设置。 图 1 游戏场景整体效果 4 / 42 三三 实验分工实验分工 本次课程设计实验,小组成员齐心协力。首先从自己尝试编写没有成功到 后来的各种搜集资料,寻找 3D 游戏场景的绘制代码,到最后小组成员分工解析 代码并注释,做 PPT,演讲 PPT 等,大家合作都很用心。这次的实验中我们小 组每个成员在每一个环节都参与任务,因代码过多,也都参与到代码解析中。具 体安排如下: 姓名姓名 任务任务
4、 xxx 搜集资料,代码解析注释,做 PPT,PPT 演讲 xxx 搜集资料,代码解析并注释,做 PPT,PPT 演讲 xxx 搜集资料,代码解析注释,做 PPT,PPT 演讲 xxx 搜集资料,代码解析注释,做 PPT,PPT 演讲 四四 理论基础理论基础 1 雾化模型雾化模型 OpenGL 中提供了完整的雾化接口,我们只需要选择合适的雾气的混合因子、 密度、颜色、起始位置等。在 OpenGL 中,雾的工作模式有两种:线性模式和指 数模式。这两种模式是根据雾的浓度变化来区分的。 在线性模式下,只需要提供一个距离视点的开始位置和结束位置。从开始位 置到结束位置之间,雾的浓度越来越高,浓度的变化
5、和距离成正比。 在指数模式下,雾的浓度随着距离的增加呈指数增长。这种模式通常用来用 于烟雾、烟幕等效果。 glFogf(GL_FOG_START, 1.0f)确定了雾的开始初离屏幕有多近。 glFogf(GL_FOG_END, 5.0),它告诉 OpenGL 雾能离开屏幕有多远 glHint(GL_FOG_HINT, GL_DONT_CARE)确定了雾的渲染方式,使用 GL_DONT_CARE 是因为并不关心建议值。这个项的不同值之间的区别: 计算机图形学计算机图形学 5 / 42 GK_DONT_CARE:让 OPENGL 自己来确定雾的渲染方式,每顶点或是每 像素。 GL_NICEST:对
6、每一像素进行雾的渲染,它看起来是极棒的。 GL_FASTEST:对每一顶点进行雾的渲染,它速度较快,但是不够美丽 我们的雾气设置如下: 修改函数里面的参数改变雾的颜色和浓度: 图 2 改变颜色(蓝色)和浓度的雾气 2 颜色模型颜色模型 OpenGL 支持两种颜色模式:一种是 RGBA,一种是颜色索引模式。不同的 是,RGBA 模式中,数据直接就代表了颜色;而颜色索引模式中,数据代表的是 一个索引,要得到真正的颜色,还必须去查索引表。 RGBA 颜色颜色 6 / 42 RGBA 模式中,每一个像素会保存以下数据:R 值(红色分量)、G 值(绿 色分量)、B 值(蓝色分量)和 A 值(alpha 分量)。其中红、绿、蓝三种颜色 相组合,就可以得到我们所需要的各种颜色,而 alpha 不直接影响颜色。 3 光照模型光照模型 光照模型包括许多因素,如物体的类型,物体相对光源与其他物体的位置以 及场景中所设置的光源属性,物体的透明度,物体的表面光亮程度,甚至物体的 各种表面纹理等。