(计算机图形学)建模与消隐.ppt

  1. 1、本文档共105页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(计算机图形学)建模与消隐

* 9.3.2 曲面体消隐算法 曲面体可以采用有限单元法划分为若干个小曲面区域。常采用四边形平面片或三角形平面片来逼近曲面体。 消隐主要是确定各四边形平面片或三角形平面片的可见性,与凸多面体消隐类似,即用外法矢量和视矢量的数量积来进行可见性检测。 球面可用?参数簇和?参数曲线簇所构成的四边形经纬网格来表示,如图9-61所示。设相邻的两条纬线分别为?0、 ?1,相邻的两条经线分别为?0、 ?1,则四边形平面片V0V1V2V3各点的坐标为:V0(?0,?0)、V1(?1,?0)、 V2(?1,?1)、V3(?0, ?1)。 以V1V0和V2V0为边矢量,计算四边形平面片的V0V1V2V3外法矢量为: 图9-60 球的经纬网格 (9-9) 给定视点位置球面坐标表示为: ( , , ) 对于四边形平面片V0V1V2V3的参考点V0(?0,?0),视矢量分量的计算公式为 * 式中,R为视点的矢径,?和?为视点的位置角。r为球面的半径,?0和?0为球面上一点V0的位置角。 四边形平面片V0V1V2V3的参考点V0(?0,?0)的法矢量N的计算方法与凸多面体类似。球面上V0(?0,?0)点的平均外法矢量可以使用该点的位置矢量代替。 将法矢量N规范化为单位矢量n,视矢量S规范化为单位矢量s,有 * 球面网格四边形平面片可见性检测条件为: 当 绘制该面片。 球面线框模型消隐前的透视变换图如图9-62所示,北极点和南极点同时绘制出来,无法确认北极点面向读者还是南极点面向读者 。 图9-62 消隐前的球面透视投影 图9-63 消隐后的球面透视投影 使用背面剔除算法后,可以看出图9-62中球面的北极点面向读者,如图9-63所示。 * 9.4 隐面算法 物体的表面模型一般在像空间进行消隐。 从视点的角度观察物体的表面,离视点近的表面的投影遮挡了离视点远的表面的投影,屏幕上的绘制结果为所有可见表面最终投影的集合。该算法属于像素级算法。 常用的消隐有两种:深度缓冲器算法和深度排序算法。 9.4.1 深度缓冲器算法(Z-Buffer) 1.算法原理 深度缓冲器算法于1974年由Catmull提出,属于图像空间消隐算法。在物空间内不对物体表面的可见性进行检测,在像空间中根据每个像素的深度值确定最终绘制的物体表面上各个像素的颜色。也称为Z-Buffer算法。其中x,y代表屏幕坐标,z代表立方体上各面深度。 Edwin Earl Catmull * Z-Buffer算法建立两个缓冲器: 深度缓冲器,用以存储图像空间中每一像素相应的深度值,初始化为最大深度值(zs坐标)。 帧缓冲器,用以存储图像空间中的每个像素的颜色,初始化为屏幕的背景色。 基本原理: 建立三维屏幕坐标系,设平行于Zs轴的视线与立方体前面交于点( x1,y1,z1 ),后面交于点( x1,y1,z2 ); z1z2,则前面的点(x1,y1,z1)的颜色将覆盖后面的点(x1,y1,z2) 屏幕像素点 深度缓冲器 帧缓冲器 zs (4,5)ZZs z * 2.算法描述 帧缓冲器初始值置为背景色。 确定深度缓冲器的宽度、高度和初始深度。一般将初始深度置为最大深度值。 对于多边形表面中的每一像素(xs,ys),计算其深度值zs(xs,ys)。 将zs(xs,ys)与存储在z缓冲器中该位置的深度值zBuffer(xs,ys)进行比较。 如果zs(xs,ys)≤zBuffer(xs,ys),则将此像素的颜色写入帧缓冲器,且用z(xs,ys)重置zbuffer(xs,ys)。 * 3.计算深度 若多边形的平面方程已知,一般采用增量法计算扫描线上每一像素点的深度值。当立方体旋转到图9-65所示的位置时,六个表面都不与投影面xOy面平行,这时需要根据每个表面的平面方程计算多边形内各个像素点的深度值。 视线方向 图9-65 旋转立方体 图9-66 旋转立方体的任一表面 * 图9-66所示的一个立方体表面,其平面一般方程为: 系数A,B,C是该平面的一个法矢量N的坐标,即 根据表面顶点的坐标可以计算出两个边矢量 根据两个边矢量的叉积,可求得表面的法矢量N,得到系数A,B,C (9-10) * 将A、B、C和点(x0,y0,z0)代入方程(9-10),得 从方程(9-10)得到当前像素点(xs,ys)处的深度值 * 已知扫描线yi与多边形相交的左边界的像素(xi,yi)的深度值为z(xi,yi),其相邻点(xi+1,yi)处的深度值为z(xi+1,yi)。由此可以计算出该扫描线上的所有后续像素点的深度值。同一扫描线上的深度增量可由一步加法完成。 式中, 为深度步长。

文档评论(0)

jiupshaieuk12 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档