第六章 三维造型
6.1 三维造型概述
在计算机图形学和CAD/CAM领域,物体的几何造型经历了线框模型,表面模型和实体模型三个阶段。
-
线框模型只用顶点和棱边表示物体,它没有面的信息,不能描述内部和外部,拓扑关系不明,无法进行剖切、消隐、光照、更不能用于数控加工。
-
表面模型包括两种,一种是自由曲线/曲面造型,另一种是多边形网格模型。其中多边形网格模型就是在线框的模型的基础上增加了面的信息和一些指针,有序地链接棱边,形成棱边之间包围的面,用面的集合来表示物体。
-
实体模型是最完善的模型定义,它能够表示形状的全部信息,例如物体的位置、面积、长度、体积、拓扑关联等,同时定义了物体的并,交、差集合运算和欧拉运算等。
6.2 三维造型方法
多边形网格表示
计算机图形学中的多边形网格表示是一种用于创建、模拟和渲染三维物体的技术。在这种表示中,三维物体的表面被分解为一个由多边形(通常是三角形)组成的网格。每个多边形被定义为一组顶点(vertices),这些顶点在三维空间中具有确定的坐标。
曲线曲面表示
计算机图形学中的曲线和曲面表示是用于创建和处理平滑的几何形状的技术。与多边形网格使用直线段和平面多边形来近似形状不同,曲线和曲面表示法依赖于数学方程来定义形状的精确几何形状。
细分表示
空间细分表示法指通过一些基本的空间元素来表示对象,主要包括体素表示法、八叉树表示法等。
体素表示法(Voxel Representation)是计算机图形学中用于表示三维物体的一种技术。"体素"这个词来源于"体积"(volumetric)和"像素"(pixel)的结合,可以被理解为三维空间中的像素。每个体素代表了三维空间中的一个小立方体,包含了位置和颜色信息,有时还包括材质、密度或温度等数据。
体素的一个主要缺点是它们可能需要大量的内存和存储空间,尤其是当试图表示大型场景或高分辨率的物体时。因此,研究人员和开发人员一直在寻求更有效的数据结构和算法来存储和渲染体素数据,例如八叉树(Octrees)。
构造方法
构造实体几何法
CSG(Constructive Solid Geometry),中文称为构造实体几何法,是计算机图形学中的一种技术,用于通过组合简单的几何形状(称为基元)来创建复杂的三维模型。这种方法基于布尔运算,它包括合并、交集和差集等操作。
CSG通常使用树状结构来组织形状和运算。树的叶节点代表基元,而内部节点代表布尔运算。通过遍历这个树并计算运算结果,可以构建出最终的三维模型。
然而,CSG模型的渲染可能比基于多边形网格的模型更加复杂和计算密集。为了高效渲染,可能需要将CSG模型转换成多边形网格,或者使用特定的渲染技术,如光线跟踪,直接在CSG结构上进行渲染。
扫描表示法
扫描表示法是一种创建三维几何体的技术,它通过沿着某一路径“扫描”或“挤出”一个二维形状来生成三维对象。这种方法也称为挤出(Extrusion)或扫掠(Sweeping)。扫描表示法特别适用于创建具有统一横截面的物体,例如管道、铁轨和桥梁等。
扫描表示法可以进一步分为两种类型:
- 线性扫描:二维形状直接沿着一条直线或曲线路径移动。
- 旋转扫描:二维形状围绕某一轴线旋转,这种方式常用来创建对称的三维物体,如瓶子、杯子等。
扫描表示法的优点在于其直观性和简单性,它可以快速创建规则的几何体,并且容易实现参数化设计。然而,这种方法在处理不规则或变化的横截面时可能会受到限制。
6.3 多边形网格表示
基本几何元素
构成形体的基本几何元素有点、边、面、环和体等。
点
点是三维空间中的基本单位,可以理解为一个位置坐标。在三维模型中,点作为顶点,是构成边和面的基础。在数学表示中,一个点通常由它的x、y和z坐标定义。
边
边是连接两个顶点的直线段。在多边形网格模型中,边通常是两个顶点之间的直线连接,用来定义模型的轮廓。边也是定义多边形面的边界的基本元素。
面
面是由边界定义的平面或曲面区域。在多边形网格中,一个面通常由三个或更多的边界边组成,形成一个多边形,例如三角形或四边形。面是构成模型表面的基本单元。
环
环通常指的是定义面边界的一系列边。在多边形网格中,环是顺序连接的边,形成一个封闭的循环,用来区分面的内部和外部。在某些建模系统中,环也可以用来表示面上的孔洞,即一个面可以包含一个或多个环。
体
体是由面围成的封闭三维空间。在计算机图形学中,体可以是实体(Solid),也可以是空心的。实体建模通常关注体的内部结构,而表面建模则主要关注定义形体外观的外部面。
几何信息和拓扑信息
描述图形数据要包括两部分,一部分是几何信息,用于描述物体的位置和大小;一部分是拓扑信息,用来描述点、棱边和面片之间的邻接关系。
几何信息可以用顶点坐标、长、宽等参数来表示。
拓扑关系描述起来比较复杂,在常用的数据结构中有翼边数据结构、对称数据结构和半边数据结构。
翼边数据结构
翼边数据结构是一种存储多边形网格的数据结构,其中重点是边的信息。每条边存储了与之相连的顶点、相邻的面以及其他连接的边。这种数据结构称为“翼边”是因为它将每条边视为中心,四个方向的连接(两个面和两个顶点)视为“翼”。翼边数据结构使得在网格中导航变得非常直观,但随着网格复杂度的增加,更新和维护这种结构可能会变得复杂。
对称数据结构
对称数据结构是一种改进的翼边结构,它为每条边的每个“翼”添加了反向的连接。这意味着每个边不仅存储了它连接的两个顶点和两个相邻面,还包括了从每个顶点到相邻顶点的连接,以及从每个面到相邻面的连接。这种结构使得从任何元素到达任何其他相关元素变得非常快速,但是这也意味着数据结构会变得更加复杂和冗长。
半边数据结构
半边数据结构是一种专门为边的两个“半边”分别存储信息的数据结构。在这种结构中,每条边被分成两个半边,每个半边只属于一个面。这使得半边数据结构非常适合处理具有边界的网格和非流形网格。每个半边存储了它的起始顶点、相邻的面、下一条和前一条半边,以及与之配对的另一半边。半边数据结构非常适合于迭代访问网格的所有邻接元素,如顶点环、边环和面环,并且在编辑操作中具有很高的灵活性。
6.4 曲线/曲面造型
曲线/曲面基础
数学表示方法
曲线和曲面可以用3中形式进行表示,即显式、隐式和参数表示:
- 显式表示,函数的值和自变量可以清晰分开。
- 隐式表示:函数的值和自变量不能清晰分开。
- 参数表示,曲线曲面上任意一点的坐标表示成给定参数的函数,空间曲线的参数表示公式如下:
曲线:
曲面:
插值和逼近
插值方法是指曲线穿过所有给定的控制点。逼近方法是指曲线不一定穿过给定的控制点,而是尽可能接近这些点。
参数连续性与几何连续性
参数连续性(Parametric Continuity)和几何连续性(Geometric Continuity)是衡量曲线平滑度的两个重要概念。它们描述了曲线段之间连接的光滑程度。
参数连续性用于描述曲线或曲面在数学上的连续性级别,通常用符号 C^n 表示,其中 n 是连续导数的数量。
- C^0 连续性:表示曲线或曲面在连接点是位置连续的,即没有断点。这是最基本的连续性要求。
- C^1 连续性:除了位置连续外,还要求曲线的一阶导数(即切线)在连接点是连续的。C^1 连续性保证了曲线在连接点没有尖角。
- C^2 连续性:要求曲线的一阶导数和二阶导数(即曲率)在连接点都是连续的。C^2 连续性不仅保证了曲线的光滑过渡,还确保了曲率的平滑变化,从而避免了突变。
参数连续性的要求越高,曲线或曲面的光滑程度越高。但是,随着连续性级别的提高,设计和控制曲线的复杂性也会增加。
几何连续性关注的是曲线的几何形状而非其参数表示,用符号 G^n 表示。
- G^0 连续性:与 C^0 连续性相同,要求曲线在连接点是位置连续的。
- G^1 连续性:要求曲线在连接点的切线方向是连续的,但切线的大小(即导数的幅度)可以不同。这意味着曲线可能在速度上有突变,但方向上是平滑的。
- G^2 连续性:除了切线方向的连续外,还要求曲线的曲率是连续的。这不要求曲率的导数(即二阶导数)完全相同,但曲率的变化趋势应该是平滑的。
在计算几何中,两端的曲线要显得足够光滑,则在连续点要达到C^2连续,在参数表示中常用控制点和基函数的形式:
三次样条
三次多项式方程是表示曲线段端点通过特定点且在连接处保持位置和斜率连续性的最低阶次的方程,它在灵活性和计算速度上提供了一个合理的折中方案。与更高次的多项式方程相比,三次样条只需要较少的计算量和存储空间,并且比较稳定。
Hermite插值样条
假定我们要设计一个样条,假定两个端点的曲线段参数t在区间0~1之间,通过以下参数来确定该曲线:端点值:P(0)=P_k,P(1)=O_{k+1},端点的导数值P'(0)=R_k,P'(1)=R_{k+1}。该曲线是三次样条。
评论区