Version: Unity 6.0 (6000.0)
语言 : 中文
网格拓扑数据
可变形网格的网格数据

网格索引数据

索引数组包含引用顶点位置数组中的元素的整数。这些整数称为索引。

Unity 使用索引将顶点位置连接到面。构成每个面的索引数量取决于网格的拓扑。

Mesh 类中,可使用 Mesh.GetIndices 获取此数据,并使用 Mesh.SetIndices 进行设置。Unity 也会将此数据存储在 Mesh.triangles 中,但此旧属性的效率较低,而且对用户不太友好。

注意:点拓扑不会创建面;相反,Unity 会在每个位置渲染一个点。所有其他网格拓扑都使用多个索引来创建面或边。

例如,对于具有索引数组的网格,而且数组包含以下值:

0,1,2,3,4,5

如果网格具有三角形拓扑,则前三个元素 (0,1,2) 将识别一个三角形,而后三个元素 (3, 4, 5) 将识别另一个三角形。顶点可以贡献的面数没有限制。这意味着同一顶点可以多次出现在索引数组中。例如,索引数组可以包含以下值:

0,1,2,1,2,3

如果网格具有三角形拓扑,则前三个元素 (0,1,2) 将识别一个三角形,而接下来的三个元素 (1,2,3) 将识别与第一个元素共享顶点的另一个三角形。

绕线顺序

索引数组中每一组顶点的顺序称为绕线顺序。Unity 会使用绕线顺序来确定面是正面还是背面,进而确定应该渲染面还是剔除面(将其排除在渲染之外)。默认情况下,Unity 会渲染正面多边形并剔除背面多边形。Unity 会使用顺时针绕线顺序,这意味着 Unity 认为索引沿顺时针方向连接的任何面都是正面。

Unity 的绕线顺序在棱柱体上可视化
Unity 的绕线顺序在棱柱体上可视化

上图演示了 Unity 如何使用绕线顺序。每个面中的顶点顺序决定了该面的法线方向,Unity 会将其与当前摄像机透视的向前方向进行比较。如果法线指向远离当前摄像机的向前方向,则为背面。近处三角形的排序为 (1, 2, 3),这是相对于当前透视的顺时针方向,因此三角形是正面。远处三角形的排序为 (4, 5, 6),从该透视角度看,这是逆时针方向,因此三角形是背面。

网格拓扑数据
可变形网格的网格数据
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961