真实感图形绘制
- 格式:ppt
- 大小:982.00 KB
- 文档页数:32
实验四真实感图形的生成一、实验内容⏹创建一个简单场景⏹场景中有一个复杂的三维几何体⏹通过一系列处理使得场景和几何体具有真实感⏹可以通过变换视点观察场景二、程序结构创建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.生成阴影根据点光源、物体上的任意一点、物体在平面上的投影点“三点共线”的几何原理,以及投影点在平面上的位置关系,通过平面方程求得其法向量,然后利用点光源和物体上一点的坐标进行计算,得出物体上该点的平面阴影投射矩阵。
10800 rays used in lighting pass.Note:-improved caustic definition,-lighting effect of mirror, -reflection of caustic,-shadowing due to mirror lighting.CausticsFrom Alan Watt, “3D Computer Graphics”Standard raytracer:Diffuse table and blue ball,mirrors left, right and back, transparent red ballBi-directional raytracer More rays in the light passSingle Pass (Conventional RT)Note : caustic due to red transparent ballHenrik http://www.gk.dtu.dk/~hwjBidirectional example200 rays used in lighting pass 400 rays used in lighting passRefraction causticsHenrik http://www.gk.dtu.dk/~hwj15Direct illumination 16Global Illumination17eyediagram photograph:18Original sculpture by John Ferren lit by daylight from behind.Image rendered with radiosity. note color bleeding effects.Ray traced image. A standard ray tracer cannot simulate the interreflection of light between 19Radiosity vs. Ray TracingRay-tracingView-dependentSpecular and refractionRadiosityView-independent Diffuse only20Radiosity vs. Ray Tracing•Ray tracing is an algorithm–If the camera is moved, we have to start over•Radiosity is computed in object-space–View-independent (just don't move the light)–Can pre-compute complex lighting to allow interactive walkthroughs26The Rendering EquationxMuseum simulation. Program of Computer Graphics, Cornell University.50,000 patches. Note indirect lighting from ceiling.32Radiosity Overview在辐射度方法中,所有的景物表面都假设为理想的朗伯漫反射表面所有的入射光在各个方向上反射的光强都一样整个场景被划分为一系列的小区域(small areas, or patches )设小区域i 向外辐射的所有能量的辐射度为Bi,并认为在i 内所有地方的辐射度为一个常数单位如下,表示单位立体角单位面积的瓦特数:Watts / steradian * meter 2x'ω'x'xxx’Discrete Radiosity EquationA iA j•discrete representation•iterative solution•costly geometric/visibility calculationspatches, over which the radiosity =i B The Radiosity Matrix求解该矩阵,就可以为每一个patch 得到一个B i ,它与视点是无关的。
《计算机图形学》实验报告实验十一真实感图形一、实验教学目标与基本要求初步实现真实感图形, 并实践图形的造型与变换等。
二、理论基础运用几何造型, 几何、投影及透视变换、真实感图形效果(消隐、纹理、光照等)有关知识实现。
1.用给定地形高程数据绘制出地形图;2.绘制一(套)房间,参数自定。
三. 算法设计与分析真实感图形绘制过程中, 由于投影变换失去了深度信息, 往往导致图形的二义性。
要消除这类二义性, 就必须在绘制时消除被遮挡的不可见的线或面, 习惯上称之为消除隐藏线和隐藏面, 或简称为消隐, 经过消隐得到的投影图称为物体的真实图形。
消隐处理是计算机绘图中一个引人注目的问题, 目前已提出多种算法, 基本上可以分为两大类:即物体空间方法和图象空间方法。
物体空间方法是通过比较物体和物体的相对关系来决定可见与不可见的;而图象空间方法则是根据在图象象素点上各投影点之间的关系来确定可见与否的。
用这两类方法就可以消除凸型模型、凹形模型和多个模型同时存在时的隐藏面。
1).消隐算法的实现1.物体空间的消隐算法物体空间法是在三维坐标系中, 通过分析物体模型间的几何关系, 如物体的几何位置、与观察点的相对位置等, 来进行隐藏面判断的消隐算法。
世界坐标系是描述物体的原始坐标系, 物体的世界坐标描述了物体的基本形状。
为了更好地观察和描述物体, 经常需要对其世界坐标进行平移和旋转, 而得到物体的观察坐标。
物体的观察坐标能得到描述物体的更好视角, 所以物体空间法通常都是在观察坐标系中进行的。
观察坐标系的原点一般即是观察点。
物体空间法消隐包括两个基本步骤, 即三维坐标变换和选取适当的隐藏面判断算法。
选择合适的观察坐标系不但可以更好地描述物体, 而且可以大大简化和降低消隐算法的运算。
因此, 利用物体空间法进行消隐的第一步往往是将物体所处的坐标系转换为适当的观察坐标系。
这需要对物体进行三维旋转和平移变换。
常用的物体空间消隐算法包括平面公式法、径向预排序法、径向排序法、隔离平面法、深度排序法、光线投射法和区域子分法。
第九章使用MFC实现真实感图形绘制真实感图形绘制是计算机图形学的一个重要组成部分。
它综合利用数学、物理学、计算机科学和其他学科知识在计算机图形设备上生成象彩色照片那样的真实感图形。
要用计算机图形设备绘制场景的真实感图形,就必须首先在计算机中建立该场景的模型,用这个模型来反映场景的特点和属性。
这一模型通常是由一批几何数据及数据之间的拓扑关系来表示的,这就是造型技术,它是真实感图形绘制技术的重要组成部分。
有了三维场景的模型,并给定了观察点和观察方向以后,就可以通过几何变换和投影变换在屏幕上显示该三维场景的二维图像。
为了使二维图像具有立体感,并尽可能逼真地显示出该物体在现实世界中被观察到的形象,就需要运用适当的光照模型,来模拟场景在现实世界中受到各种光源照射时的效果,这就是真实感图形的画面绘制技术,也就是真实感图形的生成技术。
用计算机在图形设备上生成连续色调的真实感图形大致可以分为以下四步:第一步,用数学方法建立所需三维场景的几何描述,并将它们输入至计算机。
这部分工作可由三维立体造型或曲面造型系统来完成。
场景的几何描述直接影响了图形的复杂性和图形绘制的计算耗费,因此选择合理的、有效的数据表示和输入手段是非常重要的。
第二步,将三维几何描述转换为二维投影图。
这可以通过对场景的投影变换来完成。
第三步,确定场景中的所有可见面,这需要使用隐藏面消除算法将被其他物体遮挡的不可见面消去。
第四步,计算场景中可见面的颜色,严格地说,就是根据基于光学物理的光照明模型计算可见面投射到观察者眼中的光亮度大小和色彩分量,并将它转换成适合图形设备的颜色值,从而确定投影画面上每一象素的颜色,最终生成图形。
前三步的相关知识在前面已经进行了介绍,本章将重点介绍如何通过MFC 编程的方式,利用光照模型计算场景中可见面的光亮度和颜色,并绘制最终的真实感图形。
实际上,现在OpenGL和DirectX等图形函数库提供了很多支持真实感图形绘制的函数,使用它们可以更轻松的完成真实感图形绘制。