1. 线框模型:线框模型存在着几个缺陷。
(1)用三维线框模型表示三维形体常具有二义性,如下图所示的图形可以有多种理解方式。 (2)由于不存在面的信息,三维线框容易构造出无效形体,如下图所示。 (3)由于不能表示出曲面的轮廓线,所以不能正确表示曲面信息,如下图所示。 (4)无法进行图形的线面消隐。
(5)生成复杂形体时,线框模型要求输入大量的数据,加重用户的输入负担。
(6)难以保证数据的统一性和有效性。 2. 实体模型(实体造型技术)
可以将实体模型的表示大致分为三类:
(1)边界表示(Boundary representation, B-reps):用一组曲面(含平面)来描述物体。
(2)构造实体几何表示:将实体表示成基本体素的组合,采用并、交、差等运算构造新的形体。
(3)空间分割(Space-partitioning)表示:将包含一物体的空间区域划分成一组小的非重叠的连续实体(通常是立方体)。 多边形表面模型 它使用一组包围物体内部的平面多边形,也即平面多面体,来描述实体。 1.多边形表
多边形数据表可分为两组来组织:几何表和属性表。几何表包括顶点坐标和用来标识多边形平面空间方向的参数;属性表包括指明物体透明度及表面反射度的参数和纹理特征。存储几何数据的一个有效方法是建立3张表:顶点表、边表和多边形表。
为上图所示的四面体建立的三张表如下: 除了3张表给出的几何信息外,还需要增加额外的信息来表示其拓扑信息。如将边表扩充成包括指向面表和顶点表的指针,由此可构造出如下图所示的翼边结构表示(Winged Edges Structure)。 2. 平面方程
可以利用平面方程:
(1)求得平面的法向量。
(2)鉴别空间上的点与物体平面的位置关系。
(3)判别点在面的内部或外部。 3. 多边形网格(polygon mesh)
三维形体的曲面边界通常用多边形网格(polygon mesh)的拼接来模拟 。常用的是如下图所示的三角形带和四边形网格。 扫描表示 扫描表示法(sweep representation)可以利用简单的运动规则生成有效实体。扫描表示包含两个要素:作扫描运动的基本图形以及扫描运动的方式。
常见扫描运动的方式有:
(1)旋转扫描:沿图形路径从0到360度的角度范围内移动。
(2)非圆形路径扫描:给定描述路径的曲线函数和沿路径移动的距离。
(3)广义扫描法:沿扫描路径变化剖面的形状和大小,或者当移动该形状通过某空间区间时,可以变化剖面相对于扫描路径的方向。 构造实体几何法 构造实体几何法(CSG,Constructive Solid Geometry)由两个实体间的并、交或差操作生成新的实体。
(a)A,B形体的并 (b)A,B形体的差 (c)A,B形体的交
图4-18 构造实体几何法生成三维实体 1. CSG树
集合运算的实现过程可以用一棵 CSG树来描述。其中,树的叶子是基本体素或是几何变换参数,树的非终端结点是施加于其子结点的正则集合算子或定义的几何变换,二叉树根结点表示集合运算的最终结果。 2. 构造实体几何法的特点
(1)如果体素设置比较齐全,可以构造出多种不同的符合需要的实体。
(2)集合运算的中间结果难以用简单的代数方程表示,求交困难。
(3)CSG树不能显式地表示形体的边界,因而无法直接显示CSG树表示的形体。 空间位置枚举表示
空间位置枚举表示法将包含实体的空间分割为大小相同、形状规则(正方形或立方体)的体素,然后,以体素的集合来表示图形对象。
八叉树 八叉树(octrees)又称为分层树结构,它对空间进行自适应划分,采用具有层次结构的八叉树来表示实体。 1. 四叉树
把平面图形对象用一个矩形包围起来,如下图所示。这个矩形就是四叉树的根节点,它可能处于三种状态:完全被图形覆盖F,部分被覆盖B或完全没有被覆盖E。当节点处于状态F或E,则四叉树建立完毕, 否则将其等分为4个区域(象限),分别标以1,2,3,4,它们构成一 层子节点。 继续考察这四个象限的状态,直至给定精度下不出现B型象限为止。 2.八叉树
八叉树方法与四叉树类似,用一个空间的长方体来包围一个三维实体,每次把它分为8个卦限来进行判断。 BSP树
二叉空间分割(binary space partitioning,BSP)方法每次将一实体用任一位置和任一方向的平面分为二部分。这种方法可将分割平面的位置和方向按适合于实体的空间属性来确定,更为有效。 |