计算机图形学实验——真实感图形场景的生成
浅谈真实感图形生成技术及真实感绘制

浅谈真实感图形生成技术及真实感绘制作者:许燕来源:《电脑知识与技术》2013年第24期摘要:真实感图形是计算机图形学中一个重要的组成部分,它的基本要求是在计算机中生成三维场景的真实感图形或图象。
多媒体教育、虚拟现实系统、科学计算可视化、动画制作、电影特技模拟、计算机游戏等许多方面,真实感图形学都发挥了重要的作用。
其中的核心内容就是真实感绘制,它有多种方法,其中植物场景的真实感绘制是比较常用的。
例如对于场景中的物体、要得到它的真实感图形,就要对它进行透视投影,并消除隐藏面,然后计算可见面的光照明暗效果等。
关键词:真实感绘制技术;自然场景;体纹理;光线跟踪中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)24-5541-02真实感图形的发展是比较早的,在1967年,Wylie等人第一次在显示物体时加进光照效果,认为光强与距离成反比;1970年,Bouknight提出第一个光反射模型:Lambert漫反射+环境光;1971年,Gouraud提出漫反射模型加插值的思想;1975年,Phong提出图形学中第一个有影响的光照明模型。
真实感图形绘制技术是图形学绘制技术发展的结果,它的目标是根据几何场景的造型、材质和光源分布,将其转变成跟真实场景在视觉效果上非常相似的图象,使观察者有身临其境的感觉。
计算机自然景物模拟,因其所具有的广泛应用领域,而成为计算机图形的一个重要分支。
在商店的室内外装饰中,为增强商店对顾客的吸引力,刺激起顾客的购买欲,商店装饰设计者常常会使用一些自然景物等非规则构件来美化商店的室内外环境,如假山,花草,树木,云彩等。
1 真实感绘制算法1.1 光照模型既是模拟物体表面的光照明物理现象的数学模型。
可以划分为简单的光照模型和整体的光照模型两类。
简单的光照明模型,假设物体是不透明的,只考虑光源的直接照射,而将光在物体之间的传播效果笼统地模拟为环境光。
可以处理物体之间光照的相互作用的模型即为整体的光照明模型。
真实感图形生成技术计算机图形学PPT42页

6、最大的骄傲于最大的自卑都表示心灵的最软弱无力。——斯宾诺莎 7、自知之明是最难得的知识。——西班牙 8、勇气通往天堂,怯懦通往地狱。——塞内加 9、有时候读书是一种巧妙地避开思考的方法。——赫尔普斯 10、阅读一切好书如同和过去最杰出的人谈话。——笛卡儿
真实感图形生成技术计算机图形学
•
6、黄金时代是在我们的前面,而不在 我们的 后面。
•
7、心急吃不了热汤圆。
•
8、你可以很有个性,但某些时候请收 敛。
•
9、只为成功找方法,不为失败找借口 (蹩脚 的工人 总是说 工具不 好)。
ቤተ መጻሕፍቲ ባይዱ
•
10、只要下定决心克服恐惧,便几乎 能克服 任何恐 惧。因 为,请 记住, 除了在 脑海中 ,恐惧 无处藏 身。-- 戴尔. 卡耐基 。
计算机图形学报告

. . . . .. . 优质资料 .. 计算机图形学 (2017年秋季学期)实验 报 告系别:计算机科学与技术 班级: : 学号:实验名称:2-真实感图形绘制2020-11-132/3《计算机图形学》实验报告实验名称真实感图形绘制 实验序号 2实验日期 2017.12.13 实验人 一、实验目的、要求与环境1.目的:通过实验,学生应掌握通过计算机程序进行真实感图形绘制的基本原理,特别是对三维显示对象进行纹理映射的基本方法,将理论和实际应用切实结合起来。
2.要求:对一个三维立方体进行旋转,对其6个不同的面进行6个不同图像的纹理映射,并进行投影变换与显示,分析增强后的视觉效果,提交实验报告。
3.环境:Windows 7操作系统Microsoft Visual Studio 2005OpenGL 函数库4. 自带位图文件(换成你自己的图像文件):总成绩:评语:日期:2020-11-1311/12二、实验容与步骤1. 准备相关图像文件。
2. 进行立方体各面图像与旋转速度的大体设计。
3.在Windows 7 操作系统上,打开Microsoft Visual Studio 2005,编写相关程序,完成程序主体框架结构。
4.编写六面体显示相关的程序代码。
5.编写六面体旋转相关的程序代码。
6.编写深度检测相关的程序代码。
7. 编写纹理载入功能的相关程序代码。
8. 编写纹理参数定义功能的相关程序代码。
9. 编写纹理映射功能的相关程序代码。
10.对程序进行相关调试,修改程序,去除其中的BUG 。
11. 观察纹理映射后的六面体的旋转显示,与预想的结果进行对比,修改相关程序参数。
12.截屏,保留实验结果,进行实验结果分析,并撰写实验报告。
2020-11-13 2/32020-11-13 11/12四、编译过程截图五、实验结果与分析(下面是一个例子,换上你自己的图)实验结果:实验分析程序通过glBindTexture(GL_TEXTURE_2D, lastTextureID);语句,完成了恢复之2020-11-13 2/32020-11-13 11/122020-11-13 2/32020-11-13 11/122020-11-13 2/3。
3D真实感图形技术

Physics of Light and Color
It’s all electromagnetic radiation
Different colors correspond to different wavelengths λ; Intensity of each wavelength specified by amplitude; Frequency ν = 2 π / λ;
计算机图形学
刘春晓
Why different color?
计算机图形学
刘春晓
How to show color
Use Color Model! Often have 3 color channels:
TV would be much more complex if we perceived the full spectrum
计算机图形学
刘春晓
Summarize Phong:
从视点观察到物体上任一点P处的光强度I应为环境光反射光 强度Ie、漫反射光强度Id以及镜面反射光的光强度Is的总和:
I = Ie + Id + Is
= I a K a + I p K d ( L ⋅ N ) + I p K s ( R ⋅V ) n
i =1
n
K d 是与物体有关的漫反射系数, 0 < K d < 1
计算机图形学 刘春晓
(3) 镜面反射光
点光源 L
N 观察点 R
θ
θ
α
V
镜面反射情况由Phong模型给出:
P
图 1 0 -4 镜 面 反 射
I s = I p K s cos n α 若R和V已规格化为单位矢量,则:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四 真实感图形的生成
一、 实验内容
创建一个简单场景
场景中有一个复杂的三维几何体
通过一系列处理使得场景和几何体具有真实感
可以通过变换视点观察场景
二、 程序结构
创建Win32 Console Application,使用OpenGL的控制台应用程序框架。其
中:
init()函数进行场景初始化工作;
reshape(GLsizei width, GLsizei height)函数设置窗口的视口大小,
同时设置透视深度和透视角度等参数;
display()函数构建坐标系并通过调用具体的绘制图形函数来绘制具体
场景和几何图形;
LoadBMP()函数导入纹理位图文件;
LoadTexture()函数加载纹理到内存空间中;
generateShadow(GLfloat shadow[4][4], const GLfloat ground[4],
const GLfloat light[4])函数来计算空间中物体上任意一点的平面阴影
投射矩阵
keyboard(unsigned char key, int x, int y)函数处理键盘按键消息;
mouseButton(int button, int state, int x, int y)函数处理鼠标按
键消息;
最后由主函数main(int argc, char** argv)中调用OpenGL函数来显示窗口,
并进行绘图和处理事件消息函数。
三、 代码说明
1. 加载位图纹理
首先,编写LoadBMP()函数导入位图文件,代码截图如下:
然后,编写LoadEarthTexture()函数加载导入的位图并设置相关参数,代码
截图如下:
2. 绘制房间场景
在drawScene()函数中调用OpenGL基本几何元素绘制过程
glBegin(GL_QUADS)绘制4个平面,并为每个平面绑定相应的纹理图片,主
要代码截图如下:
3. 绘制地球仪模型
编写drawEarth()函数绘制地球仪模型,并为地球仪模型绑定对应的纹理贴
图,同时增加光照和材质的处理,代码截图如下:
4. 绘制模拟点光源
编写drawBulb()函数绘制模拟点光源及灯罩,首先调用
glBegin(GL_TRIANGLE_STRIP)绘制4个三角形面构成棱锥形灯罩的4个侧
面,然后调用gluSphere()函数绘制球形灯泡并增加光照和材质处理效果,
代码截图如下:
5. 生成阴影
根据点光源、物体上的任意一点、物体在平面上的投影点“三点共线”的几
何原理,以及投影点在平面上的位置关系,通过平面方程求得其法向量,然
后利用点光源和物体上一点的坐标进行计算,得出物体上该点的平面阴影投
射矩阵。因此编写generateShadow(GLfloat shadow[4][4], const GLfloat
ground[4], const GLfloat light[4])来实现该矩阵的计算,代码截图如下:
然后在display()函数中调用上面的函数计算出地球仪模型的阴影投射矩
阵,然后与模型矩阵进行相乘,进而绘制模型的阴影,代码截图如下:
6. 场景初始化参数设置,重绘窗口及视点设置
在init()函数中首先清除屏幕颜色和深度缓存,然后设置明暗处理和启用光
照等参数,进行整个场景的初始化设置,代码截图如下:
在reshape(GLsizei width, GLsizei height)函数中设置视点的初始位置,
以及透视投影的深度和角度,代码截图如下:
7. 键盘按键、鼠标按键消息处理
编写keyboard()函数处理键盘按键消息,对相关参数变量修改其步长,最后
调用glutPostRedisplay()函数进行重绘窗口,部分代码截图如下:
编写mouseButton()函数处理鼠标按键消息,通过鼠标左键可控制地球仪是
否自动绕地轴旋转,在此之前编写myIdle()函数实现地球仪旋转角度的步长
增加,代码截图如下:
8. 执行main()函数,代码截图如下:
四、 结果