《第8章 可见面判断算法.ppt》由会员分享,可在线阅读,更多相关《第8章 可见面判断算法.ppt(63页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、(一)(一)计算机工程学院计算机工程学院三维图形消除隐藏线的处理三维图形消除隐藏线的处理在前面章节中介绍了三维图形变换,从而可画出物体的轴测图,但是这种方法是将物体上的所有棱线全部画出,不能考虑物体上哪些棱线是可见的,哪些是不可见的,这就造成了表达物体的不确切性。如图a所示,作投影变换是表示的物体b呢还是物体c?2 2abc上图所示物体还仅仅是一个单个物体,但物体往往由多个形体或在一个形体上存有不同结构组成,情况会更复杂。因此,要画出确定的立体感更强的轴测图时,利用计算机自动地判别棱线或立体表面的可见性,将那些不可见的棱线消去不画或画成虚线,这项工作称为消除隐藏线(或隐藏面),简称消隐。由于图
2、形的表现形式不同,消隐对象也不同,对于线框图是要消除隐藏线,对于用不同灰度的表面构成的图形,是要消除隐藏面。无3 3论是消除隐藏线还是消除隐藏面,需要程序准确,可靠地判别出棱线的可见性,这不是件容易的事情,因此消隐是计算机绘图中的难点之一。本例以凸多面体为例,介绍消除隐藏线的原理,计算方法,还介绍任意平面立体的消隐方法。4 4消除隐藏线的原理一、基本概念凸多面体是由若干个平面围成的立体,而每个平面又都是由凸多边形组成。所以,若某个多边形表面是可见的,则该表面上的所有的线均可见。若某个多边形表面为不可见,则该表面上所有的线均不可见。如果画出可见面上所有的线,消去不可见面上所有的线,那么就画出了凸
3、多面体消隐后的立体图。5 5二、平面的可见性由于组成凸多面体的各个表面是由凸多边形围成的,因此我们先来讨论多边形平面的投影性质,每个平面均有其法线,如图中R平面,有法线N,当法线N确定后平面R就为有向平面,引出法线方向的面称为平面的正面,与法线相反的面,称为平面的背面,平面向某一投影面投影后,平面的可见性有以下几种情况:1)平面的正面朝着观察 者,投影后平面为可见6 6N法线R正面背面2)平面的背面朝着观察者,投影后平面为不可见。3)平面垂直于投影面时,投影后平面积聚为一条线,平面视为可见。7 7三、立体表面的可见性组成凸多面体的各个表面均有其法线,我们可用它的外法线来描述。所谓外法线,其方向
4、是由物体的内部指向物体的外部。8 8N1N2N3N4N5N6立体经过投影后,通常是在V面(XOY平面)输出正投影图,此时V面是投影面,则视线的反向与OY轴平行,所以外法线与OY轴的夹角 反应了外法线与视线的夹角,根据这一夹角的大小,就可以判别出该法线所在的平面的可见性。有以下几种情况:1)当90时,则平面的正面朝向观察者,该平面为可见。2)当90时,则平面的背面朝向观察者,该平面为不可见。9 93)当=90时,则平面的正面垂直于投影面,投影积聚成一条线,该平面为可见。4)当=0时,则平面的正面平行于投影面,该平面为可见。1010消隐的计算方法一、平面的矢量由空间解析几何可知,如有矢量a和矢量b
5、,则它们烦人矢量积a b,必垂直于矢量a和b所决定的平面。因此矢量积a b就是矢量a和b所在平面的法矢量。法矢量的方向按右手坐标系定义。1111abab对于物体的任一表面,为保证正确地得到它的外法线,我们规定,当观察者面对平面的外表面时,在该平面上以逆时针方向顺序取三个点。各点的坐标为D(x1,y1,z1),E(x2,y2,z2),F(x3,y3,z3)根据矢量积定义平面的法矢量为N=U V矢量N的方向就是平面P的外法线方向。1212DEF13131414 真实感图形绘制流程场景造型取景变换背面剔除视域四棱锥裁剪透视变换隐面消除、场景造型光亮度计算扫描转换、场景造型1515取景变换(1/5)场
6、景坐标系场景坐标系n n场景的场景的局部局部局部局部坐标系坐标系完成物体的造型完成物体的造型 n n场景的场景的世界世界世界世界坐标系(整体坐标系)坐标系(整体坐标系)放入待绘制的场景,定义物体之间的相互位置放入待绘制的场景,定义物体之间的相互位置观察坐标系观察坐标系n n也称也称摄像机坐标系摄像机坐标系摄像机坐标系摄像机坐标系,或者,或者视点坐标系视点坐标系视点坐标系视点坐标系n n完成取景变换所需建立的第一个坐标系完成取景变换所需建立的第一个坐标系1616取景变换(2/5)建立观察坐标系的步骤n n确定确定观察参考点观察参考点观察参考点观察参考点,即,即视点位置视点位置视点位置视点位置可以
7、设在任何位置可以设在任何位置通常选在靠近或在物体的表面通常选在靠近或在物体的表面将视点位置取为视点坐标系的原点将视点位置取为视点坐标系的原点n n确定确定观察方向观察方向观察方向观察方向,即,即视线方向视线方向视线方向视线方向一般取深度坐标轴,即一般取深度坐标轴,即z ze e轴的正向轴的正向为简便起见,设为总是指向场景坐标系的原点为简便起见,设为总是指向场景坐标系的原点n n确定确定观察平面观察平面观察平面观察平面,即,即视平面位置视平面位置视平面位置视平面位置一般取过视点且垂直于视线方向的平面,即一般取过视点且垂直于视线方向的平面,即x xe ey ye e平面平面1717取景变换(3/5
8、)场景坐标系场景坐标系场景坐标系场景坐标系n n一般取一般取右手右手右手右手坐标系坐标系观察坐标系观察坐标系观察坐标系观察坐标系n n通常取通常取左手左手左手左手坐标系坐标系符合人们的观察习惯符合人们的观察习惯 xwzwywzexeye视点E观察坐标系为左手坐标系场景坐标系为右手坐标系O1818取景变换(4/5)将物体投影到观察平面之前将物体投影到观察平面之前n n必须将场景坐标系中的点转换到观察坐标系中必须将场景坐标系中的点转换到观察坐标系中 这一过程称为这一过程称为取景变换取景变换取景变换取景变换,也称,也称视向变换视向变换视向变换视向变换n n包括平移和旋转的一系列几何变换的级联包括平移
9、和旋转的一系列几何变换的级联 取景变换矩阵取景变换矩阵 1919取景变换(5/5)场景坐标系原点平移场景坐标系原点平移场景坐标系原点平移场景坐标系原点平移到视点位置到视点位置到视点位置到视点位置E E绕绕绕绕x xe e轴逆时针旋转轴逆时针旋转轴逆时针旋转轴逆时针旋转90 90 绕绕绕绕y ye e轴顺时针旋转轴顺时针旋转轴顺时针旋转轴顺时针旋转角角角角绕绕绕绕x xe e轴逆时针旋转轴逆时针旋转轴逆时针旋转轴逆时针旋转角角角角调整调整调整调整x x轴指向轴指向轴指向轴指向n n对对对对x x轴作对称变换轴作对称变换轴作对称变换轴作对称变换xwzwywzexeyeEOCxCyCzxwzwywz
10、exe yeEOCxCyCz90 xwzwywzexeyeEOCxCyCzxwzwywzexeyeEOCxCyCz2020消隐算法按实现方式不同分为两大类按实现方式不同分为两大类按实现方式不同分为两大类按实现方式不同分为两大类:n n景物空间景物空间景物空间景物空间(object spaceobject space)消隐算法消隐算法直接在视点坐标系中确定视点不可见的表面区域直接在视点坐标系中确定视点不可见的表面区域将它们表达成同原表面一致的数据结构将它们表达成同原表面一致的数据结构侧重于景中各物体之间的几何关系侧重于景中各物体之间的几何关系n n图像空间图像空间图像空间图像空间(image s
11、paceimage space)消隐算法)消隐算法 在投影屏幕上,以屏幕像素为采样单位,确定投影于在投影屏幕上,以屏幕像素为采样单位,确定投影于每一像素的可见景物表面区域每一像素的可见景物表面区域将其颜色作为该像素的显示光亮度将其颜色作为该像素的显示光亮度 侧重于向屏幕投影后形成的图像侧重于向屏幕投影后形成的图像2121背面剔除算法背面剔除算法背面剔除算法背面剔除算法背面剔除算法背面剔除算法 法向向量N 视线向量V法向向量N 法向向量N 90 902222隐藏面的消除-Roberts算法算法(1/9)Roberts算法算法景物空间消隐算法景物空间消隐算法1963年,年,Roberts于于MIT
12、提出提出 2323隐藏面的消除-Roberts算法算法(2/9)基本思想基本思想n n消除被物体自身遮挡的边和面消除被物体自身遮挡的边和面n n再用每个物体留下的边与其它物体比较再用每个物体留下的边与其它物体比较适用范围适用范围n n凸体凸体凹体怎么办?凹体怎么办?n n分解成若干凸体的组合分解成若干凸体的组合2424隐藏面的消除-Roberts算法算法(3/9)体矩阵体矩阵平面方程平面方程ax+by+cz+d=0 2525隐藏面的消除-Roberts算法算法(4/9)求平面方程求平面方程ax+by+cz+d=0的系的系数数 n n利用利用不共线三点坐标不共线三点坐标不共线三点坐标不共线三点坐
13、标n n利用平面的利用平面的法向量法向量法向量法向量平面法向量平面法向量:n=ai+bj+ck:n=ai+bj+ckd=-(axd=-(ax1 1+by+by1 1+cz+cz1 1)n n利用利用Martin NewellMartin Newell方法方法 2626隐藏面的消除-Roberts算法算法(5/9)已知:已知:已知:已知:S=x y z 1S=x y z 1,P=a b c dP=a b c dn n若若若若S S在平面上在平面上在平面上在平面上 则则S SP=0P=0n n若点若点若点若点S S不在平面上不在平面上不在平面上不在平面上则点积的正负号标识点在平面的哪一侧则点积的正
14、负号标识点在平面的哪一侧约定:约定:约定:约定:n n若点若点若点若点S S在在在在体内一侧体内一侧体内一侧体内一侧则则S SP0P0 n n若点若点若点若点S S在在在在体外一侧体外一侧体外一侧体外一侧则则S SP0P0如何得到正确的体矩阵?如何得到正确的体矩阵?对体矩阵对体矩阵V进行校正进行校正 n n在体内找一在体内找一在体内找一在体内找一试验点试验点试验点试验点S S若某平面方程系数若某平面方程系数P P与与S S的点积符号为负的点积符号为负则将该方程系数均乘以则将该方程系数均乘以-1-1 2828隐藏面的消除-Roberts算法算法(7/9)自隐藏面的判别自隐藏面的判别自隐藏面的判别
15、自隐藏面的判别 假设假设假设假设n n视点视点视点视点:位于:位于z z轴正向的无穷远处轴正向的无穷远处n n视线方向视线方向视线方向视线方向:z z轴负向的无穷远点轴负向的无穷远点轴负向的无穷远点轴负向的无穷远点 E E=0 0 -1 0=0 0 -1 0 用用用用E E作为试验点作为试验点作为试验点作为试验点判定一平面是自隐藏面的条件判定一平面是自隐藏面的条件判定一平面是自隐藏面的条件判定一平面是自隐藏面的条件 n nE E V0V Z-bufz(x,y)Z-buf中对应此像素点中对应此像素点中对应此像素点中对应此像素点(x,y)(x,y)的的的的z z值)值)值)值)把多边形在把多边形在
16、把多边形在把多边形在(x,yx,y)处的深度值处的深度值处的深度值处的深度值z z(x,yx,y)存入存入存入存入Z-bufZ-buf中的中的中的中的(x,yx,y)处;处;处;处;把多边形在把多边形在把多边形在把多边形在(x,yx,y)处的亮度值存入处的亮度值存入处的亮度值存入处的亮度值存入f-buff-buf中的中的中的中的(x,yx,y)处;处;处;处;当所有的多边形都处理完后,帧缓冲器中的内容即为消除隐藏面后的图像当所有的多边形都处理完后,帧缓冲器中的内容即为消除隐藏面后的图像当所有的多边形都处理完后,帧缓冲器中的内容即为消除隐藏面后的图像当所有的多边形都处理完后,帧缓冲器中的内容即为
17、消除隐藏面后的图像4343隐藏面消除-深度缓冲器算法深度缓冲器算法(5/8)优点优点n n简单简单简单简单在象素级上以近物代替远物,易于消除隐藏面,并准确显示复杂在象素级上以近物代替远物,易于消除隐藏面,并准确显示复杂曲面之间的交线。曲面之间的交线。n n计算量呈线性复杂度计算量呈线性复杂度计算量呈线性复杂度计算量呈线性复杂度场景中景物表面采样点的数目场景中景物表面采样点的数目n n无需对各景物表面片作深度预排序无需对各景物表面片作深度预排序无需对各景物表面片作深度预排序无需对各景物表面片作深度预排序景物表面上的可见点可按任意次序写入深度缓冲器和帧缓冲器景物表面上的可见点可按任意次序写入深度缓
18、冲器和帧缓冲器n n易于硬件实现易于硬件实现易于硬件实现易于硬件实现图形工作站上配置由硬件实现的深度缓冲器算法图形工作站上配置由硬件实现的深度缓冲器算法很多微型机上都装有基于深度缓冲器算法的图形加速卡很多微型机上都装有基于深度缓冲器算法的图形加速卡4444隐藏面消除-深度缓冲器算法深度缓冲器算法(6/8)缺点缺点n n需要很大的存储空间需要很大的存储空间需要很大的存储空间需要很大的存储空间象素数目为象素数目为500500500500,深度值采用浮点类型(,深度值采用浮点类型(4 4字节)字节)除刷新缓存外,还需除刷新缓存外,还需500*500*4=1M500*500*4=1M字节的额外存储空间
19、字节的额外存储空间n n在实现反走样、处理透明和半透明等效果方面存在在实现反走样、处理透明和半透明等效果方面存在在实现反走样、处理透明和半透明等效果方面存在在实现反走样、处理透明和半透明等效果方面存在困难,并由此会产生巨大的处理时间开销困难,并由此会产生巨大的处理时间开销困难,并由此会产生巨大的处理时间开销困难,并由此会产生巨大的处理时间开销由于在帧缓冲器内的同一象素点上可见表面的写入顺序由于在帧缓冲器内的同一象素点上可见表面的写入顺序是不确定的,所以可能导致画面上的局部错误。是不确定的,所以可能导致画面上的局部错误。4545隐藏面消除-深度缓冲器算法深度缓冲器算法(7/8)改进一:减少需要相
20、对测试的多边形平面改进一:减少需要相对测试的多边形平面数数n n最小最大测试最小最大测试最小最大测试最小最大测试 不重叠,不可能互相遮蔽 测试无确定结果 对每条边进行最小最大测试XminXmax4646隐藏面消除-深度缓冲器算法深度缓冲器算法(8/8)改进二:利用连贯性计算深度改进二:利用连贯性计算深度n n水平方向水平方向水平方向水平方向n n竖直方向竖直方向竖直方向竖直方向改进三:降低对存储空间的需求改进三:降低对存储空间的需求改进三:降低对存储空间的需求改进三:降低对存储空间的需求n n图像空间划分为图像空间划分为4 4、1616甚至更多的子正方形或条状区域甚至更多的子正方形或条状区域n
21、 n在最小情况下,只对应一条扫描线的深度缓冲器在最小情况下,只对应一条扫描线的深度缓冲器扫描线相关算法扫描线相关算法扫描线相关算法扫描线相关算法4747隐藏面的消除-扫描线相关算法(扫描线相关算法(1/3)扫描线相关算法扫描线相关算法n n按扫描线顺序处理一帧画面按扫描线顺序处理一帧画面n n在在扫描平面扫描平面扫描平面扫描平面(ZOXZOX平面)上解决消隐问题平面)上解决消隐问题由视点和扫描线所决定由视点和扫描线所决定深度缓冲器算法的一维版本深度缓冲器算法的一维版本n n深度缓冲器所需的存储空间深度缓冲器所需的存储空间屏幕水平分辨率屏幕水平分辨率 每个深度值所占的存储位数每个深度值所占的存储
22、位数 4848隐藏面的消除for(for(每条扫描线每条扫描线每条扫描线每条扫描线)将扫描线帧缓冲器将扫描线帧缓冲器将扫描线帧缓冲器将扫描线帧缓冲器f_buff_buf置成背景色;置成背景色;置成背景色;置成背景色;将扫描线深度缓冲器将扫描线深度缓冲器将扫描线深度缓冲器将扫描线深度缓冲器Z_bufZ_buf置成最小值;置成最小值;置成最小值;置成最小值;for(for(每个多边形每个多边形每个多边形每个多边形)求出该多边形与当前扫描线的相交区间;求出该多边形与当前扫描线的相交区间;求出该多边形与当前扫描线的相交区间;求出该多边形与当前扫描线的相交区间;for(for(相交区间内每个象素点相交区
23、间内每个象素点相交区间内每个象素点相交区间内每个象素点(x,y)(x,y)计算多边形在该处的深度值计算多边形在该处的深度值计算多边形在该处的深度值计算多边形在该处的深度值z z;if(if(多边形在该处的深度值多边形在该处的深度值多边形在该处的深度值多边形在该处的深度值z Z_bufz Z_buf在该处的值在该处的值在该处的值在该处的值)用多边形在该处的深度值用多边形在该处的深度值用多边形在该处的深度值用多边形在该处的深度值z z取代取代取代取代Z_bufZ_buf在该处的值;在该处的值;在该处的值;在该处的值;用多边形在该处的亮度值取代用多边形在该处的亮度值取代用多边形在该处的亮度值取代用多
24、边形在该处的亮度值取代f_buff_buf在该处的值;在该处的值;在该处的值;在该处的值;用用用用f_buff_buf的内容显示当前扫描线;的内容显示当前扫描线;的内容显示当前扫描线;的内容显示当前扫描线;4949隐藏面的消除-扫描线相关算法(扫描线相关算法(3/3)缺点缺点n n在每一个被多边形覆盖像素处需要计算深度值在每一个被多边形覆盖像素处需要计算深度值n n被多个多边形覆盖的像素需要多次计算深度值被多个多边形覆盖的像素需要多次计算深度值改进改进改进改进n n在一条扫描线上,以区间为单位确定多边形的可见性在一条扫描线上,以区间为单位确定多边形的可见性在一条扫描线上,以区间为单位确定多边形
25、的可见性在一条扫描线上,以区间为单位确定多边形的可见性5050隐藏面的消除-Warnock算法算法(1/4)Warnock算法算法n n图像空间消隐算图像空间消隐算法法n n区域的连贯性区域的连贯性 n n也称也称区域细分区域细分区域细分区域细分area-subdivisionarea-subdivisionn n实质实质分而治之分而治之 5151隐藏面的消除-Warnock算法算法(2/4)基本思想基本思想基本思想基本思想n n观察整个窗口区域观察整个窗口区域观察整个窗口区域观察整个窗口区域n n判别窗口是否单纯判别窗口是否单纯判别窗口是否单纯判别窗口是否单纯窗口内窗口内无任何可见物体无任何
26、可见物体无任何可见物体无任何可见物体窗口窗口已被一个可见面片完全充满已被一个可见面片完全充满已被一个可见面片完全充满已被一个可见面片完全充满n n将非单纯的窗口四等分为四个子窗口将非单纯的窗口四等分为四个子窗口将非单纯的窗口四等分为四个子窗口将非单纯的窗口四等分为四个子窗口n n对每个子窗口再进一步判别是否是单纯的对每个子窗口再进一步判别是否是单纯的对每个子窗口再进一步判别是否是单纯的对每个子窗口再进一步判别是否是单纯的n n直到窗口单纯或窗口边长已缩至一个象素点为止直到窗口单纯或窗口边长已缩至一个象素点为止直到窗口单纯或窗口边长已缩至一个象素点为止直到窗口单纯或窗口边长已缩至一个象素点为止
27、即使即使即使即使1024102410241024分辨率分辨率分辨率分辨率n n视图被细分视图被细分视图被细分视图被细分1010次后,也能使每个子窗口覆盖一个像素次后,也能使每个子窗口覆盖一个像素次后,也能使每个子窗口覆盖一个像素次后,也能使每个子窗口覆盖一个像素 5252隐藏面的消除-Warnock算法算法(3/4)关键步骤关键步骤分析观察窗口与所有投影后多边形面片之间的关系分离分离内含内含相交相交包围包围判别窗口是否单纯判别窗口是否单纯5353隐藏面的消除-Warnock算法算法(4/4)基本步骤基本步骤基本步骤基本步骤对每个窗口判断对每个窗口判断对每个窗口判断对每个窗口判断n n与多边形与
28、多边形与多边形与多边形分离分离分离分离n n仅仅仅仅包含包含包含包含一个多边形一个多边形一个多边形一个多边形n n与一个多边形与一个多边形与一个多边形与一个多边形相交相交相交相交n n被一个多边形所被一个多边形所被一个多边形所被一个多边形所包围包围包围包围且窗口内无其它多边形且窗口内无其它多边形且窗口内无其它多边形且窗口内无其它多边形n n至少被一个多边形所包围,且此多边形至少被一个多边形所包围,且此多边形至少被一个多边形所包围,且此多边形至少被一个多边形所包围,且此多边形距离距离距离距离视点最近视点最近视点最近视点最近否则继续细分窗口,并重复以上测试否则继续细分窗口,并重复以上测试否则继续细
29、分窗口,并重复以上测试否则继续细分窗口,并重复以上测试5454 光线投射算法(1/4)Ray Castingn nAppelAppel提出提出提出提出n n建立在几何光学基础之上建立在几何光学基础之上建立在几何光学基础之上建立在几何光学基础之上n n对于包含曲面、特别是球面的场景效率高对于包含曲面、特别是球面的场景效率高对于包含曲面、特别是球面的场景效率高对于包含曲面、特别是球面的场景效率高5555 光线投射算法(2/4)基本思想基本思想n n观察者之所以能看见景物观察者之所以能看见景物观察者之所以能看见景物观察者之所以能看见景物光源发出的光照射到物体上的结果光源发出的光照射到物体上的结果其中
30、一部分光到达人的眼睛引起视觉其中一部分光到达人的眼睛引起视觉n n到达观察者眼中的光到达观察者眼中的光到达观察者眼中的光到达观察者眼中的光由物体表面反射由物体表面反射通过表面折射或透射通过表面折射或透射n n若若若若从光源出发跟踪光线从光源出发跟踪光线从光源出发跟踪光线从光源出发跟踪光线则只有极少量的光能到达观察者的眼睛则只有极少量的光能到达观察者的眼睛效率低效率低n n从视点或像素出发,仅对穿过像素的光线反向跟踪从视点或像素出发,仅对穿过像素的光线反向跟踪从视点或像素出发,仅对穿过像素的光线反向跟踪从视点或像素出发,仅对穿过像素的光线反向跟踪n n当光线路径到达一个可见的不透明物体的表面时停
31、止追踪当光线路径到达一个可见的不透明物体的表面时停止追踪当光线路径到达一个可见的不透明物体的表面时停止追踪当光线路径到达一个可见的不透明物体的表面时停止追踪5656将景物通过将景物通过透视投影变换透视投影变换透视投影变换透视投影变换到图像空间到图像空间反向跟踪一条穿过像素点的光线反向跟踪一条穿过像素点的光线反向跟踪一条穿过像素点的光线反向跟踪一条穿过像素点的光线n n决定它与场景中的哪一景物表面相交决定它与场景中的哪一景物表面相交交点按深度排序交点按深度排序交点按深度排序交点按深度排序n n需求出该光线与景物表面的所有可能的交点需求出该光线与景物表面的所有可能的交点具有具有具有具有最大最大最大
32、最大z z z z值的交点值的交点值的交点值的交点对应的面就是屏幕上该像素对应的对应的面就是屏幕上该像素对应的对应的面就是屏幕上该像素对应的对应的面就是屏幕上该像素对应的可见面可见面可见面可见面n n离视点最近离视点最近n n该像素处的显示值由相应物体的属性决定该像素处的显示值由相应物体的属性决定对屏幕上所有像素都进行如上处理后,算法结束对屏幕上所有像素都进行如上处理后,算法结束 视点光线投影面上的像素位置物体假设假设假设假设n n视点视点视点视点位于位于z z轴正向轴正向n n投影平面投影平面投影平面投影平面(屏幕)垂直于(屏幕)垂直于z z轴轴反向跟踪一条穿过像素点的光线光线投射算法(3/
33、4)5757光线投射算法(4/4)光线投射算法光线投射算法光线投射算法光线投射算法 for(y=0;y=ymax;y+)for(y=0;y=ymax;y+)for(x=0;x=xmax;x+)for(x=0;x=xmax;x+)形成通过像素形成通过像素形成通过像素形成通过像素(x,y)(x,y)的投影线;的投影线;的投影线;的投影线;for(for(场景中的每一个多边形)场景中的每一个多边形)场景中的每一个多边形)场景中的每一个多边形)将投影线与多边形求交;将投影线与多边形求交;将投影线与多边形求交;将投影线与多边形求交;if(if(有交点有交点有交点有交点)以最近交点所属多边形的颜色显示像素
34、以最近交点所属多边形的颜色显示像素以最近交点所属多边形的颜色显示像素以最近交点所属多边形的颜色显示像素(x,y);(x,y);else else 以背景颜色显示像素以背景颜色显示像素以背景颜色显示像素以背景颜色显示像素(x,y);(x,y);5858阴影处理(1/6)判断视点、光源以及物体之间的位置关系判断视点、光源以及物体之间的位置关系 n n从视点可见,从光源也可见从视点可见,从光源也可见从视点可见,从光源也可见从视点可见,从光源也可见n n从视点可见,从光源不可见从视点可见,从光源不可见从视点可见,从光源不可见从视点可见,从光源不可见 n n相对于部分光源可见,相对于另一部分光源不可见相
35、对于部分光源可见,相对于另一部分光源不可见相对于部分光源可见,相对于另一部分光源不可见相对于部分光源可见,相对于另一部分光源不可见5959阴影处理(2/6)当观察方向与光源方向重合时当观察方向与光源方向重合时n n观察者看不到任何阴影观察者看不到任何阴影n n可以不进行阴影测试可以不进行阴影测试当观察方向与光源方向不一致当观察方向与光源方向不一致或光源多且光源体制比较复杂时或光源多且光源体制比较复杂时n n必须进行阴影处理必须进行阴影处理 6060阴影处理(3/6)阴影由两部分组成阴影由两部分组成n n本影本影本影本影任何光线都照不到的区域任何光线都照不到的区域呈现为全黑的轮廓分明的区域呈现为
36、全黑的轮廓分明的区域 n n半影半影半影半影 可接收到分布光源照射的部分光线的区域可接收到分布光源照射的部分光线的区域 通常位于本影周围,呈现为半明半暗的区域通常位于本影周围,呈现为半明半暗的区域 本半区影区影区影无光源面光源照射形成的本影与半影6161阴影处理(4/6)点光源点光源点光源点光源n n只能产生本影只能产生本影只能产生本影只能产生本影位于有限距离内的分布光源位于有限距离内的分布光源位于有限距离内的分布光源位于有限距离内的分布光源n n可同时产生本影和半影可同时产生本影和半影可同时产生本影和半影可同时产生本影和半影需要的阴影计算量大需要的阴影计算量大6262阴影处理(5/6)计算阴
37、影的过程计算阴影的过程相当于两次消隐过程相当于两次消隐过程n n对每个光源进行消隐对每个光源进行消隐对每个光源进行消隐对每个光源进行消隐n n对视点的位置进行消隐对视点的位置进行消隐对视点的位置进行消隐对视点的位置进行消隐好处好处n n改变视点位置改变视点位置改变视点位置改变视点位置,第一次消隐过程不必重新计算,第一次消隐过程不必重新计算6363阴影处理(6/6)产生的本影包括产生的本影包括产生的本影包括产生的本影包括n n自身阴影面自身阴影面自身阴影面自身阴影面假设视点在点光源位置,用假设视点在点光源位置,用背面剔除背面剔除背面剔除背面剔除的方法求出的方法求出n n投射阴影投射阴影投射阴影投射阴影从光源向物体的所有可见面投射光线从光源向物体的所有可见面投射光线将这些面投影到场景中得到投影面将这些面投影到场景中得到投影面将这些投影面与场景中其它平面求交线,可得阴影多边形将这些投影面与场景中其它平面求交线,可得阴影多边形 自身阴影自身阴影投射阴影投射阴影