资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第八章 真实感图形显示,真实感图形绘制,:,通过综合利用数学、物理学、计算机以及心理学等知识在计算机图形输出设备上绘制出能够以假乱真的美丽景象。,涉及的技术有消隐、光照、纹理等。,8.1 消隐技术,消隐技术是计算机图形学的一个基本问题。,问题由来,:因为存在不透光的物体,因此挡住了某些物体部分的光线到达观测者,这些物体部分成为隐藏的不可见部分。,投影变换将三维信息变换到二维平面上,这个过程中深度信息被丢失,生成的图形往往具有二义性.,要消除二义性,就必须在绘制时消除被遮挡的不可见的线或面,习惯上称作消除隐藏线和隐藏面,简称为,消隐,。,计算机生成的图要能真实的反应这一问题,因此必须把隐藏部分消除。,消隐结果与观察物体有关,也与视点有关。,线框图 消隐图 真实感图形,消隐分类,根据处理场景时是直接对物体定义进行处理还是处理它们的投影图像分类,物空间消隐(,Object space algorithms),投影之前直接在三维空间中对物体进行消隐。把n个对象中的每一个与其它(n-1)个对象比较,消去不可见的对象:,像空间消隐,(Image space algorithms),投影到二维显示空间并光栅化(图象空间)后进行消隐。,物体空间的消隐算法,将场景中每一个面与其他每个面比较,求出所有点、边、面遮挡关系。,以场景中的物体为处理单元;,for(场景中的每一个物体),将其与场景中的其它物体比较,确定其表面的可见部分;,显示该物体表面的可见部分;,图像空间的消隐算法,对屏幕上每个象素进行判断,决定哪个多边形在该象素可见。,以窗口内的每个像素为处理单元;,for(窗口内的每一个像素),确定距视点最近的物体,以该物体表面的颜色来显示像素,8.2 多面体的消隐处理,多面体可分解为面,面是由边(线)围成。所以多面体的消隐问题可以看为求面与面之间的遮挡关系,进而转为求面对线的遮挡关系。在遮挡判断中,需要反复地进行线线、线面之间的求交运算。,为了提高算法的效率,需要设法减少求交的工作量。,1、消除自隐藏面,设,V,为由视点出发的观察向量,,N,为某多边形面的法向量。,若V N0,称该多边形为后向面。,若V Nxmax2)或(ymin1ymax2)(8.1),或(xmin2xmax1)或(ymin2ymax1)时,两边界盒不相交,则原来的两条边也不相交。,式8.1只是一个充分条件,上图中Q1Q2和Q3Q4虽然不相交,但是他们不满足8.1。,大量的不相交线段是可以用边界盒的方法判断出来。,边界盒的方法还可用于判断两个多边形或两个多面体是否相交。,ymax,ymin,xmax,xmin,3、,深度测试,在观察坐标系下判断线段与多边形的前后关系。如多边形完全在线段之后,则线段完全可见,无需就线段和多边形的遮挡关系进行进一步判断。,以上措施有效地减少了直线段求交的次数。,8.3 Z缓冲器消隐算法,Z缓冲器算法,帧缓存来存放每个象素的颜色值,初值可放对应背景颜色的值,深度缓存来存放每个象素的深度值,即相应象素所对应的物体上的点在观察坐标系下的Z坐标值。,初值取成z的极小值,屏幕,帧缓冲器,每个单元存放对应,象素的颜色值,Z缓冲器,每个单元存放对应,象素的深度值,Z缓冲器算法,帧缓存来存放每个象素的颜色值,初值可放对应背景颜色的值,深度缓存来存放每个象素的深度值,即相应象素所对应的物体上的点在观察坐标系下的Z坐标值。,初值取成z的极小值。,屏幕,帧缓冲器,每个单元存放对应,象素的颜色值,Z缓冲器,每个单元存放对应,象素的深度值,z缓冲器中的单元与帧缓冲器中的单元一一对应,算法思路:先将z缓冲器中个单元的初始值置为-1(规范视见体的最小n值)。当要改变某个像素的颜色值时,首先检查当前多边形的深度值是否大于该像素原来的深度值(保存在该像素所对应的Z缓冲器的单元中),如果大于,说明当前多边形更靠近观察点,用它的颜色替换像素原来的颜色;否则说明在当前像素处,当前多边形被前面所绘制的多边形遮挡了,是不可见的,像素的颜色值不改变。,Z-Buffer算法(),帧缓存全置为背景色,深度缓存全置为最小Z值,for(每一个多边形),扫描转换该多边形,for(该多边形所覆盖的每个象素(x,y),计算该多边形在该象素的深度值Z(x,y);,if(Z(x,y)大于Z缓存在(x,y)的值),把Z(x,y)存入Z缓存中(x,y)处,把多边形在(x,y)处的颜色值存入帧缓存的(x,y)处,Z-Buffer算法在象素级上以近物取代远物。形体在屏幕上的出现顺序是无关紧要的。,优点:有利于硬件实现。,缺点:占用空间大,需要一个很大的z缓冲器,。,颜色是外来的光刺激作用于人的视觉器官而产生的主观感觉,影响的因素有:,物体本身,光源,周围环境,观察者的视觉系统,8.4 光照技术,图,(a),经过光照计算的球,(b),不经过光照计算的球,建立数学模型模拟物体表面的光照明物理现象,按照数学模型计算物体表面向视线方向辐射进入人眼中的光亮度,即可获得像素所对应的物体上的可见点的颜色,这样绘制出来的图形具有较强的真实感,如图(a)。这些数学模型就称为明暗效应模型或者光照明模型。,物体表面所呈现的颜色是由表面向视线方向辐射进入人眼中光决定的。,当光照射到物体表面时,光可能被吸收、反射和透射,被物体吸收的部分转化为热,只有反射、透射的光能够进入人眼产生视觉效果,它们决定了物体所呈现的颜色。如果物体是不透明的,则透射光不存在,物体的颜色仅由反射光决定。这种情形正是简单光照模型需要考虑的,简单光照模型只考察光源直接照射下物体表面的反射情况。,Phong,光照明模型,(简单光照模型),简单光照明模型模拟物体表面对光的反射作用,光源为点光源。,反射光由环境光,(Ambient Light),、漫反射光,(,Diffuse Reflection,),和镜面反射光,(,Specular Reflection,),三部分组成。,环境光,环境光(ambient light)来自周围环境(如墙面)散射的光,在空间近似均匀分布,入射至物体表面后向空间各个方向均匀反射出去。,正是由于有了环境光,场景中没有直接光照的部分才可见。,漫反射分量表示特定光源在物体表面的反射光中那些向空间各个方向均匀反射出去的光。,理想漫反射,表示特定光源在物体表面的反射光中那些遵循反射定律的光,。对于纯镜面,反射光和入射光对称地分布在表面法向的两侧。对于一般光滑表面,表面可理解为由许多朝向不同的微小平面构成,入射光经许多微小平面反射后形成的反射光不再是单向的,而是分布于理想镜面反射方向的周围。,镜面反射光将会在反射方向附近形成很亮的光斑,称为高光现象.,镜面反射,光滑明暗处理,(a),多边形表示的物体,(b)Gouraud,明暗处理,?,在计算机图形学中,光滑的曲目表面常用多边形逼近表示。而光照计算时需要用到点的法矢量,如果多边形上点的法矢量总是取多边形的面法矢,则由于不同平面片之间法矢量不连续,最终绘制出来的图像看起来呈多面体状。,解决方法:,首先多边形的顶点法矢量不再简单的取为其所在多边形的面法矢,而是取为共该顶点的所有多边形的面法矢的平均值;其次多边形内部点的法矢量也不再简单地取为多边形的面法矢,而是利用多边形顶点的法矢量通过双线性插值计算出。,两个主要算法,双线性光强插值、,Gouraud,明暗处理,双线性法向插值、,Phong,明暗处理,对,P,点进行双线性插值,Phong,明暗处理(插值法矢),如图,,P,1,、,P,2,、,P,3,是多边形顶点,其法矢量视为共该点的所有多边形法矢量的平均值。由,P,1,、,P,2,的法矢量可以线性插值计算出,A,点的法矢量,由,P,1,、,P,3,的法矢量可以线性插值计算出,B,点的法矢量,于是,P,点的法矢量可以由,A,、,B,点处的法矢量线性插值计算出,计算出,P,的法矢量后应用简单光照模型可以计算出,P,点的光亮度。,Gouraud,明暗处理(插值颜色),由于每个像素点都需要法向量插值和光照计算,,Phong,明暗处理计算量较大,一种简化的处理方法是先利用光照模型计算出多边形顶点处亮度,然后对亮度进行双线性插值,直接获得像素的颜色,如上图,,P,1,、,P,2,、,P,3,是多边形顶点,其亮度已经计算出。,A,点的亮度可以由,P,1,、,P,2,点的亮度线性插值计算出,,B,点的亮度可以由,P,1,、,P,3,点的亮度线性插值计算出,于是,P,点的亮度可以由,A,、,B,点的亮度线性插值计算出。,Phong明暗处理计算量远大于Gouraud明暗处理,但效果好。,光强,(法向),插值,双线性插值,由顶点的,光强,(法向)插值计算各边的,光强,(法向),然后由各边的,光强,(法向)插值计算出多边形内部点的,光强,(法向),8.5 物体表面细节的模拟,物体表面的细节可以分为两类:一类是由物体表面颜色色彩、明暗变化体现出来的细节,如光滑瓷砖表面上装饰图案,它主要取决于物体表面的,材质属性,;另一类是由物体表面不规则的细小凹凸造成的细节,如桔子表面的皱纹,它主要取决于物体本身的,几何形状,。,在计算机中描述物体材质属性、几何形状的细节很难,如果只追求看起来象就可以了,可以通过纹理映射的方式生成物体表面的细节。,纹理映射可以分为:,颜色纹理映射,和,几何纹理映射,。颜色纹理映射用来在光滑表面上产生花纹图案的效果,几何纹理映射用来使物体表面产生凹凸不平的效果。,一般地讲,利用纹理映射可以在不增加场景描述复杂度,不显著增加计算量的前提下,大幅度地提高图形的真实感。,
展开阅读全文