2、计算机图形学几何图形、模型层次基本介绍
三维几何图形的表示
基本的几何图形
基本几何图形可以用数学方程
来表示,这些基本图形都有各自的特征和数学定义。例如,球体是完全对称的,无论从哪个角度看都一样;立方体的各个面都是直角,边长相等。我们可以用参数方程或其他数学方法来精确地描述这些基本图形。
多边形网格模型
多边形网格是一种常见的三维模型表示方法。它由顶点、边和面组成。顶点是三维空间中的点,边是连接两个顶点的线段,面是由三个或更多顶点组成的多边形。三角形网格是一种特殊的多边形网格,它的每个面都是三角形,因为三角形在计算机图形学中计算简单,所以三角形网格被广泛应用。
这种模型的优点是:
简单直观:网格模型由顶点、边和面组成,结构相对简单,容易理解和操作。
灵活性高:可以通过调整顶点的位置、增加或删除边和面等操作,灵活地改变模型的形状。
广泛的应用场景:在游戏开发、动画制作、虚拟现实等领域,网格模型被广泛应用。
主要缺点是精度有限,对于一些需要高精度表示的曲线和曲面,网格模型可能无法满足要求。特别是对于光滑的曲面,网格模型需要大量的三角形或多边形来逼近
NURBS模型
可以精确表示圆锥曲线和二次曲面,在工程设计和计算机辅助设计中非常重要。
它是完全精确的,显示时仍然需要用三角面片来渲染,不过随着镜头放大缩小,会自动对三角面片进行精度调整,有以下几点特性:
局部修改性:通过调整控制顶点和权因子,可以局部地修改曲线和曲面的形状,而不影响其他部分。
可扩展性:NURBS 可以通过增加控制顶点和权因子来提高曲线和曲面的复杂度,从而满足不同的设计需求,NURBS 被广泛用于创建复杂的曲线和曲面模型。例如,汽车车身、飞机机翼、工业产品的外形等都可以用 NURBS 来建模。通过调整控制顶点和权因子,可以精确地控制模型的形状,使得设计师能够创建出符合要求的模型。
体素模型
体素表示法是将三维空间分成一个个小的立方体单元,称为体素。每个体素可以用一个值来表示,例如颜色、密度等。体素表示法可以用来表示三维物体的内部结构,在医学成像、地质勘探等领域有广泛的应用。
规则性和易于处理:体素是三维空间中的规则立方体单元,数据结构简单且规则,这使得在进行诸如体渲染、体积计算、空间分析等操作时更容易实现,不需要复杂的算法来处理不规则的数据结构。
连续的空间表示:能够提供连续的空间信息,对于描述物体的内部结构和整体形状有优势。可以方便地进行空间索引和查询,例如判断一个点是否在某个体素内,或者找到包含特定点的体素。
易于进行可视化:体素模型可以直接通过体渲染的方式进行可视化,能够呈现出物体的内部结构和整体形态,效果直观
主要缺点是数据量大、分辨率受限、计算复杂度高。
点云模型
点云是由一组三维空间中的点组成的集合。点云可以通过 3D 扫描等方法获取,它可以用来表示物体的表面形状。点云的处理和表示方法包括点云滤波、点云配准、点云重建等。点云表示法在逆向工程、文物保护等领域有重要的应用。
三维模型存储格式
OBJ格式
是一种多边形网格模型
,是一种简单的文本文件格式,它可以存储多边形网格模型的顶点坐标、法线、纹理坐标等信息。OBJ 格式易于理解和编辑,被广泛应用于计算机图形学的各个领域。
FBX格式
也是一种多边形网格模型
,它可以存储多边形网格、动画、材质等信息。FBX 格式在动画和游戏制作中非常流行,因为它可以方便地在不同的软件之间进行交换和共享。
STP格式
是一种NURBS模型
,是一种用于工程设计的三维模型文件格式,它可以存储精确的几何形状和拓扑结构信息。STP 格式在机械设计、汽车制造等领域有广泛的应用。
VDB格式
是一种体素三维模型的文件格式
模型层次
物体在模型中并非孤立存在,它们通常具有一定的层次结构。这种层次结构类似于家族树,有父物体和子物体的关系。例如,在一个机械模型中,一辆汽车是一个父物体,而汽车的轮胎、车门等部件就是子物体。这样的设计不仅可以便于组织和管理,还可以方便进行继承,如对父物体进行移动或旋转操作时,子物体也会相应地改变位置和方向
物体树
物体树是一种用于表示场景中物体层次关系的数据结构。它以树状形式展示了物体之间的父子关系和嵌套关系。根节点可以代表整个场景,然后分支和叶子节点分别对应不同层次的物体。通过遍历物体树,我们可以实现对场景中所有物体的访问和操作。
模型的加载和管理
模型加载的过程是
- 文件读取,不同的文件格式有不同的结构和数据存储方式,我们需要专门的解析器来处理。
- 提取和转换数据,从文件中读取的数据可能包括顶点坐标、纹理坐标、法线等信息。这些数据需要进行提取和转换,使其能够被图形渲染系统所使用。例如,将模型的顶点坐标从模型文件中的本地坐标空间转换到场景的世界坐标空间。
- 资源分配,加载模型还需要为其分配相应的内存和其他资源,如纹理内存、顶点缓冲区等。
模型管理需要注意的点:
内存管理:由于模型可能占用大量内存,需要合理地管理内存。
状态管理:跟踪模型的各种状态,如是否可见、是否被选中、当前的渲染状态等。
版本控制和更新:在一些应用中,模型可能会有更新版本。需要有机制来处理模型的更新,确保新的模型数据能够正确地替换旧数据,并且不会影响场景中其他相关物体的运行。
2、计算机图形学几何图形、模型层次基本介绍