3D 模型通常用于视频游戏、模拟、3D 编辑、CAD 和其他计算机图形应用程序。 3D 模型可以包含对象、角色甚至整个 3D 场景的 3D 表示,并且可以应用材质、灯光和动画以使其非常逼真。
任何基于网格的 3D 模型的核心都是顶点和面。顶点是 3D 空间中的一个点,模型将包含数千甚至数百万个顶点。没有任何面,仅由顶点组成的 3D 网格通常称为点云,如果渲染到计算机屏幕上,它将显示为 3D 对象的一般形状中的一组点。
除了顶点之外,3D 模型网格还包含面,有时称为曲面。面将顶点连接在一起以定义 3D 对象的基本形状。一个面至少由三个点组成,形成一个三角形网格;但是,某些 3D 模型格式,例如OBJ支持三个以上的面。除了面部之外,3D 模型还包含面部法线。这些只是定义面部指向方向的矢量,主要由 3D 渲染软件用来确定面部是朝前还是朝后。
渲染为点云的茶壶
茶壶渲染为线框
使用网格面渲染的茶壶
在大多数 3D 模型格式中,顶点存储在连续列表中,构成面的点被定义为该列表中的偏移量。这允许多个面使用一个顶点,而无需多次定义它。有某些较旧的 3D 格式,例如 STL,不使用这种索引方法,而是简单地为每个面指定三个顶点,忽略这可能导致的数据重复。
顶点和面定义了 3D 模型的整体大小和形状,现在我们来看看 3D 模型如何定义其外观。这就是材质发挥作用的地方。基本材质可以包含颜色,并且此材质可以应用于 3D 模型的单个顶点、面或部分。可以使用纹理图像文件定义更复杂的材质。
对将材质应用于各个顶点的支持并不普遍,仅支持某些格式,例如WRL和3MF ,能够做到这一点。使用顶点材质,可以在面上不同点的颜色之间创建平滑过渡。
大多数 3D 模型格式都支持面材质,从而可以对 3D 模型的外观进行精细控制。在大多数支持面材质的 3D 模型格式中,通常会为每个面分配一个要使用的材质的索引,以确保不会重复材质信息。这里我们有一个立方体 3D 模型的示例,第一张图像使用顶点颜色显示立方体。第二张图片显示了使用的单色表面材质,而最终图像显示了使用纹理材质的 3D 立方体。
具有顶点颜色的 3D 立方体
具有表面颜色的 3D 立方体
具有纹理面的 3D 立方体
除了描述 3D 对象构造的网格几何之外,还有一些格式,例如FBX支持动画 3D 模型;这些通常是视频游戏和动画电影中经常使用的角色模型,并且将包含各种描绘姿势的动画等。有关 3D 动画的更多信息,请参阅这个很棒的文章详细描述了动画 3D 模型。