各种物体模型或虚拟环境的设计都是基于实体和曲线/曲面等造型技术。
若仅从计算机图形显示技术的角度来看,首先要按照物体的几何数据关系所对应的数学函数来选择造型模型的数据结构,然后将造型模型中的参数通过投影变换、裁剪、消隐、光照等过程显示出来。
只用顶点和棱边表示物体,它没有面的信息,不能表述内部和外部,拓扑关系不明,也无法进行剖切、消隐、光照等。
包括两种,一种是自由曲线/曲面造型,是由模拟物体或现象形状的数学模型插值生成的模型(如汽车、飞机的外形) ;另一种是多边形网格模型,由物体表面的采样点连接成多边形面片模型,通常用于表达复制场景对象表面(如地形起伏)
最完善的模型定义,它能够表达全部的形状信息,如物体位置、面积、长度、体积、拓扑关联等,同时也定义了物体的并、交、差集合运算和欧拉运算等。
有效实体的必备性质如下:(1)刚性(形状不变性)。(2)具有封闭的边界,将空间划分为内部和外部两部分。(3)内部连通。(4)占据有效的空间。(5)经过集合运算后,仍然是有效的实体。实际应用中,综合运用各类造型方法生成复杂的三维场景表达。
边界表示思想:用许多简单的元素如三角形表示形状,而不是用少得多的但是更复杂\更精确的元素来表示形状。
边界表示模型是一种采用描述形体表面方法的几何表示模型, Boundary representations (B-reps)一个形体一般可以通过其边界拆成一些有界的“面”或“小片”的子集来表示,而每一个面又可以通过其边界的边和顶点来表示
拆分+组装是描述实体最常用的方法
实体的边界需要满足以下条件:(1)每条邻边必须要有两个已知坐标的端点(2)每条边只能被两个面共享。(3)每个顶点至少被三个面或三个边所共享。
边界表示的优点:能够显式表示形体边界,绘制时能快速计算法向和光照效果,算法简单;在不改变拓扑关系的前提下便于局部几何变换;便于多个形体做并、交、差等集合运算;可用欧拉公式判断实体的有效正则性。
欧拉公式:顶点数-棱长数+表面数=2
多边形网格表示法是目前最主流的三维模型表示方法,其基本思想是通过许多简单的多边形面片来表示三维模型
由多边形彼此相接构成的网格:多边形称为网格的面,多边形顶点也称为网格的顶点一般要求两张相邻面的公共边完全相同,即不能出现某一面的一个顶点在另一面的边中间
图形学表示一大类实体模型的标准方法实体模型:立方体、四面体、球面、锥面
实体:多边形网格形成一个封闭的空间区域表面:不形成空间封闭区域,表示一个无限薄的曲面两者都称为多边形网格(polygonalmesh),有时简称为网格
实体:如果网格形成一个封闭的有界区域连通性:如果任两个顶点间存在由边构成的连续路径简单性:表示一个实体,且没有孔洞,即可通过连续几何形变到球面平面性:如果所有面都是平面多边形●有些算法对平面多边形更有效●因此三角网格的实用性更加凸显
按照体一面一环一边一点的层次,详细记录了构成形体所有几何元素的几何信息及其相互连接的拓扑关系边界表示的一个重要特点是在该表示法中,描述形体的信息包括几何信息(Geometry) 和拓扑信息(Topology)两个方面-几何信息:指形体在欧氏空间中的位置和大小-拓扑信息:是形体各分量的数目及其相互之间的连接关系
几何:顶点的位置拓扑:顶点和边的连接关系例如:多边形就是顶点的有序列表,其中每条边以相邻的顶点为端点,同时最后一个顶点与第一个顶点连接即使几何信息改变了,拓扑信息可以保持不变.
边界表示法的数据结构有四种方法:直接表示、顶点表指针表示、边表指针表示、翼边表示、半边表示
以顶点/坐标和面/顶点序列两张关系表表示把几何位置放在一个数组中构造面时,利用指向各顶点的索引
直接对网格进行造型是非常困难的存在实体的扫描-得到实体上的点,然后采用一定的算法形成网格几何造型软件可以把曲面转化为近似的网格表示任何表面都可以用多边形网格逼近到任意光滑精度,这称为多边形网格的完备性
构建方法:通过编写程序来生成模型使用建模程序使用三维激光扫描仪对真实模型进行不同点采样根据同一个物体的一幅或多幅图像进行重建
容易表示-数据结构简单容易变换性质简单-每个面只有一个法向量-容易确定内外侧容易绘制-多边形填充-纹理映射
多边形网格是OpenGL接受其它表示的中转站利用曲面造型,曲面需要被多边形网格逼近,OpenGL才能显示曲面
实体是内部属性单一的三维物体。实体造型就是通过各种方法与运算生成一个封闭实体的过程。
构造实体几何法(Constructed Solid Geometry,简称CSG)是一种十分常用的实体构造方法。其基本思想是将简单实体(又称体素)通过集合运算组合成所需要的物体。
通过对体素定义运算而得到新的形体的一种表示方法。体素也可以由多个半空间的集合运算来表示,半空间指一个无限大平面将三维空间分成两个无限的区域。由多个基本体素通过集合运算得到的实体也可以作为构造更复杂形体的体素。
体素可以是立方体、圆柱、圆锥等,也可以是半空间,其运算为变换或正则集合运算并、交、差。
CSG表示可以看成是一棵有序的二叉树。-其终端节点或是体素、或是形体变换参数。-非终端结点或是正则的集合运算,或是变换(平移和/或旋转)操作,这种运算或变换只对其紧接着的子结点(子形体)起作用。
-数据结构比较简单,内部数据的管理比较容易;-控制性好:形状比较容易修改。
-对形体的表示受体素的种类和对体素操作的种类的限制(CSG方法表示形体的覆盖域有较大的局限性)。-形体的边界几何元素(点、边、面)是隐含地表示在CSG中,故显示与绘制CsG表示的形体需要较长的时间。-表示不唯一
将物体A沿着轨迹P推移得到物体B,称B为sweep体。平移sweep--将一个二维区域沿着一个矢量方向推移旋转sweep--将一个二维区域绕旋转轴旋转一周广义sweep-任意物体沿着任意轨迹推移-推移过程中物体可以变形
-容易构建,适合做图形输入手段
-绘制需要前处理:不能直接获取形体的边界信息-表示形体的覆盖域有限
细分表示(Space-partitioning) :将形体按某种规则分解为小的更易于描述的部分,每一小部分又可分为更小的部分,这种分解过程直至每一小部分都能够直接描述为止。
人们使用它或许是因为原始数据已是以这种形式存储或原始数据容易转换成这种表示。在绘制CsG模型时,可以把CSG表示转换成一个中间的含有体素的数据结构,然后从这个数据结构进行光线跟踪绘制。
八叉树表示:-对空间位置枚举表示的空间分割方法作了改进:均匀分割 一> 自适应分割
八叉树建立过程-八叉树的根节点对应整个物体空间-如果它完全被物体占据,将该节点标记为F(Full),算法结束;-如果它内部没有物体,将该节点标记为E(Empty),算法结束;-如果它被物体部分占据,将该节点标记为P(Partial),并将它分割成8个子立方体,对每一个子立方体进行同样的处理
对空间位置枚举表示的空间分割方法作了改进:单一体素 一>多种体素
-三种空间分割方法的比较.
数据结构简单,表示范围较广,可以表示任何物体较好的控制性:容易实现物体间的交、并、差集合运算消隐:八叉树表示可简化隐藏线(或面)的消除,因为其中形体上各元素已按空间位置排成了一定的顺序
占用大量的存储空间没有边界信息,不适于图形显示
两条路线:基于体的方法-构造表示基于面的方法-曲线曲面-边界表示
基于体的路线在CAD领域常用到,强调的是一种与实际加工过程相似的方法,如切\钻等-实体造型研究如何在计算机内定义\表示一个三维物体
基于面的路线没有体的概念,它认为所有物体都是由表面组成。它允许对物体表面直接操纵一曲面造型研究在计算机内如何描述一张曲面,如何对其形状进行交互式显示与控制。
曲面造型与实体造型相互支持相互补充。光有曲面造型,无法计算和分析物体的许多整体性质如体积\重心;光有实体造型,无法准确地描述和控制物体的外部形状。