Mesh.SetTriangles

切换到手册
public void SetTriangles (int[] triangles, int submesh, bool calculateBounds= true, int baseVertex= 0);
public void SetTriangles (List<int> triangles, int submesh, bool calculateBounds= true, int baseVertex= 0);
public void SetTriangles (ushort[] triangles, int submesh, bool calculateBounds, int baseVertex);
public void SetTriangles (List<ushort> triangles, int submesh, bool calculateBounds, int baseVertex);

参数

triangles定义三角形的索引的列表。
submesh要修改的子网格。
calculateBounds在设置三角形之后计算网格的包围盒。这会在默认情况下进行。 如果需要使用现有包围盒并减少设置三角形的 CPU 开销,请使用 false。
baseVertex添加到所有三角形顶点索引的可选顶点偏移。

描述

为子网格设置三角形列表。

子网格表示使用单个 Material 渲染的三角形的列表。当网格与具有多个材质的 Renderer 一起使用时,应确保每个材质有一个子网格。

建议在分配顶点数组之后分配三角形数组,以便避免超出边界错误。

在使用 16 位索引缓冲区时,baseVertex 参数可以用于实现大于 65535 个顶点的网格, 只要每个子网格都适应其自己的 65535 顶点区域即可。例如,如果传递给 SetTriangles 的索引缓冲区 包含索引 10、11、12 并且 baseVertex 设置为 100000,则实际上会使用索引 100010、100011 和 100012 进行渲染。

请注意,网格在默认情况下使用 16 位 indexFormat,即,索引缓冲区中支持的最大值是 65535(即使在使用 @int[]@ 输入数据时)。若要使用较大索引缓冲区值,应先将 indexFormat 设置为 IndexFormat.UInt32

另请参阅:subMeshCountSetIndicesindexFormat


public void SetTriangles (int[] triangles, int trianglesStart, int trianglesLength, int submesh, bool calculateBounds, int baseVertex);
public void SetTriangles (List<int> triangles, int trianglesStart, int trianglesLength, int submesh, bool calculateBounds, int baseVertex);
public void SetTriangles (ushort[] triangles, int trianglesStart, int trianglesLength, int submesh, bool calculateBounds, int baseVertex);
public void SetTriangles (List<ushort> triangles, int trianglesStart, int trianglesLength, int submesh, bool calculateBounds, int baseVertex);

参数

triangles定义三角形的索引的列表。
trianglesStart要从输入数组采用的第一个元素的索引。
trianglesLength要从输入数组采用的元素数。
submesh要修改的子网格。
calculateBounds在设置三角形之后计算网格的包围盒。这会在默认情况下进行。 如果需要使用现有包围盒并减少设置三角形的 CPU 开销,请使用 false。
baseVertex添加到所有三角形顶点索引的可选顶点偏移。

描述

使用输入数组的一部分设置网格的三角形列表。

此方法的行为方式如同调用 SetTriangles,所使用的数组为整个数组的一个切片(从 trianglesStart 索引开始,长度为给定的 trianglesLength 长度)。生成的网格具有 trianglesLength 数量的顶点。生成的子网格会具有 trianglesLength/3 数量的三角形。