- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在图9-12中取前面EFGH上的一点E(xE,yE,zE),其外法矢量为N,视矢量为S,外法矢量和视矢量的夹角为θ。 首先借助于点F( xF,yF,zF)和点G(xG,yG,zG)来计算面的外法矢量。 边矢量EF的三个分量为: Fx=xF-xE;Fy=yF-yE;Fz=zF-zE; 计算边矢量EG的三个分量为: Hx=xG-xE;Hy=yG-yE;Hz=zG-zE; H G E F 面EFGH的外法矢量为两个边矢量的矢量积,外法矢量的三个分量为: Nx= ; Ny= ; Nz= ; 外法矢量表示为: (9-1) 式中, i,j,k分别为三维坐标系的3个单位矢量。 给定视点位置球面坐标表示为: ( , , ),其中:R为视径, , 。 H G E F 则对于前面EFGH上的E(xE,yE,zE)点的视矢量分量的计算公式为: 视矢量表示为: (9-2) 式中, i,j,k分别为三维坐标系的三个单位矢量。 表面外法矢量和视矢量的数量积为: (9-3) 式(9-3)中分母为正,所以cosθ的正负取决于表面外法矢量和视矢量的数量积的分子: 。 凸多面体表面可见性检测条件为: 当0°≤θ<90°时, 立方体表面可见,绘该表面多边形; 当θ=90°时, 表面外法矢量与视矢量垂直,立方体表面多边形退化为一条直线,绘出该直线; 当90°<θ≤180°时, 立方体表面不可见,不绘制该多边形。 立方体消隐前的透视变换图如图9-13所示,消隐后的透视变换图如图9-14所示。 图9-13 消隐前的立方体 图9-14 消隐后的立方体 9.4 隐面算法 物体的表面模型输出一般在像空间中进行消隐。像空间消隐算法属于像素级算法,以屏幕像素为采样单位,确定投影于每一像素的可见表面颜色区域,并将可见表面颜色作为该像素的显示颜色。隐面算法主要包括:Z-Buffer算法、画家算法、区域采样算法等。本节主要介绍最著名的Z-Buffer算法和画家算法。 9.4.1 Z-Buffer算法 Catmull在1974年提出了Z-Buffer算法。在物空间内不对立体进行可见性检测,每个面的像素点均以指定颜色全部绘制出来,在像空间中根据深度值确定最终绘制的立体各个表面的像素点颜色。Z-Buffer算法属于像空间消隐算法。 Z-Buffer算法也称深度缓冲算法,通常x,y代表屏幕坐标,而z则用来表示立体上各个面的深度,故名Z-Buffer算法。建立三维坐标系如图9-19所示,三维右手坐标系中心位于立方体体心处,x轴向右,y轴向上,z轴从体心指向观察者,xyz形成右手坐标系。观察者的视线方向沿着z轴负向,指向xoy坐标面。对于图示立方体,z轴与立方体的前面交于(x,y,z1),与立方体的后面交于(x,y,z2)。前面和后面在屏幕上的投影坐标(x,y)相同,但z1>z2, (x,y,z1)离观察者近,(x,y,z2)离观察者远。对于投影像素点(x,y),前面像素点(x,y,z1)的颜色将覆盖后面像素点(x,y,z2)的颜色,显示结果为前面像素点(x,y,z1)的RGB颜色。 这样Z-Buffer算法需要建立两个缓冲器:一个是深度缓冲器,用于记录立体上每一个像素的深度值,初始化为立体的最小深度值(z坐标)。设屏幕像素点如图9-20所示,则深度缓冲器如图9-21所示;另一个是帧缓冲器,用于记录立体上每个像素点的颜色值,初始化为屏幕的背景色。帧缓冲器如图9-22所示。 Z-Buffer算法对立体的各个表面全部进行采样,将采样点变换到屏幕坐标系的图像空间,并记录其深度z坐标值。根据采样点在屏幕上的投影位置,将其深度与已存储在帧缓存器中相应像素点处的深度值进行比较。如果新采样点的深度值大于原可见点的深度值,表明新采样点更靠近观察者,遮住了原采样点,则用新采样点处的颜色值更新帧缓存器中相应采样点处的颜色值,同时用新采样点的深度值更新深度缓存器中的采样点的深度值;否则,不作更改。 图9-21深度缓冲器 图9-22帧缓冲器
原创力文档


文档评论(0)