真实感图形显.ppt
《真实感图形显.ppt》由会员分享,可在线阅读,更多相关《真实感图形显.ppt(86页珍藏版)》请在三一办公上搜索。
1、第五章 真实感图形显示,5.1 线 消 隐,5.2 面 消 隐,5.5 表面图案与纹理,5.4 光 线 跟 踪,5.3 光 照 模 型,5.6 颜 色 空 间,一.为什么要消隐 因为计算机图形处理的过程中,不会自动消去隐藏部分,相反会将所有的线和面都显示出来。所以:如果想有真实感地显示三维物体,必须在视点确定之后,将对象表面上不可见的点、线、面消去。执行这种功能的算法,称为消隐算法。例如:,基本概念,5.1.1 消隐的分类 线消隐(Hidden-line)对象:线框模型面消隐(Hidden-surface)对象:填色图,5.1 线 消 隐,线框模型,填色图,线消隐 是以场景中的物体为处理单元,
2、将一个物体与其余的 k1 个物体逐一比较,仅显示它可见的表面以达到消隐的目的。此类算法通常用于消除隐藏线。假定场景中有 k 个物体,平均每个物体的表面由 h 个多边形构成,其计算复杂度为 O(kh)2)。,5.1 线 消 隐,算法描述如下:for(场景中的每一个物体)将该物体与场景中的其它物体进行比较,确定其表面的可见部分;显示该物体表面的可见部分;(示例如右图),线消隐示例,5.1 线 消 隐,面消隐是以窗口内的每个像素为处理单元,确定在每一个像素处,场景中的物体哪一个距离观察点最近(可见的),从而用它的颜色来显示该像素。此类算法通常用于消除隐藏面。若显示区域中有 mn 个像素,则其计算复杂
3、度为O(mnkh)。,5.1 线 消 隐,算法描述如下:for(窗口内的每一个像素)确定距观察点最近的物体,以该物体表面的颜色来显示像素;,面削隐示例,5.1 线 消 隐,7.1.2 凸多面体的隐藏线消隐 凸多面体是由若干个平面围成的物体。假设这些平面方程为 aix+biy+ciz+di=0,i=1,2,n(8.1)变换方程的系数,使(ai,bi,ci)指向物体外部的。那么:假设式(8.1)所定义的凸多面体在以视点为顶点的视图四棱锥内,视点与第i个面上一点连线的方向为(li,mi,ni)。那么自隐藏面的判断方法是:(ai,bi,ci)(li,mi,ni)0 任意两个自隐藏面的交线,为自隐藏线。
4、(自隐藏线应该用虚线输出)。,7.1 线 消 隐,7.1.3 凹多面体的隐藏线消隐凹多面体的隐藏线消除比较复杂。假设凹多面体用它的表面多边形的集合表示,消除隐藏线的问题可归结为:对于一条空间线段P1P2和一个多边形,判断线段是否被多边形遮挡。如果被遮挡,求出隐藏部分,7.1 线 消 隐,线段和多边形的关系有:线段与多边形的任何边均不相交。处理方法比较简单。线段与多边形相交。那么多边形的边把线段投影的参数区间0,1分割成若干子区间,每个子区间对应一条子线段(如下图所示),进一步判断各子线段的隐藏性。,线段投影被分为若干子线段,7.1 线 消 隐,可见子线段的确定,把各个子线段与所有需要比较的多边
5、形依次进行隐藏性判别,记下各条隐藏子线段的位置。最后,对这些区间进行求并集运算,即可确定总的隐藏子线段的位置,余下的则是可见子线段(右图),7.1 线 消 隐,基本思想:在图象空间中,将待显示的所有多边形按深度值从小到大排序,用前面可见多边形去切割后面的多边形,最终使得每个多边形要么是完全可见,要么是完全不可见。用区域排序算法消隐,需要用到一个多边形裁剪算法。,7.2 面 消 隐,7.2.1 区域排序算法(1),当对两个形体相应表面的多边形进行裁剪时,我们称用来裁剪的多边形为裁剪多边形,另一个多边形为被裁剪多边形。算法要求多边形的边都是有向的,不妨设多边形的外环总是顺时针方向的,并且沿着边的走
6、向,左侧始终是多边形的外部,右侧是多边形的内部。若两多边形相交,新的多边形可以用“遇到交点后向右拐”的规则来生成。于是被裁剪多边形被分为两个乃至多个多边形;我们把其中落在裁剪多边形外的多边形叫作外部多边形;把落在裁剪多边形之内的多边形叫作内部多边形。,区域排序算法(2),7.2 面 消 隐,7.2 面 消 隐,算法的步骤:进行初步深度排序,如可按各多边形z向坐标最小值(或最大值、平均值)排序。选择当前深度最小(离视点最近)的多边形为裁剪多边形。用裁剪多边形对那些深度值更大的多边形进行裁剪。比较裁剪多边形与各个内部多边形的深度,检查裁剪多边形是否是离视点最近的多边形。如果裁剪多边形深度大于某个内
7、部多边形的深度,则恢复被裁剪的各个多边形的原形,选择新的裁剪多边形,回到步骤再做,否则做步骤。选择下一个深度最小的多边形作为裁剪多边形,从步骤开始做,直到所有多边形都处理过为止。在得到的多边形中,所有内部多边形是不可见的,其余多边形均为可见多边形。,7.2 面 消 隐,8.2.2 深度缓存(Z-buffer)算法由来:帧缓冲器 保存各像素颜色值(CB)z缓冲器-保存各像素处物体深度值(ZB)z缓冲器中的单元与帧缓冲器中的单元一一对应思路:先将z缓冲器中个单元的初始值置为-1(规范视见体的最小n值)。当要改变某个像素的颜色值时,首先检查当前多边形的深度值是否大于该像素原来的深度值(保存在该像素所
8、对应的Z缓冲器的单元中),如果大于,说明当前多边形更靠近观察点,用它的颜色替换像素原来的颜色;否则说明在当前像素处,当前多边形被前面所绘制的多边形遮挡了,是不可见的,像素的颜色值不改变。,7.2 面 消 隐,x,y,z,视线方向,视点位置,屏幕像素,F Buffer,ZBuffer,投影面,深度缓存算法(ZBuffer算法)ZBuffer-用于存放与屏幕上像素点对应的物体上点的深度值。,7.2 面 消 隐,Z-buffer算法的步骤如下:初始化ZB和CB,使得ZB(i,j)=Zmax,CB(i,j)=背景色。其中,i=1,2,m,j=1,2,n。对多边形,计算它在点(i,j)处的深度值zi,j
9、。若zijZB(i,j),则ZB(i,j)=zij,CB(i,j)=多边形的颜色。对每个多边形重复、两步。最后,在CB中存放的就是消隐后的图形。,这个算法的关键在第步,要尽快判断出哪些点落在一个多边形内,并尽快求出一个点的深度值。(下页)缺点:(1):ZB和CB两个缓存数组占用的存储单元太多,需要有一个较大容量的 ZBuffer。(2):在每个多边形占据的每个像素处都要计算深度值,计算量大,7.2 面 消 隐,5.2 面 消 隐,Z-Buffer算法实现中的关键问题 判断点(i,j)是否在多边形Fk在投影面上的投影内 解决办法:采用包含测试。计算多边形Fk在点(i,j)处的深度值 Zi,j 若
10、多边形Fk的平面方程为:ax+by+cz+d=0 若 c 0,则 axi+byi+d c 若 c=0,则多边形Fk的法线方向与 Z 轴垂直,Fk在投影面上的投影为一条直线,可不予考虑。,Zi,j=,5.2 面 消 隐,5.2.4 扫描线算法 在多边形填充算法中,活性边表的使用取得了节省运行空间的效果。用同样的思想改造Z-buffer算法:将整个绘图区域分割成若干个小区域,然后一个区域一个区域地显示,这样Z缓冲器的单元数只要等于一个区域内像素的个数就可以了。如果将小区域取成屏幕上的扫描线,就得到扫描线Z缓冲器算法。,for(各条扫描线)将帧缓冲器I(x)置为背景色;将Z缓冲器的Z(x)置为最大值
11、;for(每个多边形)求出多边形在投影平面上的投影与当前扫描线的相交区间 for(该区间内的每个像素)if(多边形在此处的Z值小于Z(x))置帧缓冲器I(x)值为当前多边形颜色;置Z缓冲器Z(x)值为多边形在此处的Z值;,扫描线算法描述,5.3 光 照 模 型,5.3.1 光源特性和物体表面特性 Shading:显示一个物体的色彩以及色彩在光照环境下的明暗变化 的描绘方法。(相关因素:光源特性和物体表面特性。),一:光源特性 包括 1:光的色彩(R、G、B)2:光的强度 由R,G,B三种色光的强弱决定,总的光强为:Total_Value=0.30*Value_R+0.59*Value_G+0.
12、11*Value_B 点光源 3:光的方向 分布式光源 漫射光源,5.3 光 照 模 型,三种光源,右边是三种光源的示意图。其中点光源和分布式光源合称直射光源;,物体表面特性包括如下内容:,反射系数由物体表面的材料和形状决定,分为漫反射(Diffuse Reflection)系数和镜面反射(Specular Reflection)系数。透射系数 记为Tp,描述物体透射光线的能力,且有0Tp1。表面方向,5.3 光 照 模 型,5.3.2 光照模型及其实现,5.3 光 照 模 型,光照模型(Illumination Model)描述物体表面的色彩明暗同光源特性、物体表面特性之间的关系。光照模型分
13、3个部分描述这种关系,即漫射光线的情况、直线光线的情况和透射光线的情况。,5.3 光 照 模 型,漫射光线的情况 漫射光源是从四面八方均匀照来的,物体表面的色彩明暗与表面的形状无关,仅与表面的反射系数有关。漫射光源照明的模型为 EPd=RPId 上式可以写为EPd-r=RP-rId-r,EPd-g=RP-gId-g,EPd-b=RP-bId-b,直射光线的情况 在这种情况下,物体表面的明暗随表面法矢量和入射光线Is的夹角I的改变而变化。此时,物体表面会发生两类反射,即漫反射和镜面反射。,5.3 光 照 模 型,在直射照明下,物体表面P点的漫反射和镜面反射的模型根据Lambert定律和Bui-T
14、uong Phong的实验提出(图8.5)。EPs=RPcos iIPs+WP(i)cosn sIPs,5.3 光 照 模 型,光照模型中各参数的图示,Eps:P点反射的直射光线IPs的光强RP:P点的漫反射系数,I:P点的法矢量N与入射光方向L的夹角Ips:入射的直射光线的强度WP(i):P点的镜面反射系数(入射角i的函数),5.3 光 照 模 型,W(i)与i的关系,WP(i)是P点的镜面反射系数(入射角i的函数)。由于W(i)的计算比较复杂,实际中常用一个常数W代替。,n控制高光的聚散,它和P点的材料有关。对于光滑发亮的金属表面,n值取得大,从而产生会聚的高光点,n与高光区域大小的关系,
15、5.3 光 照 模 型,透射光线的情况 透射模型如下:EPt=TPIPb 其中:Ept:物体表面P点处透射出的光强TP:P点的透射系数(取值范围为01)Ipb:到达P点背后的光强。,将上述3种情况综合起来,便获得物体表面P点处所发光强EP的计算公式:EP=EPd+EPs+EPt=RPId+(RPcos i+WPcosn s)IPs+TPIpb 上式中只有cos i和cos s的值是未知的,需要推算。,5.3 光 照 模 型,5.3.3 明暗的光滑处理 在计算机图形学中,曲面体(例如球)通常是用多面体逼近表达的。这时,分别计算各个面的亮度,就会在多边形与多边形的交界处产生明暗的连续变化,影响曲面
16、的显示效果。解决方法:采用插补的方法,使得表面明暗光滑化。最常使用的表面明暗光滑化的方法有两种,称为Gourand方法和Phong方法。,Gourand光滑方法如下:基本思想:在每个多边形顶点处计算颜色,然后在各个多边形内部进行线性插值,得到多边形内部各点颜色。即它是一种颜色插值着色方法。基本步骤:先计算出多面体顶点的法线方向 用光照模型求得V点的亮度。由两顶点的亮度,插值得出棱上各点的亮度。由棱上各点的亮度,插值得出面上各点的亮度。(下面详细介绍每步),5.3 光 照 模 型,5.3 光 照 模 型,Step1:计算多面体顶点的法线方向,设与多面体顶点V相邻的多边形为P1,P2,Pn,它们的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 真实感 图形

链接地址:https://www.31ppt.com/p-4933941.html