第8章不学
目录
# 学习目标
- - 了解物体的三种模型表示方法
- - 掌握柏拉图多面体的建模方法
- - 掌握常见曲面体的建模方法
- - 熟练掌握凸多面体的背面剔除算法
- - 熟练掌握曲面体的背面剔除算法
- - 熟练掌握深度缓冲算法
- - 熟练掌握深度排序算法
# 消隐
## 定义
要生成具有真实感的图形,就要在给定视点和视线方向之后,决定场景中物体哪些线段或表面是可见的,哪些线段或表面是不可见的。这一问题习惯上称为消除隐藏线和消除隐藏面,简称为消隐。
我们常见的三维物体,这些物体可以采用线框模型描述,也可以采用表面模型或实体模型描述。无论使用哪种模型描述,都需要为物体建立顶点表、边表和面表构成的数据结构。
建立三维用户坐标系为右手系Oxyz,x轴水平向右为正,y轴垂直向上为正,z轴从纸面指向观察者。
几何信息:描述几何元素空间位置的信息。
拓扑信息:描述几何元素之间相互连接关系的信息。
描述一个物体不仅需要几何信息的描述而且需要拓扑信息的描述。因为只有几何信息的描述,在表示上存在不惟一性。
1.线框模型
线框模型(wireframe model)是计算机图形学中表示物体最早使用的模型,而且一直在使用。
线框模型只是用几何体的边线来表示物体的外形,没有表面和体积等概念。
线框模型是表面模型和实体模型的基础,只使用顶点表和边表两个数据结构就可以描述。图9-5所示为立方体线框模型。
- 优点:可以产生任意方向视图,视图间保持正确的投影关系,常用于绘制三视图或斜轴测图等。
- 缺点:所有棱边全部绘制出来,容易产生二义性,如图9-6所示
2.表面模型
表面模型(surface model)是利用物体的外表面来构造模型,就如同在线框模型上蒙上了一层外皮,使物体具有了一层外表。
表面模型仍缺乏体积的概念,是一个物体的空壳。与线框模型相比,表面模型增加了一个面表,用以记录边面之间的拓扑关系。
- 优点:可以对表面进行平面着色或光滑着色、可以为物体添加光照或纹理等。
- 缺点:无法进行实体之间的并交叉运算。
图9-7表示的是双三次Bezier曲面的网格模型。
图9-8表示的是双三次Bezier曲面的表面模型。
在图9-8中,Bezier曲面没有围成一个封闭的空间,只是一张很薄的面片,其表面无内外之分,哪面是正面、哪面是反面,没有给出明确的定义。
3.实体模型
实体模型(solid model)是在封闭的表面模型内部进行了填充,有了如体积和重量等特性,能反映立体的真实性,立体才具有“体”的概念。它的内部和外部的概念,定义了在表面模型的哪一侧存在实体。它的表面有正面和反面之分。如图9-9所示。
用有向棱边隐含地表示表面的外法向量方向。常用右手准则定义,拓扑合法的物体在相邻两个面的公共边界上,棱边的方向正好相反,如图9-10所示。
与表面模型数据结构的差异。将面表的顶点索引号按照从物体外部观察的逆时针方向的顺序排列,可确切地分清体内体外。
与线框模型、表面模型的区别。记录了顶点的信息,以及线、面、体的拓扑信息。
实体模型常采用集合论中的并、交、差等运算来构造复杂实体 。
一般情况下,使用顶点表、边表和面表3张表可以方便地检索到物体的任意一个顶点、任意一条边和任意一个表面,而且数据结构清晰。
实际建模中,实体模型采用了有向棱边,相邻两个表面上共享的一条棱边的定义方向截然相反,导致无法确定棱边的顶点连接顺序,因而放弃边表,仅使用顶点表和面表来表示物体的几何模型。
且面表中按照表面法矢量向外的方向遍历多边形顶点索引号,表明处理的是物体的正面。仅用顶点表和面表的缺点是物体的每条边被重复绘制2次。
双表结构
表9-4根据立方体的展开图重新设计了面表结构。
定义三维顶点类
如图9-12所示,包括顶点的三维坐标(x,y,z)