CG教案真实感图形的生成技术精讲_第1页
CG教案真实感图形的生成技术精讲_第2页
CG教案真实感图形的生成技术精讲_第3页
CG教案真实感图形的生成技术精讲_第4页
CG教案真实感图形的生成技术精讲_第5页
已阅读5页,还剩88页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CG教案真实感图形的生成技术精讲真实感图形应用实例:2023/9/212在计算机图形设备生成真实逼真的图像、图形,需要经过以下4个步骤:构造几何要素(点、线、多边形、图像、位图),创建对象的数学描述;在三维空间上放置对象,选择有利的场景观察点;计算对象的颜色,这些颜色可以直接定义,也可以由光照条件及纹理间接给出;光栅化:把对象的数学描述和颜色信息转换到屏幕的像素。另外,也可能要执行消隐及对像素的操作。显示图形的步骤2023/9/213三维空间中,物体之间或同一物体的不同部分之间存在着相互遮挡关系,如何在图形的显示中反映这种遮挡关系?解决方法:消除隐藏面与隐藏线现实世界中,人们观察物体产生的真实感觉来源于:物体的空间位置关系——近大远小的透视关系和遮挡关系。光线传播引起的物体表面颜色的自然分布——明暗过渡的颜色。则,如何在计算机中产生真实感的(逼真的)图形?解决方法:建立光照明模型、开发真实感图形绘制方法。如何实现真实感图形的显示?2023/9/2148.1消隐技术图8-1图形具有二义性

(a)线框图(b)从右上往下看(c)从左下往上看)将三维场景绘制在计算机二维显示屏上必须经过投影变换,投影变换将三维信息变换到二维平面上,这个过程中深度信息被丢失,生成的图形往往具有二义性,如图所示。2023/9/215反映物体间的遮挡关系,就要确定对一个视点来说,哪些物体的哪些表面是可见的,即确定可见面。不可见的面即为隐藏面。表面模型:确定可见面等价于消除场景中的不可见面,即消除隐藏面,简称为面消隐。线框模型:显示采用线框模型表示的物体时,要消除不可见的线,即隐藏线的消除,简称线消隐。空间遮挡关系,如何在计算机中反映出来?2023/9/216可见面判别算法,按实现空间

(实现时所基于的坐标系)分为两类物空间算法(Object-spacemethods)像空间像法(Image-spacemethods)判别可见面的算法2023/9/217物空间算法物空间算法是在定义、描述物体的世界坐标系中实现的,以场景中的物体为处理单元。for(场景中的每一个物体){将其与场景中的其它物体比较,确定其表面的可见部分;显示该物体表面的可见部分;}判别可见面的算法2023/9/218物空间算法物空间算法是在定义、描述物体的世界坐标系中实现的,以场景中的物体为处理单元。这种方法把物体和物体的某些部分彼此比较,通过有关几何运算,以确定哪些线或表面是不可见的。然后仅显示可见线,以此实现消隐,算法精度较高,生成的图形可以放大多倍而仍然令人满意,适用于精密的工程应用领域。判别可见面的算法2023/9/219像空间算法像空间算法是在观看物体的屏幕坐标系下实现的,它以窗口内的每个像素为处理单元:for(窗口内的每一个像素){ 确定与此像素对应的距离视点最近的物体,以该物体表面该处的颜色来显示像素;}判别可见面的算法2023/9/2110像空间算法在显示图形的屏幕坐标系中实现。对投影平面或显示屏幕上的每一个像素位置逐点地检测其可见性。算法比较粗糙,而且按图像空间算法得到的画面在放大后往往不能令人满意。算法计算效率比较高,因为在光栅扫描过程中可以充分利用画面的连贯性等性质。判别可见面的算法2023/9/2111假设场景中有k个物体,平均每个物体的表面有h个多边形构成,显示区域中有m×n个像素,则方法一物空间算法的计算复杂度为O((kh)2),方法二像空间算法的复杂度为O(mnkh)。理论上讲,kh<<mn,即物空间算法的计算量少于像空间算法的计算量,但实际上物体到视点距离的排序与遮挡判别比较复杂,算法效率很大程度上取决于排序的效率。而以扫描线的方式实现像空间算法时容易利用连贯性质从而使得像空间算法更具效率。常用的提高消隐算法效率的方法有:利用连贯性、背面剔除、包围盒技术、空间分割技术等等。算法复杂度比较:2023/9/2112一、利用连贯性相邻事物的属性之间具有一定的连贯性,即从一个事物到相邻的事物,属性值通常是平缓过渡的,例如颜色值、空间位置关系等,这种连贯性可用于提高消隐算法的效率。物体的连贯性如果物体A与物体B完全相互分离,则在消隐时,只需要比较两物体之间的遮挡关系就可以了,而不需要对它们的表面多边形逐一进行测试。面的连贯性一张面内的各种属性值一般都是缓慢变化的,允许我们采用增量的形式对其进行计算。8.1.2提高消隐算法效率的常用方法2023/9/2113区域的连贯性(像素)一个区域是指屏幕上一组相邻的像素,它们通常为同一个可见面所占据,可见性相同。区域连贯性表现在一条扫描线上即为扫描线上的每个区间内只有一个面可见。扫描线的连贯性在相邻的两条扫描线上,可见面的分布情况相似。深度连贯性同一表面上的相邻部分深度是近似的,而占据屏幕上同一区域的不同表面其深度不同。这样,在判断表面间的遮挡关系时,只需要取其上一点计算出深度值,比较该深度值便能得出结果。2023/9/2114消隐与投影密切相关消隐必须在投影之前完成,因为消隐需要三维信息。物体之间的遮挡关系,与投影中心(视点)的选取有关。(图1)物体之间的遮挡关系与投影方式有关。(图2)二、将透视投影转换成平行投影对物体进行平行投影比透视投影简单,所以一般先将透视投影转换成平行投影,再进行消隐。2023/9/2115包围盒一个形体的包围盒,是指包围它的简单形体,如二维空间中的矩形、圆,三维空间中的球、长方体等。一个好的包围盒要具有两个条件:该包围盒充分紧密地包围着形体;对包围盒的测试比较简单。常用的包围盒长方体球圆柱三、包围盒技术2023/9/2116包围盒技术的应用常用来避免盲目的求交测试以及各种物体间的比较,以达到减少计算量,提高效率的目的。包围盒相交,A、B也相交包围盒相交,A、B不相交包围盒不相交,说明A、B不相交,从而无需对A、B进行相互间的遮挡测试;若包围盒相交,则可能有两种情况,还需要进一步判断。2023/9/2117前向面与后向面(背面)若一个多边形的外法向与投影方向(观察方向)的夹角为钝角,称其为前向面。若一个多边形的外法向与投影方向(观察方向)的夹角为锐角,称其为后向面(背面)。四、背面剔除在没有被遮挡的情况下,前向面是可见的,背面总是被前向面遮挡,从而是不可见的。在消隐之前剔除背面,将大大减少消隐的计算量。2023/9/2118一般,要判断一个物体是否可见,必须将它与场景中的所有物体进行比较,而不管是否存在相互遮挡的可能。为了避免不必要的测试,可以采用分割技术。将投影平面上的窗口分成若干小区域在物体所在的三维空间中,将视见体分成一个个小的长方体。五、空间分割技术2023/9/2119物体的分层表示是指利用模型变换将物体表示成一棵树的形式。(下图)模型变换的目的是便于把子节点以合适的尺寸与位置安装到其父节点中。六、物体的分层表示采用分层表示可以减少场景中物体的个数,从而降低算法复杂度。将父节点代表的物体看作子节点代表物体的包围盒,当两个父节点之间不存在遮挡关系时,就没有必要对两者的子节点做进一步测试。2023/9/2120隐藏线的产生是因为在给定的观察方向下,某些棱(或棱的一部分)被表面多边形遮挡成为不可见,因此多面体隐藏线消除可以归结为一个根本问题:在给定的观察方向下,给定一条空间线段P1P2和一个多边形π,判断线段是否被多边形遮挡。如果遮挡,求出遮挡部分。步骤如下:将线段和多边形投影到投影平面上得到线段P'1P'2

和多边形π'。计算线段P'1P'2和多边形π'各条边的交点。

8.1.3多面体隐藏线消除2023/9/2121交点将P'1P'2分成若干子线段,特别地当交点不存在时,子线段只有一个,即P'1P'2自身。在每个子线段上的所有点具有相同的隐藏性。分别判断各个子线段的隐藏性。取子线段的中点,判断该点是否在多边形π'内。如不在多边形内,则说明子线段与多边形π'是分离的,不存在隐藏关系,因而该子线段是可见的。如在多边形内,从子线段的中点向视点引射线,如果射线与多边形相交,则该子线段被多边形隐藏,否则该子线段可见。2023/9/2122线段和一个多边形进行隐藏性判断时,涉及到的运算包括投影变换、平面上线段和多边形的求交、判断点是否在多边形内、空间中射线和平面求交等。 如果将多面体的每条棱与每个多边形都按上面的方法消除隐藏线,则计算量将非常大。可以采取如下措施可以减少计算量:提高消隐效率,减少计算量消除自隐藏线、隐藏面 利用多面体表面多边形的法矢判别“朝后的面”即不可见面。2023/9/2123深度测试

在观察坐标系下判断线段与多边形的前后关系。如多边形完全在线段之后,则线段完全可见,无需就线段和多边形的遮挡关系进行进一步判断。包围盒测试

包围盒不相交,线段和多边形也不相交,线段完全可见,无需就线段和多边形的遮挡关系进行进一步判断。2023/9/2124常用的面消隐算法画家算法Z缓冲器算法扫描线Z缓冲器算法扫描线算法区域子分算法光线投射算法等等。8.1.4面消隐2023/9/2125画家作画一、画家算法这种作画的方法用于消隐,即为画家算法。2023/9/2126画家算法的基本思路:先将场景中的物体按其距离观察点的远近进行排序,结果存在一张线性表中。距观察点远者称其优先级低,放在表头,距观察点近者称其优先级高,放在表尾,这张表称为深度优先级表。按照从表头到表尾的顺序逐个绘制物体。由于距离观察点近的物体后画,它覆盖了远的物体,最终在屏幕上产生了遮挡关系的正确结果,相当于消除了隐藏面。低高2023/9/2127画家消隐算法{对场景中的多边形按深度进行排序, 形成深度优先级表;按从远到近的顺序显示多边形;}画家消隐算法:低高消隐的基本(核心)问题:排序2023/9/2128画家排序算法不能处理多边形循环遮挡的情况和两个多边形相互穿透的情况。问题!为了避免这种情况的发生,可以将某些多边形分割为两个。2023/9/2129深度与可见性二、Z缓冲器算法uvnumaxvmax2023/9/2130Z缓冲器(Z-buffer):深度缓冲器(Depth-buffer)Z缓冲器算法中除了需要一个用于保存各像素颜色值的帧缓冲器之外,还需要一个用于保存各像素处物体深度值的Z缓冲器。Z缓冲器与帧缓冲器具有同样多的单元,它们的单元之间存在1-1对应关系。Z缓冲器各单元的初始值为-1(规范视见体的最小n值)。2023/9/2131Z缓冲器算法:当绘制某个像素时,要确定其颜色。对屏幕上的像素,首先检查当前多边形的深度值是否大于保存在该像素所对应的Z缓冲器单元中的该像素原来的深度值。如果大于,说明当前多边形更靠近观察点,用它的颜色替换像素原来的颜色;否则,说明在该像素处,当前多边形被前面所绘制的多边形遮挡了,是不可见的,像素的颜色值不改变。-1RGY2023/9/2132Z缓冲器消隐算法for(v=0;v<vmax;v++)//初始化

for(u=0;u<umax;u++){置帧缓冲器的第(u,v)单元的颜色值为背景色;置Z缓冲器的第(u,v)单元的深度值为-1(最小的深度值);}for(每一个多边形)

for(多边形在投影平面上的投影区域内的每个像素(u,v)){计算多边形在当前像素(u,v)处的深度值,记为d;

if(d>Z缓冲器的第(u,v)单元的值)

{置帧缓冲器的第(u,v)单元的颜色值为当前多边形颜色值;置Z缓冲器的第(u,v)单元的深度值为d;}}2023/9/2133优点算法简单、稳定,便于硬件加速;不需要整个场景的几何数据。缺点需要一个额外的Z缓冲器,占用较大的存储空间。克服这个缺点的方法是,将整个绘图区域分割成若干个小的区域,然后一个一个区域的显示,这样Z缓冲器的单元数只要等于一个小区域内像素的个数即可。Z缓冲器算法的优缺点2023/9/2134作业(一)解释概念: 面消隐、线消隐列举3个提高消隐算法效率的常用方法?画家算法的基本思路是什么?Z缓冲器消隐算法的基本思路是什么?2023/9/2135单纯判别物体表面的可见性,远远不能反映物体表面的真实感。物体表面所呈现的颜色是由表面向视线方向辐射进入人眼中的光决定的。8.2光照技术图6-5(a)经过光照计算的球

(b)不经过光照计算的球

建立数学模型模拟物体表面的光照明物理现象,按照数学模型计算物体表面向视线方向辐射进入人眼中的光亮度,即可获得像素所对应的物体上的可见点的颜色,这样绘制出来的图形具有较强的真实感,如图6-5(a)。这些数学模型就称为明暗效应模型或者光照明模型。2023/9/2136当光线照射到一个物体表面时,主要发生三种情况:反射透射(对透明物体)部分光被物体吸收转换为热能。光的反射、透射与转化在上述三部分光中,只有反射光与透射光能够刺激人眼产生颜色,因而物体表面的反射光和透射光决定了物体呈现的颜色。这正是简单光照模型需要考虑的,简单光照模型只考察光源直接照射下物体表面的反射情况。2023/9/2137

光学反射模型(d)理想镜面反射方向与视线方向的夹角

(a)漫反射(b)理想镜面反射(c)一般光滑表面的镜面反射图6-6光学反射模型

通常物体表面的反射光可以认为包含三个分量:对环境光的反射、对特定光源的漫反射和镜面反射。

2023/9/2138环境光的反射:

环境光(ambientlight)来自周围环境(如墙面)散射的光,在空间近似均匀分布,入射至物体表面后向空间各个方向均匀反射出去。物体对环境光的反射分量表示:

其中Ia是入射的环境光亮度;Ka是环境光漫反射系数,它与物体表面性质有关。如果简单光照模型中仅考虑环境光的反射分量,则物体表面的亮度是一个恒定值,没有明暗的自然过渡。2023/9/2139粗糙、无光泽物体(如粉笔)表面对光的反射表现为漫反射(DiffuseReflection)。在物体表面某点上,这样的表面对入射光在各个方向上呈强度相同的反射,因而无论从哪个角度看,该点的亮度都是相同的。漫反射(diffusereflection):2023/9/2140兰伯特(Lambert)余弦定律指出:当点光源照射到一个漫反射体时,其表面反射光亮度和光源入射角的余弦成正比。Il是来自点光源的入射光亮度。Kd是漫反射系数,与物体表面性质有关。

是入射光线和表面法矢量的夹角,即入射角。2023/9/2141

兰伯特反射光照模型

只考虑对环境光的反射分量和对特定光源的漫反射分量,则物体表面的反射光亮度为:该模型适用于粗糙、无光泽的物体,如粉笔、黑板。而对于擦亮的金属、光滑的塑料等光亮物体需要计算镜面反射。

2023/9/2142对于纯镜面,反射光和入射光对称地分布在表面法向的两侧。对于一般光滑表面,表面可理解为由许多朝向不同的微小平面构成,入射光经许多微小平面反射后形成的反射光不再是单向的,而是分布于理想镜面反射方向的周围。镜面反射(specularreflection):2023/9/2143通常采用余弦函数的幂次来模拟一般光滑表面的镜面反射光的空间分布。Il——入射光亮度;Ks

——物体表面镜面反射系数;

——理想镜面反射方向与视线方向的夹角;n——镜面反射光的会聚指数。2023/9/2144

Phong光照模型考虑环境光、漫反射和镜面反射,则物体表面的反射光亮度为:实际上光的亮度与传播距离的平方成反比,Il为光源处的光亮度,光线抵达物体表面以及从物体表面反射进入观察者眼睛的过程中存在衰减的问题。漫反射分量和镜面反射分量应该乘以一个衰减因子,以取得远的物体看起来暗些的效果。2023/9/2145当场景的投影变换采用透视投影时,Warnock提出线性衰减因子1/d,而Rommey提出衰减因子1/dp可以取得比较真实的效果。此时Phong光照模型可以进一步描述为:其中d是物体上当前考察点到视点的距离,K是一个任意的常量,0≤p≤2。2023/9/2146实际上,在计算物体上可见点光亮度时,通常是将光亮度转换为光栅图形显示器采用的RGB三基色,这时计算需要在三个基色上分别进行。如果存在多个光源,则将效果线性相加。此时光照模型可以描述为:2023/9/2147计算物体上可见点的光亮度时,角度一般是用物体表面的法矢量与入射光线、反射光线的矢量积来计算的。此时光照模型可以描述为:建立简单光照模型后,就可以用于消隐算法中计算像素所对应的物体上可见点的亮度。2023/9/2148光照效果图2023/9/2149光照计算时需要用到多边形上点的法矢量,如果多边形上点的法矢量总是取多边形的面法矢,则由于不同平面片之间法矢量不连续,最终绘制出来的图像看起来呈多面体状。

明暗处理图6-7(a)多边形表示的物体

(b)Gouraud明暗处理

2023/9/2150首先,多边形的顶点法矢量不再简单的取为其所在多边形的面法矢,而是取为共享该顶点的所有多边形的面法矢的平均值;其次,多边形内部点的法矢量也不再简单地取为多边形的面法矢,而是利用多边形顶点的法矢量通过双线性插值计算出。明暗处理解决方法:2023/9/2151

Phong明暗处理(插值法矢)顶点V处的法矢量:为共享该顶点的多边形单位法矢量的平均值。2023/9/2152如图所示,P1、P2、P3是多边形顶点,其法矢量为共享该点的所有多边形法矢量的平均值。由P1、P2的法矢量可以线性插值计算出A点的法矢量,由P1、P3的法矢量可以线性插值计算出B点的法矢量,于是P点的法矢量可以由A、B点处的法矢量线性插值计算出。计算出P的法矢量后应用简单光照模型可以计算出P点的光亮度。对P点进行双线性插值2023/9/2153对多边形顶点的法矢量进行双线性插值,获得多边形内部各点的法矢量。法矢量插值

2023/9/2154

Gouraud明暗处理(插值颜色)由于每个像素点都需要法向量插值和光照计算,Phong明暗处理计算量较大,一种简化的处理方法是先利用光照模型计算出多边形顶点处亮度,然后对亮度进行双线性插值,直接获得像素的颜色。如图所示,P1、P2、P3是多边形顶点,其亮度已经计算出。Phong明暗处理计算量远大于Gouraud明暗处理,但效果好。图

对P点进行双线性插值

A点的亮度可以由P1、P2点的亮度线性插值计算出,B点的亮度可以由P1、P3点的亮度线性插值计算出,于是P点的亮度可以由A、B点的亮度线性插值计算出。

2023/9/2155对多边形顶点颜色进行双线性插值,获得多边形内部各点的颜色。多边形顶点颜色插值

2023/9/2156简单光照模型将光在物体间往复反射、折射引起的照明效果简化为环境光形式的入射光,没有很好的模拟光的折射、反射,没有特别考察物体间的相互照明影响,这使得简单光照模型在某些情况下绘制效果并不理想。

所以我们需要建立整体光照模型。8.2.2光线跟踪与辐射度方法介绍2023/9/2157Whitted特别考察了光在物体间往复反射、折射引起的照明效果。Whitted认为物体表面向空间某方向V辐射的光亮度I由三部分组成:整体光照模型Ic为简单光照模型计算结果;Is为其它物体反射光;It为透射光;Ks为物体表面的镜面反射系数;Kt为物体表面的透射系数。2023/9/2158自然界中光线的传播过程光源物体表面光线跟踪过程——光线传播的逆过程物体表面…………人眼2023/9/2159光线跟踪技术是Whitted由光线投射技术发展的。原理:从视点向每个像素中心发出一条光线(视线),它与场景中的一些物体表面相交,最近的交点即为可见点,像素的亮度即由该可见点的亮度决定。光线跟踪算法的基本原理(1/4)递归过程c2023/9/2160递归过程的终止条件:光线不与场景中的任何物体相交;被跟踪的光线达到了给定的层次;预先设定一个阈值,当被跟踪的光线对像素的亮度贡献小于这个阈值时,停止跟踪。光线跟踪算法的基本原理(2/4)光线跟踪算法:设置视点、投影平面以及窗口的参数;for(窗口内每一条扫描线)

for(扫描线上的每一个像素)

{确定从视点指向像素中心的光线ray; 像素的颜色=RayTracing(ray,1);

}2023/9/2161光线跟踪算法的基本原理(3/4)/*计算并返回当前扫描线ray的颜色,depth为ray的层次*/ColorRayTracing(Rayray,intdepth){求ray与物体表面最近的交点P;if(有交点){用局部光照明模型计算P点的Il;

color=Il;

if(depth<给定的最大跟踪层次)

{计算ray的反射光线;

Is=RayTracing(反射光线,depth+1); if(物体是透明的)

{计算ray的透射光线;

It=RayTracing(透射光线,depth+1);

}

color=color+KsIs+Kt

It;

}}elsecolor=黑色;return(color);}2023/9/2162光线跟踪算法的关键——光线与物体表面的求交。光线与平面多边形求交光线与球面求交光线与圆柱面求交光线与二次曲面求交光线与参数多项式曲面求交光线跟踪算法的基本原理(4/4)2023/9/21631984年,美国Cornell大学和日本广岛大学的学者分别将热辐射工程中的辐射度方法引入到计算机图形学中,用辐射度方法成功地模拟了理想漫反射表面间的多重漫反射效果。辐射度方法基于物理学的能量平衡原理,它采用数值求解技术来近似每一个景物表面的辐射度分布。辐射度方法2023/9/2164物体表面的入射光分为哪三部分?简述光线跟踪算法的基本原理及其递归终止的条件。作业(二)2023/9/21658.3物体表面细节的模拟物体表面的细节可以分为两类:一类是由物体表面颜色的色彩、明暗变化体现出来的细节,如光滑瓷砖表面上的装饰图案,它主要取决于物体表面的材质属性;另一类是由物体表面不规则的细小凹凸造成的细节,如桔子表面的皱纹,它主要取决于物体本身的几何形状。在计算机中描述物体材质属性、几何形状的细节很难,如果只追求看起来象就可以了,可以通过纹理映射的方式生成物体表面的细节。2023/9/2166纹理映射:纹理映射分为颜色纹理映射和几何纹理映射。颜色纹理映射用来在光滑表面上产生花纹图案的效果;几何纹理映射用来使物体表面产生凹凸不平的效果。一般地讲,利用纹理映射可以在不增加场景描述复杂度,不显著增加计算量的前提下,大幅度地提高图形的真实感。

2023/9/2167颜色纹理映射的三个主要步骤:(1)纹理函数定义;(2)映射函数定义;(3)纹理映射的实施;颜色纹理映射技术

映射(a)纹理定义域(b)物体表面图6-12映射函数的建立图6-11纹理图案2023/9/2168粗糙表面的法矢量具有一个比较小的随机分量,这使得其上的光线反射方向也具有一定的随机分量。Blinn用表面法矢量的扰动产生凹凸不平的真实感效果。几何纹理映射技术法向扰动法目标:产生几何纹理,模拟凸凹不平的物体表面。应用:自然界中植物的表皮等。方法:采用一个适当的扰动函数对物体表面的微观形状进行扰动,模拟各种不同的几何纹理。2023/9/2169B(u,v)很小,第三项可以忽略不计2023/9/21702023/9/2171阴影是现实生活中一个很常见的光照现象,在真实感图形学中,通过阴影可以反映出物体之间的相互位置关系,增加图形图像的立体效果,极大地增强真实感。什么是阴影?空间中光源不能直接照射到的区域;对光源来说,不可见的面(隐藏面)。8.4阴影的生成2023/9/2172阴影可以分为本影和半影。本影是指物体表面上那些没有被任何光源直接照射到的部分;半影是指物体表面上那些被某些特定光源或特定光源的一部分直接照射到,但不是被所有光源直接照射到的部分。场景绘制时,先利用消隐技术确定物体表面的可见部分或者是像素所对应的物体表面上的可见点,然后应用光照模型计算物体表面上可见点的亮度,这时如果根据光源是否可以直接照射到物体表面上当前可见点来取舍光源的照明效果,则绘制出来的图像具有阴影的效果。阴影:2023/9/2173考虑阴影的光照明方程 对于物体表面上的一点P,若它处于某个光源的阴影之中,则该光源对它的亮度没有贡献。即产生阴影(1/6)2023/9/2174该方法两次应用Z缓冲器消隐算法,步骤如下:一、Z缓冲器阴影算法将所有景物变换到光源坐标系(以光源为原点的坐标系)中,利用Z缓冲器消隐算法按光线方向对景物进行消隐,把那些距光源最近的物体表面上点的深度值保存在Z缓冲器(称为阴影缓冲器)中。利用Z缓冲器消隐算法按视线方向对景物进行消隐,将得到的每一个可见点变换到第j个光源的光源坐标系中,若它在光源坐标系中的深度值比阴影缓冲器中相应单元的值小,则说明该可见点位于阴影之中(Sj=0),否则不在阴影区域中(Sj=1)。再用加入阴影效果的光照明模型(6-7-2)计算可见点的颜色值,并将结果赋予相应的像素。2023/9/2175优点算法简单,计算量小,能处理复杂事物。缺点每一个光源都需要一个阴影缓冲器,若场景中有m个光源时,则算法一共需要m+1个Z缓冲器,所占用的存储空间相当庞大。Z缓冲器阴影算法的优缺点:2023/9/2176基本思想: 在景物空间中,利用裁剪算法求出被光源直接照射的多边形或其一部分,将这些多边形作为表面细节贴在物体表面上。 当绘制画面时,光源直接照射的物体表面(被细节多边形覆盖的部分)上的点的Sj=1,其余部分的Sj=0,按式(6-7-2)计算各可见点的颜色并显示相应的像素。二、阴影细节多边形三2023/9/2177受光源直接照射的细节多边形可按如下算法求出,它是以Weiler-Atherton裁剪算法为基础的多边形区域分类算法:将物体变换到光源坐标系中;对所有的多边形按深度(离光源的远近)进行预排序,结果保存在多边形表中;取深度值最大的(与光源最靠近)多边形为裁剪窗口。利用Weiler-Atherton裁剪算法对其余的全部多边形进行裁剪,得到两张多边形表,即内裁剪多边形表与外裁剪多边形表。内裁剪多边形表中存放内裁剪的结果多边形,外裁剪多边形表中存放外裁剪的结果多边形。阴影细节多边形:2023/9/2178检查内裁剪多边形表,若第一个多边形(裁剪窗口本身)完全位于其余多边形之前,则保留第一个多边形(它即为一个表面细节多边形),删除其后所有多边形; 否则说明第(2)步关于深度的排序结果不正确,将内裁剪多边形表按深度排序,并参照它的排序结果重新排列原多边形表,返回第(2)步。阴影细节多边形:(续)若外裁剪多边形表为空,则算法结束;否则对其进行深度预排序,返回第(3)步。2023/9/2179基本思想:从可见点P向光源发出测试光线,若该光线在到达光源之前与其它物体相交,则P点位于阴影区域中,Sj=0;否则它受到光源的直接照射,Sj=1。三、光线跟踪算法2023/9/2180OpenGL提供的函数可以方便地实现隐藏面消除、光照计算、纹理映射。OpenGL中隐藏面的消除采用的是Z缓冲器算法。用glEnable(GL_DEPTH_TEST)

和glDisable(GL_DEPTH_TEST)打开和禁止深度测试。8.6用OpenGL生成真实感图形2023/9/2181OpenGL进行光照计算时采用的是简单光照模型,只考虑光源直接照射下物体表面的反射,不考虑光在物体间的反射和光的透射。用glEnable(GL_LIGHTING)

glDisable(GL_LIGHTING)打开和禁止光照计算。2023/9/2182OpenGL认为物体表面的反射光包含三个分量:物体本身发出的光、对环境光的反射、对特定光源的反射。物体本身发出的光。OpenGL认为物体本身是可以发光的,但是这种光只会对物体本身的亮度产生影响,不能影响其它物体的光亮度。物体本身发出的光记为Iemit

。对环境光的反射。这里的环境光指的是全局环境光,它不依赖于任何特定光源。全局环境光概念的提出使得即使场景中没有任何光源,观察者也可以看到物体。假设全局环境光亮度Iglobal,物体表面的环境光反射系数为Ka,则物体对全局环境光的反射为Ka

·Iglobal。对特定光源的反射。OpenGL中光源的设置:2023/9/2183在OpenGL中,光源被定义为聚光灯。定义一个聚光灯需要指定光源的位置(即锥顶)、聚光灯的方向(即圆锥轴的方向)、聚光灯的散射角(即圆锥中轴和边的夹角)。聚光灯将光的发射形状调整为圆锥形,此时空间光强度分布可以用聚光灯光强分布系数乘以锥顶处聚光灯光强给出。图6-15视线和反射光线夹角

图6-16聚光灯2023/9/2184综合三个分量,在OpenGL中物体表面的反射光亮度为:为减小计算量,OpenGL采用Gouraud明暗处理方法。通过函数调用来设置:

glSha

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论