《《真实感图形生成》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《真实感图形生成》PPT课件.ppt(77页珍藏版)》请在金锄头文库上搜索。
1、计算机图形学高级话题计算机图形学高级话题-真实感图形生成o引言引言o消隐消隐o真实感图形的绘制真实感图形的绘制o实时真实感图形学技术实时真实感图形学技术o总结总结引言引言对于场景中的物体、要得到它的真实感图形,对于场景中的物体、要得到它的真实感图形,就要对它进行透视投影,并消除隐藏面,然就要对它进行透视投影,并消除隐藏面,然后计算可见面的光照明暗效果,最后在计算后计算可见面的光照明暗效果,最后在计算机中绘制出让观察者有身临其境感觉的图形机中绘制出让观察者有身临其境感觉的图形. . 消隐消隐 o消隐的概念消隐的概念o消隐算法分类消隐算法分类o消隐算法消隐算法n深度缓存器算法深度缓存器算法n区间扫
2、描线算法区间扫描线算法n深度排序算法深度排序算法n区域细分算法区域细分算法n光线投射算法光线投射算法nBSP树算法树算法n多边形区域排序算法多边形区域排序算法消隐的概念消隐的概念o用计算机生成三维物体的真实图形用计算机生成三维物体的真实图形, , 在用显示在用显示设备描述物体的图形时,必须把三维信息经过设备描述物体的图形时,必须把三维信息经过某种投影变换,在二维的显示表面上绘制出来。某种投影变换,在二维的显示表面上绘制出来。由于投影变换失去了深度信息,往往导致图形由于投影变换失去了深度信息,往往导致图形的二义性。要消除二义性,就必须在绘制时消的二义性。要消除二义性,就必须在绘制时消除被遮挡的不
3、可见的线或面,习惯上称作消除除被遮挡的不可见的线或面,习惯上称作消除隐藏线和隐藏面,或简称为隐藏线和隐藏面,或简称为消隐消隐。o消隐实例消隐实例 物体的线框图物体的线框图 经消隐处理后的图形经消隐处理后的图形消隐算法分类消隐算法分类o按其实现方式分为按其实现方式分为: :n图象空间消隐算法图象空间消隐算法 图象空间图象空间( (屏幕坐标系屏幕坐标系) )消隐算法以屏幕像素为消隐算法以屏幕像素为采样单位采样单位, ,确定投影于每一个像素的可见景物确定投影于每一个像素的可见景物表面区域表面区域, ,并将其颜色作为该像素的显示颜色并将其颜色作为该像素的显示颜色n景物空间消隐算法景物空间消隐算法 直接
4、在景物直接在景物( (观察坐标系观察坐标系) )中确定视点不可见的中确定视点不可见的表面区域表面区域, ,并将它们表达成同原表面一致的数并将它们表达成同原表面一致的数据结构据结构深度缓存器算法o深度缓存器算法最早由深度缓存器算法最早由Catmull提出的提出的,是是一种典型的一种典型的,最简单的图象空间面消隐算法最简单的图象空间面消隐算法.o该算法也称为该算法也称为Z-buffer算法算法o算法的原理算法的原理o算法的实现步骤算法的实现步骤o算法的特点算法的特点深度缓存器算法原理深度缓存器算法原理l先将待处理的景物表面上的采样点变换到图象先将待处理的景物表面上的采样点变换到图象空间空间(屏幕坐
5、标系屏幕坐标系),计算其深度值。计算其深度值。l根据采样点在屏幕上的投影位置,将其深度与根据采样点在屏幕上的投影位置,将其深度与已存储在已存储在Z缓存器中的相应像素处的原可见点缓存器中的相应像素处的原可见点的深度值进行比较。的深度值进行比较。l如果新的采样点的深度值大于原可见点的深度,如果新的采样点的深度值大于原可见点的深度,表明新的采样点遮住了原可见点,则采用该采表明新的采样点遮住了原可见点,则采用该采样点处的颜色更新帧缓存器中相应像素的颜色,样点处的颜色更新帧缓存器中相应像素的颜色,同时用其深度值更新同时用其深度值更新Z缓存器中的深度值。缓存器中的深度值。l否则,不作修改。否则,不作修改。
6、Z-Buffer算法的特点算法的特点o优点优点:n形体在屏幕上的出现顺序是无关紧要的形体在屏幕上的出现顺序是无关紧要的,算法简算法简单单;n便于硬件实现。便于硬件实现。o缺点缺点:n占用空间大占用空间大 n不利于实现反走样、透明和半透明等处理不利于实现反走样、透明和半透明等处理深度排序算法深度排序算法 深度深度排序算法的主要步骤:1.把所有的多边形按顶点最大z坐标值进行排序。2. 解决当多边形z范围发生交迭时出现的不明确问题。3. 按最大z坐标值逐渐减小的次序,对每个多边形进行扫描转换。 算法的基本思想是按多边形离开观察位算法的基本思想是按多边形离开观察位置的置的距离距离进行排序,然后按照进行
7、排序,然后按照距离减少距离减少的的次序,把每个多边形内部点应有的象素值次序,把每个多边形内部点应有的象素值送入帧缓存存贮器中。送入帧缓存存贮器中。 算法考查多边形的深度次序是在客体算法考查多边形的深度次序是在客体空间中进行,图形显示时覆盖步骤是在图空间中进行,图形显示时覆盖步骤是在图象空间中实现,所以可以说是一个象空间中实现,所以可以说是一个客体空客体空间和图象空间间和图象空间的混合算法。的混合算法。不明确问题检验方法 所有多边形按顶点最大z坐标值排序后得到一个排序表,设P是排在表中最后的那个多边形。 设Q是排在P前面并且z坐标范围与其发生交迭的一个多边形,对Q与P的次序关系进行检查。 检查可
8、以按下面列出的五个步骤进行,每个步骤判断一种情况。 1多边形的x坐标范围不相交迭,所以多边形不相交迭。2多边形的y坐标范围不相交迭,所以多边形不相交迭。3. P整个在Q远离观察点的一侧。4. Q整个在P的靠近观察点的一侧。5. 多边形在z=0平面上的投影本身不相交迭。 如果所有这五步检查都为假,就假定P是遮挡了Q,交换P和Q在排序表中的位置。 如果仍做交换,算法会永远循环下去而没有结果。 为了避免循环,可以做一个限制。当做过首次五步检查后,发生某个多边形被移到排序表的末尾时,就立即加上一个标记,以后就不能再做移动。出现再次应该移动时,用一个多边形所在的平面,把另一个多边形剪裁分为两个。扫描线算
9、法扫描线算法 扫扫描描线线算算法法是是图图象象空空间间算算法法,它它建建立立图图象象是是通通过过每每次次处处理理一一条条扫扫描描线线来来完完成成的的。这这个个算算法法是是第第四四章章讨讨论论的的多多边边形形填填充充的的扫扫描描线线算算法法的的推推广广。在在多多边边形形填填充充的的扫扫描描线线算算法法中中,只只是是对对一一个个多多边边形形做做扫扫描描转转换换,而而这这里里是是同同时时对对多多个多边形个多边形做扫描转换。做扫描转换。 PQ画家算法画家算法 画家算法又称深度优先级表法,画家算法又称深度优先级表法,它是深度排序算法的一种具体实它是深度排序算法的一种具体实现。现。 先画远景,再画中景,最
10、后先画远景,再画中景,最后画近景。画近景。 区域分割算法区域分割算法 区域分割算法区域分割算法将投影平面分割成区域将投影平面分割成区域,考,考察区域内的图象。如果容易决定在这个区域内察区域内的图象。如果容易决定在这个区域内某些多边形是可见的,那么就可以显示那些可某些多边形是可见的,那么就可以显示那些可见的多边形,完成对这一区域的显示任务。否见的多边形,完成对这一区域的显示任务。否则,就将区域再分割成小的区域,对小的区域则,就将区域再分割成小的区域,对小的区域递归地进行判断。由于区域逐渐变小,在每个递归地进行判断。由于区域逐渐变小,在每个区域内的多边形逐渐变少,最终总可以判定哪区域内的多边形逐渐
11、变少,最终总可以判定哪些多边形是可见的。这个算法利用的区域的相些多边形是可见的。这个算法利用的区域的相关性,这种相关性是指位于适当大小的区域内关性,这种相关性是指位于适当大小的区域内的所有象素,表示的其实是同一个表面。的所有象素,表示的其实是同一个表面。BSPBSP树算法树算法 BSPBSP(binary binary space-partitioningspace-partitioning)树树算算法法将将表表面面由由后后往往前前地地在在屏屏幕幕上上绘绘出出,该该算算法法特特别别适适用用于于场场景景中中物物体体位位置置固固定定不不变变、仅仅视视点点移移动的情况。动的情况。 利用利用BSPBS
12、P树来判别表面的可见性,其主要操树来判别表面的可见性,其主要操作是在每次作是在每次分割空间分割空间时,判别该表面相对于视时,判别该表面相对于视点与分割平面的位置关系,即位于其内侧还是点与分割平面的位置关系,即位于其内侧还是外侧外侧。 平面P1将空间分割为两部分,一组物体位于P1的后面(相对于视点),而另一组则在P1之前,而B和D在P1之后。平面P2对空间进行了二次分割,并生成如图(b)所示的二叉树表示。在这棵树上,物体用叶节点表示,分割平面前方的物体组作为左分支,而后方的物体组为右分支。 对于由多边形面组成的物体,对于由多边形面组成的物体,可以选择与可以选择与多边形面重合的分割平面多边形面重合
13、的分割平面,利用平面方程来区,利用平面方程来区分分“内内”、“外外”多边形顶点。随着将每个多多边形顶点。随着将每个多边形面作为分割平面,可生成一棵树,边形面作为分割平面,可生成一棵树,与分割与分割平面相交的每个多边形将被分割为两部分平面相交的每个多边形将被分割为两部分。一。一旦旦BSPBSP树创建完毕,即可选择树上的面并由后往树创建完毕,即可选择树上的面并由后往前显示,即前面物体覆盖后面的物体。目前已前显示,即前面物体覆盖后面的物体。目前已有许多系统借助硬件来完成有许多系统借助硬件来完成BSPBSP树创建和处理的树创建和处理的快速实现。快速实现。 光线投射算法光线投射算法 考查由视点出发穿过观
14、察平面上一像考查由视点出发穿过观察平面上一像素而射入场景的一条射线,则可以确定出素而射入场景的一条射线,则可以确定出场景中与该射线相交的物体。在计算出光场景中与该射线相交的物体。在计算出光线与物体表面的交点之后,线与物体表面的交点之后,离像素最近的离像素最近的交点所在的表面即为可见面交点所在的表面即为可见面。这种可见性。这种可见性判别模式应用了光线投射算法。判别模式应用了光线投射算法。 光线投射(光线投射(ray castingray casting)建立)建立于几何光学的基础之上,它沿光线的于几何光学的基础之上,它沿光线的路径追踪可见面,是一种有效的可见路径追踪可见面,是一种有效的可见性判别
15、手段。由于场景中有无限多条性判别手段。由于场景中有无限多条光线,而我们仅对光线,而我们仅对穿过像素的光线穿过像素的光线感感兴趣,因此可考虑从像素出发,逆向兴趣,因此可考虑从像素出发,逆向跟踪射入场景的光线路径。光线投射跟踪射入场景的光线路径。光线投射算法对于包含曲面,特别是球面的场算法对于包含曲面,特别是球面的场景有很高的效率景有很高的效率 。像素 一条由象素点射入场景的视线 光光线线投投射射算算法法可可以以看看做做是是深深度度缓缓冲冲器器算算法法的的一一种种变变形形。在在深深度度缓缓冲冲器器算算法法,每每次次处处理理一一个个表表面面并并对对表表面面上上的的每每个个投投影影点点计计算算深深度度
16、值值。计计算算出出来来的的值值与与以以前前保保存存的的深深度度进进行行比比较较,从从而而确确定定每每个个像像素素所所对对应应的的可可见见表表面面。在在光光线线投投射射算算法法中中,每每次次处处理理一一个个像像素素,并并沿沿光光线线的的投投射射路路径径计计算算出出该该像像素素所所对对应应的的所所有有表表面面的的深深度度值。值。 光线跟踪技术通过追踪多条光线在场景中的光线跟踪技术通过追踪多条光线在场景中的路径,以得到多个物体表面所产生的反射和折路径,以得到多个物体表面所产生的反射和折射效果。而在光线投射中,跟踪的光线仅从每射效果。而在光线投射中,跟踪的光线仅从每个像素到最近的物体为止。个像素到最近
17、的物体为止。真实感图形的绘制真实感图形的绘制o消隐能反映景物间的相互遮挡关系消隐能反映景物间的相互遮挡关系, ,能够增能够增强图形的深度感和层次感强图形的深度感和层次感. .o如何利用计算机进行真实感图形的绘制呢如何利用计算机进行真实感图形的绘制呢? ?真实感图形的绘制步骤真实感图形的绘制步骤1.1.场景造型场景造型n采用数学方法建立三维场景的几何描述并输入到计算机采用数学方法建立三维场景的几何描述并输入到计算机2.2.取景变换、透视投影取景变换、透视投影n将三维几何描述转换为二维透视图的内容将三维几何描述转换为二维透视图的内容3.3.视域裁剪、消除隐藏面视域裁剪、消除隐藏面n确确定定景景物物
18、中中的的所所以以可可见见面面, ,将将视视域域之之外外或或其其它它景景物物遮遮挡挡的不可见面消除的不可见面消除4.4.绘制真实感图形绘制真实感图形n根据一定的光照模型和光强度计算根据一定的光照模型和光强度计算, ,将其转换为适合图将其转换为适合图形设备的颜色值形设备的颜色值, ,生成投影画面上每个像素的光强度生成投影画面上每个像素的光强度, ,让让观察者产生身临其境的感觉观察者产生身临其境的感觉基本概念基本概念颜色颜色o颜色颜色 要产生具有高度真实感的图形,颜色是最重要要产生具有高度真实感的图形,颜色是最重要的部分。在我们的光照明模型中,通常只要分别的部分。在我们的光照明模型中,通常只要分别计
19、算计算R R、G G、B B 三个分量的光强值,就可以得到某三个分量的光强值,就可以得到某个象素点上的颜色值,给人以某种颜色的感觉。个象素点上的颜色值,给人以某种颜色的感觉。 我们从人体视觉的角度出发,介绍计算机图我们从人体视觉的角度出发,介绍计算机图形学中颜色和视觉的一些相关知识。形学中颜色和视觉的一些相关知识。 颜色的三特性颜色的三特性o颜色有如下三个特性:颜色有如下三个特性:色调色调(Hue)(Hue)、饱和度、饱和度(Saturation)(Saturation)和亮度和亮度(Lightness)(Lightness)。色调,是一种颜色。色调,是一种颜色区别于其它颜色的因素,也就是我们
20、平常所说的红、绿、区别于其它颜色的因素,也就是我们平常所说的红、绿、蓝、紫等;饱和度是指颜色的纯度,鲜红色饱和度高,蓝、紫等;饱和度是指颜色的纯度,鲜红色饱和度高,而粉红色的饱和度低。而粉红色的饱和度低。o与之相对应,从光学物理学的角度出发,颜色的三个特与之相对应,从光学物理学的角度出发,颜色的三个特性分别为:主波长性分别为:主波长(Dominant Wavelength)(Dominant Wavelength)、纯度、纯度(Purity)(Purity)和明度和明度(Luminance)(Luminance)。主波长是产生颜色光的。主波长是产生颜色光的波长,对应于视觉感知的色调;光的纯度对
21、应于饱和度,波长,对应于视觉感知的色调;光的纯度对应于饱和度,而明度就是光的亮度。而明度就是光的亮度。 三色学说三色学说o三色学说三色学说: :某一种波长的光可以通过三种不同某一种波长的光可以通过三种不同 波长的光混合而复现出来,且红波长的光混合而复现出来,且红(R)(R)、绿、绿(G)(G)、蓝蓝(B)(B)三种单色光可以作为基本的颜色原色,三种单色光可以作为基本的颜色原色,把这三种光按照不同的比例混合就能准确的复把这三种光按照不同的比例混合就能准确的复现其它任何波长的光,而它们等量混合就可以现其它任何波长的光,而它们等量混合就可以产生白光。产生白光。o三色学说是我们真实感图形学的生理视觉基
22、础,三色学说是我们真实感图形学的生理视觉基础, 我们根据三色学说用我们根据三色学说用RGBRGB来定义我们的颜色,三来定义我们的颜色,三色学说是我们颜色视觉中最基础、最根本的理色学说是我们颜色视觉中最基础、最根本的理论。论。漫反射及具体光源的照明漫反射及具体光源的照明1 1环境光环境光 在在多多数数实实际际环环境境中中,存存在在由由于于许许多多物物体体表表面面多多次次反反射射而而产产生生的的均均匀匀的的照照明明光光线线,这这就就是是环环境境光光线线。环环境境光光线的存在使物体得到漫射照明线的存在使物体得到漫射照明. . 亮度计算如下:亮度计算如下: I=I=I Ia a a a 其中其中I I
23、是可见表面的亮度,是可见表面的亮度,I Ia a是环境是环境光线的总亮度,光线的总亮度,a a是物体表面对环境是物体表面对环境光线的反射系数,它在光线的反射系数,它在0 0到到1 1之间之间. .2 2漫反射漫反射 具体光源在物体表面可以引起具体光源在物体表面可以引起漫反漫反射和镜面反射。射和镜面反射。漫反射是指来自具体光漫反射是指来自具体光源的能量到达表面上的某一点后,就均源的能量到达表面上的某一点后,就均匀地向各个方向散射出去,使得观察者匀地向各个方向散射出去,使得观察者从不同角度观察时,这一点呈现的亮度从不同角度观察时,这一点呈现的亮度是相同的。是相同的。 通常不光滑的通常不光滑的粗糙粗
24、糙表面总是呈现出表面总是呈现出漫反射的效果漫反射的效果 Lambert Lambert定律指出,漫反射的效果与定律指出,漫反射的效果与表面相对于光源的取向有关,即:表面相对于光源的取向有关,即: I Id d= =I Ip p d d COSCOS 其中其中I Id d是漫反射引起的可见表面上是漫反射引起的可见表面上一点的亮度。一点的亮度。I Ip p是点光源发出的入射光是点光源发出的入射光线引起的亮度。线引起的亮度。d d是漫反射系数,它是漫反射系数,它的取值在的取值在0 0到到1 1之间,随物体材料不同而之间,随物体材料不同而不同。不同。 是可见表面法向是可见表面法向N N和点光源方和点光
25、源方向向L L之间的夹角,即入射角,它应该在之间的夹角,即入射角,它应该在0 0到到9090之间。之间。 为为了了简简化化公公式式中中余余弦弦值值的的实实际际计计算算,可可以以假假定定向向量量N N和和L L都都已已经经正正规规化化,即即已已经经是是长长度度为为1 1的的单单位位向向量量,这这样样就就可可以以使用向量的数量积或内积。使用向量的数量积或内积。 因为这时因为这时 ,于是得:,于是得: I Id d= =I Ip p I Id d (L (L N) N) 将将环环境境光光线线和和漫漫反反射射的的效效果果结结合合起起来,计算亮度的公式应该写成:来,计算亮度的公式应该写成: I=I=I
26、Ia a a a + + I Ip p I Id d ( ) ( ) 通常认为具体光源对可见表面产通常认为具体光源对可见表面产生的照明作用,是随着光源与表面之生的照明作用,是随着光源与表面之间距离的增加而下降的。设间距离的增加而下降的。设R R是光线从是光线从光源发出到达表面再返回的距离,则光源发出到达表面再返回的距离,则 I=I=I Ia a a a + + I Ip p I Id d ( ) /R( ) /R2 2 表面表面 对于平行投影,光源在无穷远处,对于平行投影,光源在无穷远处,故距离故距离R R成为无穷大。对于透视投影,成为无穷大。对于透视投影,1/R1/R2 2也常常有很大的数值
27、范围而使效也常常有很大的数值范围而使效果不好。一种比较逼真的效果,可通果不好。一种比较逼真的效果,可通过用过用r+kr+k代替代替R R2 2来获得:来获得: I=I=I Ia a a a + + I Ip p I Id d ( ) ( ) /(/(r+kr+k) ) 其其中中r r是是光光源源到到表表面面的的距距离离,k k是是根根据经验选取的一个常数。据经验选取的一个常数。 基本概念基本概念o光照模型光照模型(Illumination Model): 又称明暗模型又称明暗模型,描述物体表面的色彩明暗与描述物体表面的色彩明暗与光源特性和物体表面特性的关系。主要用于物光源特性和物体表面特性的关
28、系。主要用于物体表面某点处的光强度计算体表面某点处的光强度计算.p光照模型的分类光照模型的分类l简单光照模型简单光照模型l复杂光照模型复杂光照模型光照模型的分类光照模型的分类l简单的光照模型简单的光照模型: :仅考虑光源照射在物体表面产生的仅考虑光源照射在物体表面产生的反射光反射光, ,并且常假设物体表面是光滑的并且常假设物体表面是光滑的, ,所以生成的所以生成的图形可以模拟出不透明物体表面的明暗过渡图形可以模拟出不透明物体表面的明暗过渡, ,具有一具有一定的真实感定的真实感. .l复杂的光照模型复杂的光照模型: :除了考虑反射光外除了考虑反射光外, ,还要考虑周围还要考虑周围环境的光对物体表
29、面影响、透明度、光源的位置和环境的光对物体表面影响、透明度、光源的位置和个数等个数等, ,这种光照模型被称为整体光照模型这种光照模型被称为整体光照模型, ,它能模它能模拟出镜面影像、透明等光照效果拟出镜面影像、透明等光照效果, ,可以绘制更接近自可以绘制更接近自然景物的图形然景物的图形. .简单的光照模型与复杂光照模型的比较简单的光照模型与复杂光照模型的比较 简单光照模型绘制效果 复杂光照模型绘制效果明暗处理方法明暗处理方法o在计算机图形学中,曲面体(例如球)也通常在计算机图形学中,曲面体(例如球)也通常是用多面体逼近表达的。这时,如果只是将每是用多面体逼近表达的。这时,如果只是将每个多边形用
30、单一的光强来绘制就会造成整个景个多边形用单一的光强来绘制就会造成整个景物表面的颜色过渡不光滑,影响了曲面的显示物表面的颜色过渡不光滑,影响了曲面的显示效果。效果。 因此,通常采用的方法是:采用插补的因此,通常采用的方法是:采用插补的方法,使得表面明暗光滑化。方法,使得表面明暗光滑化。o示例演示示例演示o最常使用的表面明暗光滑化的方法有两种最常使用的表面明暗光滑化的方法有两种nGourand方法方法 nPhong方法方法 明暗处理示例明暗处理示例o牛的三角网格模型牛的三角网格模型n 用简单光照明模型显示用简单光照明模型显示n明暗处理后模型显示明暗处理后模型显示线框图 恒定光强绘制图 Gouran
31、d方法光滑处理后图形Gourand方法光滑处理示例方法光滑处理示例Phong方法光滑处理示例方法光滑处理示例线框图 恒定光强绘制图 Phong方法光滑处理后图形 镜面反射与镜面反射与PhongPhong模型模型 镜镜面面反反射射是是指指来来自自具具体体光光源源的的光光能能到到达达可可见见表表面面上上的的某某一一点点后后,主主要要沿沿着着由由射射入入角角等等于于反反射射角角所所决决定定的的方方向向传传播播,从从而而使使得得观观察察者者从从不同角度观察时,这一点呈现的亮度并不相同。不同角度观察时,这一点呈现的亮度并不相同。 在在任任何何有有光光泽泽的的表表面面上上都都可可以以观观察察到到镜镜面面反
32、反射射的的效效果果。例例如如,用用很很亮亮的的光光照照射射一一个个红红色色的的苹苹果果,会会发发现现最最亮亮点点不不是是红红色色的的,而而是是有有些些呈呈现现白白色色,这这是是入入射射光光线线的的颜颜色色。这这个个最最亮亮点点就就是是有有镜镜面面反反射射引引起起的的。如如果果观观察察者者移移动动位位置置,会看到最亮点也随之移动。会看到最亮点也随之移动。镜镜面面反反射射 在镜面反射的示意图中,只有当观察者在镜面反射的示意图中,只有当观察者相对表面的方向相对表面的方向V V与反射光线的方向与反射光线的方向R R之间的之间的夹角夹角 为零时,才能看到镜面反射引起的为零时,才能看到镜面反射引起的反射光
33、线。对于不是非常理想的光泽表面,反射光线。对于不是非常理想的光泽表面,例如一个苹果,反射光线引起的亮度随着例如一个苹果,反射光线引起的亮度随着 的增大而迅速下降。的增大而迅速下降。 由由PhongPhong Bui-Bui-TuongTuong提提出出的的光光照照明明模模型型,用用 来来近近似似反反射射光光线线引引起起的的亮亮度度随随着着 增增大大而而下下降降的的速速率率。n n取取值值一一般般在在1 1到到20002000之之间间,决决定定于于反反射射表表面面的的有有关关性性质质。对对于于理理想想的的反反射射表表面面,n n就就是是无无穷穷大大。这这里里选选用用 ,是是以以经经验观察为基础的
34、。验观察为基础的。 对实际物质来说,被镜面反射的入对实际物质来说,被镜面反射的入射光的数量是与入射角射光的数量是与入射角 有关的。如果有关的。如果将镜面反射光的百分数记为将镜面反射光的百分数记为 ,那,那么就可以将计算表面亮度的公式修改而么就可以将计算表面亮度的公式修改而得到:得到: 这里可以假定反射光线的方向向这里可以假定反射光线的方向向量量R R和指向观察点的向量和指向观察点的向量V V都已经正规都已经正规化,即已经是长度为化,即已经是长度为1 1的单位向量,的单位向量,于是可以简单地利用向量内积计算余于是可以简单地利用向量内积计算余弦值:弦值: 。对。对 ,通常根,通常根据经验选取一个常
35、数据经验选取一个常数 来代替,这来代替,这样公式可写成下面更容易计算的形式:样公式可写成下面更容易计算的形式: 对于彩色表面,上述各公式也可以对于彩色表面,上述各公式也可以应用,只需分别应用于对各颜色分量的应用,只需分别应用于对各颜色分量的计算。例如,选择通常的红、绿、蓝颜计算。例如,选择通常的红、绿、蓝颜色系统,这时上述公式中有关亮度及反色系统,这时上述公式中有关亮度及反射系数等,就要看做是三元向量。通过射系数等,就要看做是三元向量。通过分别对各颜色分量进行计算,就可以完分别对各颜色分量进行计算,就可以完成对彩色表面的亮度计算。成对彩色表面的亮度计算。 光的衰减光的衰减 光光在在传传播播的的
36、过过程程中中,其其能能量量会会衰衰减减。光光的的传传播播过过程程分分为为两两个个阶阶段段:从从光光源源到到物物体体表表面面的的传传播播及及从从物物体体表表面面到到人人眼眼的的传传播播。光光的的第第一一个个传传播播阶阶段段的的衰衰减减使使物物体体表表面面的的入入射射光光强强度度变变弱弱,第第二二个个阶阶段段的的衰衰减减使使人人眼眼接接受受到到的的物体表面的物体表面的反射光反射光的强度变弱,的强度变弱, 光光在在光光源源到到物物体体表表面面的的过过程程中中的的衰衰减减。在在同同一一光光源源的的照照射射下下,距距光光源源近近的的物物体体看看起起来亮,而距光源较远的物体看起来暗。来亮,而距光源较远的物
37、体看起来暗。 衰衰减减比比例例为为光光的的传传输输距距离离平平方方的的倒倒数数,若若以以衰衰减函数减函数f(df(d) )来表示衰减的比例,则来表示衰减的比例,则 f(df(d)=1/d)=1/d2 2 其中,其中,d d为光的传播距离。为光的传播距离。 这这种种变变化化规规律律对对点点光光源源来来说说是是正正确确的的,但但真真实实的的世世界界中中物物体体并并不不是是以以点点光光源源照照射射的的。为为了了弥弥补补点点光光源源的的不不足足,产产生生真真实实感感更更强强的的图图形形,一一个个有有效的衰减函数的取法如下:效的衰减函数的取法如下: f(df(d)=min(1/(C)=min(1/(C0
38、 0+C+C1 1d+Cd+C2 2d d2 2),1),1)考虑考虑f(df(d) ),得到光照明计算式,得到光照明计算式 I=KI=Ka a I Ia a+f(d+f(d) ) I Ip p K Kd d(L(LN)+KN)+Ks s(R(RV V) 光在物体表面到人眼过程中的衰减光在物体表面到人眼过程中的衰减 为为模模拟拟光光在在这这段段传传播播过过程程中中的的衰衰减减,许许多多系系统统采采用用深深度度暗暗示示技技术术(Depth Depth CueingCueing)。深深度度暗暗示示技技术术最最初初用用于于线线框框图图形形的的显显示示,使使距视点远的比近的点暗一些。距视点远的比近的点
39、暗一些。 首首先先,在在投投影影坐坐标标系系(为为方方便便起起见见,记记为为xyz,xyz,)中中定定义义两两个个平平面面Z=Z=Z Zf f,Z,Z= =Z Zb b, ,分分别别为为前前参参考考面面与与后后参参考考面面,并并赋赋予予比比例例因因子子S Sf f和和S Sb b(S(Sf f,S,Sb b0,1)0,1)。给给定定物物体体上上一一点点的的深深度度值值Z Z0 0, ,该该点点对对应应的的比比例例因因子子S S0 0这这样来确定:样来确定: 当当Z Z0 0 Z Zf f时(时(Z Z0 0较较Z Zf f更近),取更近),取S S0 0= =S Sf f 当当Z Z0 0 Z
40、 Zf f)时时,I I=I=I,即即亮亮度度没没有有被衰减。被衰减。 当当物物体体位位于于后后裁裁剪剪面面之之后后(Z Z0 0Z Zb b)时时,I I= =I Idcdc=0,=0,即即亮亮度度被被衰衰减减为为0 0。而而当当Z Z0 0ZZb b,Z Zf f 时时,I I= = S S0 0I I,亮亮度度被被部部分分衰衰减减。由由此此可可以以产生真实效果较好的图形。产生真实效果较好的图形。GouraudGouraud方法方法 亮亮度度(或或颜颜色色)插插值值明明暗暗法法 通通常常被被称称为为GouraudGouraud着着色色方方法法。增增加加逼逼近近空空间间形形体体的的多多边边形
41、形表表面面的的数数目目,MachMach带带效效应应可可以以随随之减弱。之减弱。 亮亮度度(或或颜颜色色)插插值值明明暗暗法法处处理理过过程程有以下四个步骤:有以下四个步骤:(1) (1) 计算各多边形表面的法向量。计算各多边形表面的法向量。(2) (2) 计算各顶点的法向量。这里顶点的法向,计算各顶点的法向量。这里顶点的法向,指共享该顶点的所有多边形表面法向的平指共享该顶点的所有多边形表面法向的平均值。均值。 如果有一条边是作为边界准备显示出如果有一条边是作为边界准备显示出来的,可以对这条边的每个顶点,计算两个来的,可以对这条边的每个顶点,计算两个法向量,每个是一侧各边形表面法向量的平法向量
42、,每个是一侧各边形表面法向量的平均值。均值。(3)(3) 计计算算各各顶顶点点的的亮亮度度。因因为为各各顶顶点点的的法法向向量量已已经经求求得得,所所以以已已经经可可以以利利用用上节讨论的计算亮度的公式进行计算。上节讨论的计算亮度的公式进行计算。 (4)(4) 计计算算各各多多边边形形表表面面上上任任意意点点处处的的亮亮度度值值,实实行行对对多多边边形形表表面面的的明明暗暗处处理理。做做法法是是先先利利用用顶顶点点的的亮亮度度值值,在在边边上上做做线线性性插插值值,求求得得边边上上的的亮亮度度值值。再再用用之之在在扫扫描描线线上上做做线线性性插插值值,从从而而求求得多边形面内任意点处的亮度值。
43、得多边形面内任意点处的亮度值。 PhongPhong方法方法 法向量插值明暗法是越南人法向量插值明暗法是越南人Bui-Bui-TuongTuong PhongPhong提出来的,通常称为提出来的,通常称为PhongPhong氏形成明暗法。氏形成明暗法。 这个方法是对法向量进行插值,而不是对这个方法是对法向量进行插值,而不是对亮度进行插值。在求得各顶点法向后,求多边亮度进行插值。在求得各顶点法向后,求多边形边上各点及多边形面内任意点处法向所用的形边上各点及多边形面内任意点处法向所用的插值方法,与亮度插值明暗法中进行插值计算插值方法,与亮度插值明暗法中进行插值计算的方法相同。因此这个插值也可以很好
44、地应用的方法相同。因此这个插值也可以很好地应用前面提到的扫描线算法。前面提到的扫描线算法。 求得扫描线上每点的法向量后,在每点处求得扫描线上每点的法向量后,在每点处实际计算亮度,可以应用任何一种光照明模实际计算亮度,可以应用任何一种光照明模型。型。 如果应用镜面反射,比起亮度插值法会得如果应用镜面反射,比起亮度插值法会得到明显的改进,因为强光能更加真实地得到到明显的改进,因为强光能更加真实地得到反映。即使不应用镜面反射,法向插值的结反映。即使不应用镜面反射,法向插值的结果也比亮度插值的结果好。这是因为对每一果也比亮度插值的结果好。这是因为对每一点都使用法向量的近似值,使得可以减少点都使用法向量
45、的近似值,使得可以减少MachMach带效应引起的问题。但另一方面,对每带效应引起的问题。但另一方面,对每一点都要计算亮度,使得计算量大为增加。一点都要计算亮度,使得计算量大为增加。 绘制多边形的步骤:绘制多边形的步骤: (1 1)计算多边形的单位法矢量。计算多边形的单位法矢量。 (2 2)计算多边形顶点的单位法向量。计算多边形顶点的单位法向量。 (3 3)在在扫扫描描线线消消隐隐算算法法中中,对对多多边边形形顶顶点点的的法法向向量量进进行行双双线线性性插插值值,计计算算出出多多边边形形内内部部(扫扫描描线线上上位位于于多多边边形形内内部部)各点的法向量。各点的法向量。 双线性插值的方法如图所
46、示,双线性插值的方法如图所示,NANA由由N1N1,N2N2线性插值得到:线性插值得到: (4) (4) 利用光照明模型计算利用光照明模型计算P P点的颜色点的颜色 当扫描线当扫描线y y递增一个单位变为递增一个单位变为y+1y+1时,时,N NA A,N,NB B的增量分别为的增量分别为N NA A,N NB B,即,即 当当x x递递增增一一个个单单位位(P P点点沿沿扫扫描描右右移移一一个个单单位)时,位)时,N NP P增量为增量为N NP P即即 PhongPhong着着色色方方法法中中,多多边边形形上上每每一一点点需需要要计计算算一一次次光光照照明明模模型型,因因而而计计算算量量远
47、远大大于于GouraudGouraud着着色色方方法法。但但是是PhongPhong着着色色方方法法绘绘制制的的图图形形更更加加真真实实,特特别别体体现现在在如如下下两两个个场场合合(考考虑要绘制一个三角形)。虑要绘制一个三角形)。 如如果果镜镜面面反反射射指指数数n n较较大大,三三角角形形左左下下角角的的顶顶点点a a(R R与与V V的的夹夹角角)很很小小,而而另另两两个个顶顶点点的的a a很很大大,以以光光照照明明模模型型计计算算的的结结果果是是左左下下角角顶顶点点的的亮亮度度非非常常大大(高高光光点点),另另两两个个顶顶点点的的亮亮度度小小。若若采采用用GouraudGouraud方
48、方法法绘绘制制,由由于于它它是是对对顶顶点点的的亮亮度度进进行行插插值值,导导致致高高光光区区域域不不正正常常地扩散成很大一块区域。地扩散成很大一块区域。 而而根根据据n n的的意意义义,当当n n较较大大时时,高高光光区区域域实实际际应应该该较较集集中中。采采用用PhongPhong方法绘制的结果更符合实际情况。方法绘制的结果更符合实际情况。 当实际的高光区域位于三角形中当实际的高光区域位于三角形中间时,采用间时,采用PhongPhong方法能产生正确的方法能产生正确的结果,而若采用结果,而若采用GouraudGouraud方法,由于方法,由于按照光照明模型计算出来的三个顶点按照光照明模型计
49、算出来的三个顶点处的亮度都较小,线性插值的结果是处的亮度都较小,线性插值的结果是三角形中间不会产生高光区域。三角形中间不会产生高光区域。 透明处理透明处理o现实世界中有许多透明物体,如玻璃,透过现实世界中有许多透明物体,如玻璃,透过透明物体,可以观察到其后面的景物。如何透明物体,可以观察到其后面的景物。如何模拟这种透明效果呢?模拟这种透明效果呢?o模拟透明的最简单的方法是忽略光线在穿过模拟透明的最简单的方法是忽略光线在穿过透明体时所发生的折射。虽然这种模拟方法透明体时所发生的折射。虽然这种模拟方法产生的结果不真实,但在许多场合往往非常产生的结果不真实,但在许多场合往往非常有用。例如:我们有时希
50、望能够看到透过某有用。例如:我们有时希望能够看到透过某透明物体观察其后面的景物,而又不希望景透明物体观察其后面的景物,而又不希望景物应为折射而发生变形。物应为折射而发生变形。产生阴影产生阴影o阴影是现实生活中一个很常见的光照现象,它阴影是现实生活中一个很常见的光照现象,它是由于光源被物体遮挡而在该物体后面产生的是由于光源被物体遮挡而在该物体后面产生的较暗的区域。在真实感图形学中,通过阴影可较暗的区域。在真实感图形学中,通过阴影可以反映出物体之间的相互关系,增加图形的立以反映出物体之间的相互关系,增加图形的立体效果和真实感。体效果和真实感。o从原理上讲,计算阴影的本影部分是十分清楚从原理上讲,计
51、算阴影的本影部分是十分清楚简洁的:从阴影的产生原因上看,有阴影区域简洁的:从阴影的产生原因上看,有阴影区域的物体表面都无法看见光源,我们只要把光源的物体表面都无法看见光源,我们只要把光源作为观察点,那么我们在前面介绍的任何一种作为观察点,那么我们在前面介绍的任何一种隐藏面消除算法可以用来生成阴影区域。隐藏面消除算法可以用来生成阴影区域。 对于对于隐藏面隐藏面消除算法,是从消除算法,是从观察点观察点看,看,确定哪些表面是可见的。而对于确定哪些表面是可见的。而对于阴影阴影发现发现算法,是从算法,是从点光源点光源“看看”,确定哪些表面,确定哪些表面是可见的。是可见的。从观察点和从点光源都能看见从观察
52、点和从点光源都能看见的表面,就是可见的表面。从观察点可见,的表面,就是可见的表面。从观察点可见,而从点光源不可见的表面,就在阴影之中。而从点光源不可见的表面,就在阴影之中。 应当注意,这种简便方法不能构造出应当注意,这种简便方法不能构造出来自分布光源的阴影。如果要把分布光源来自分布光源的阴影。如果要把分布光源造成的阴影也考虑进去,则必须计算阴影造成的阴影也考虑进去,则必须计算阴影的的本影和半影本影和半影。 当要表现一个客体时,可以分别对观当要表现一个客体时,可以分别对观察点及各点光源实施同样的消除隐藏面的察点及各点光源实施同样的消除隐藏面的算法,分别对观察点及各点光源确定出相算法,分别对观察点
53、及各点光源确定出相应的可见部分和不可见部分,然后把所得应的可见部分和不可见部分,然后把所得结果进行整理,通过正确形成明暗而表现结果进行整理,通过正确形成明暗而表现出来。出来。 当要对同一物体从许多不同观察点进当要对同一物体从许多不同观察点进行观察时,对所看到的一系列情形,可以行观察时,对所看到的一系列情形,可以只做一次发现阴影的计算,因为当点光源只做一次发现阴影的计算,因为当点光源相对物体是固定时。阴影实际上和观察点相对物体是固定时。阴影实际上和观察点的位置无关。的位置无关。 计算阴影还有许多其他的方法。对由多边计算阴影还有许多其他的方法。对由多边形表面组成的客体形表面组成的客体, , 是对从
54、光源来说是完全可是对从光源来说是完全可见或者部分可见的多边形见或者部分可见的多边形, ,都附加上另一个与都附加上另一个与之共面的多边形之共面的多边形, ,称为称为细碎多边形。细碎多边形。 计算细碎多边形的方法计算细碎多边形的方法, ,是用遮挡光线多是用遮挡光线多边形的投影边形的投影, ,相对多边形表面相对多边形表面, ,用对多边形进行用对多边形进行剪裁的算法进行剪裁。剪裁的算法进行剪裁。 下图示意说明了这种情况下图示意说明了这种情况. .图中在立方体图中在立方体和光源之间有一个不透明的三角形面和光源之间有一个不透明的三角形面, ,立方体立方体有两个面产生了阴影有两个面产生了阴影, ,在那两个面
55、上附加上了在那两个面上附加上了细碎多边形。细碎多边形。 从观察点看是可见的从观察点看是可见的, ,并且被细并且被细碎多边形覆盖的部分碎多边形覆盖的部分, ,要进行全部的要进行全部的明暗处理明暗处理, ,即要同时计算漫射照明及即要同时计算漫射照明及具体光源照明等结合起来的效果具体光源照明等结合起来的效果. .从从观察点看是可见的观察点看是可见的, ,但没有被细碎多但没有被细碎多边形覆盖的部分边形覆盖的部分. .实际上是在阴影之实际上是在阴影之中中, ,应该只计算漫射照明引起的效果。应该只计算漫射照明引起的效果。 模拟景物表面细节模拟景物表面细节o用前面介绍的方法生成的物体图象,往往由于其表面过用
56、前面介绍的方法生成的物体图象,往往由于其表面过于光滑和单调,看起来反而不真实,这是因为在现实世于光滑和单调,看起来反而不真实,这是因为在现实世界中的物体,其表面通常有它的表面细节,即各种纹理,界中的物体,其表面通常有它的表面细节,即各种纹理,如刨光的木材表面上有木纹,建筑物墙壁上有装饰图案,如刨光的木材表面上有木纹,建筑物墙壁上有装饰图案,机器外壳表面有文字说明它的名称、型号等。它们是通机器外壳表面有文字说明它的名称、型号等。它们是通过颜色色彩或明暗度变化体现出来的表面细节,这种纹过颜色色彩或明暗度变化体现出来的表面细节,这种纹理称为理称为颜色纹理颜色纹理。o另一类纹理则是由于不规则的细小凹凸
57、造成的,例如桔另一类纹理则是由于不规则的细小凹凸造成的,例如桔子皮表面的皱纹子皮表面的皱纹, ,通常称为通常称为几何纹理几何纹理. . 纹理映射纹理映射 纹理映射就是把我们得到的纹理映射到三维物纹理映射就是把我们得到的纹理映射到三维物体的表面的技术。体的表面的技术。l示例示例 图片图片l演示实例演示实例l带光照的演示带光照的演示l不带光照的演示不带光照的演示上图是纹理映射场景的一个部分,其中墙的砖块纹理和地板的木条纹理都是二维图象。 照片 经纹理映射,光照处理后计算机生成图形 纹理纹理(texture) (texture) 物体的表面细节物体的表面细节 光光滑滑表表面面上上额额外外地地增增加加
58、图图案案, ,当当图图案案加加上上后后, ,表表面面仍仍然然保保持持光光滑滑, ,这这一一过过程程基本上可用一个基本上可用一个映射函数映射函数描述描述; ; 表表面面呈呈现现出出凸凸凹凹不不平平的的形形状状, ,这这一一过过程可用一个程可用一个扰动函数扰动函数来描述来描述. . 光滑表面上描绘花纹是花纹图案在客光滑表面上描绘花纹是花纹图案在客体表面上的映射,即可以表示为由一个坐体表面上的映射,即可以表示为由一个坐标系至另一个坐标系的变换。标系至另一个坐标系的变换。 在在纹纹理理空空间间的的正正交交坐坐标标系系( (u,wu,w) )中中定定义义一一个个纹纹理理图图案案,而而在在另另一一个个正正
59、交交坐坐标标系系( (s,ts,t) )中中定定义义了了一一个个表表面面,那那么么,通通过过一一个个函函数数变变换换,即即一一个个映映射射函函数数来来把把花花纹纹绘绘制制到表面上去。到表面上去。 s=s=(u(u ,w) t= ,w) t=g(ug(u ,w) ,w)或或 u=u=h(sh(s ,t) ,t) w=w=k(s,tk(s,t) ) 最最简简单单的的映映射射,可可以以是是一一个个线线性函数。如性函数。如 s=s=Au+BAu+B,t=t=Cw+DCw+D 纹纹理理的的定定义义可可能能不不是是由由数数学学函函数数给给出出的的,这这样样的的纹纹理理包包括括一一般般绘绘制制的的图图案案及
60、及照照片片等等其其它它形形式式的的图图案案。这这多多用用一一个个二二维维数数组组定定义义,数数组组代代表表一一个个用用于于光光栅栅图图形形显示的位图。显示的位图。 显显示示纹纹理理图图案案涉涉及及从从物物体体空空间间到到图图象象空空间间,以以及及从从纹纹理理空空间间到到物物体体空空间间的的变换,此外还要进行适当的视图变换。变换,此外还要进行适当的视图变换。 我我们们可可以以用用Catmull的的分分割割算算法法来来实实现现纹纹理理的的显显示示,在在这这个个算算法法中中,曲曲面面片片不不断断地地被被分分割割,直直至至每每一一个个子子曲曲面面片片仅仅包包含含一一个个象象素素中中心心为为止止,然然后
61、后,将将子子曲曲面面片片中中心心的的参参数数值值映映射射到到纹纹理理空空间间中中,根根据据纹纹理理空空间间中中相相交交点点处处的的花花纹纹图图象象值值决定该像素处的光强。决定该像素处的光强。实时真实感图形学技术实时真实感图形学技术 o在前面,我们已经介绍了光照明模型及它们在在前面,我们已经介绍了光照明模型及它们在真实感图形学中的一些应用方法,它们都是用真实感图形学中的一些应用方法,它们都是用数学模型来表示真实世界中的物理模型,可以数学模型来表示真实世界中的物理模型,可以很好的模拟出现实世界中的复杂场景,所生成很好的模拟出现实世界中的复杂场景,所生成的真实感图象可以给人以高度逼真的感觉。但的真实
62、感图象可以给人以高度逼真的感觉。但是,我们发现,用这些模型生成一幅真实感图是,我们发现,用这些模型生成一幅真实感图象都需要较长的时间,尤其对于比较复杂的场象都需要较长的时间,尤其对于比较复杂的场景,绘制的时间甚至可以达到数个小时。尽管景,绘制的时间甚至可以达到数个小时。尽管现在的计算机硬件水平有了很大的提高,而且现在的计算机硬件水平有了很大的提高,而且对于这些真实感图形学算法的研究也有了很大对于这些真实感图形学算法的研究也有了很大的发展,但是,真实感图形的绘制速度仍然不的发展,但是,真实感图形的绘制速度仍然不能满足某些需要实时图形显示的任务要求。例能满足某些需要实时图形显示的任务要求。例如在某
63、些需要动态模拟、实时交互的科学计算如在某些需要动态模拟、实时交互的科学计算可视化以及虚拟现实系统中,它们对于生成真可视化以及虚拟现实系统中,它们对于生成真实感图形学的实时性要求很高,就必须采用实实感图形学的实时性要求很高,就必须采用实时真实感图形学技术。时真实感图形学技术。 实时真实感图形学技术实时真实感图形学技术o实时真实感图形学技术是在当前图形算法和硬件条件的实时真实感图形学技术是在当前图形算法和硬件条件的限制下提出的在一定的时间内完成真实感图形图象绘制限制下提出的在一定的时间内完成真实感图形图象绘制的技术。的技术。o一般来说,它是通过损失一定的图形质量来达到实时绘一般来说,它是通过损失一
64、定的图形质量来达到实时绘制真实感图象的目的,就目前的技术而言,主要是通过制真实感图象的目的,就目前的技术而言,主要是通过降低显示三维场景模型的复杂度来实现,这种技术被称降低显示三维场景模型的复杂度来实现,这种技术被称为层次细节为层次细节(LOD(LOD:Level of Detail)Level of Detail)显示和简化技术,显示和简化技术,是当前大多数商业实时真实感图形生成系统中所采用的是当前大多数商业实时真实感图形生成系统中所采用的技术。技术。o在最近的几年中,又出现了一种全新思想的真实感图象在最近的几年中,又出现了一种全新思想的真实感图象生成技术基于图象的绘制技术生成技术基于图象的绘制技术(Image Based (Image Based Rendering)Rendering),它利用已有的图象来生成不同视点下的场,它利用已有的图象来生成不同视点下的场景真实感图象,生成图象的速度和质量都是以前的技术景真实感图象,生成图象的速度和质量都是以前的技术所不能比拟的,具有很高的应用前景。所不能比拟的,具有很高的应用前景。 实时真实感图形学技术实时真实感图形学技术o由于实时真实感图形学技术是当前计算机图形学邻域中的研究热点,它还处在研究阶段,还没有形成非常系统的理论知识,我们 只对实时真实感图形学技术略提一下,有兴趣的读者可以参阅相关文献。