Mesh 类

Mesh class

网格由许多 n 边多边形组成。

public class Mesh : Geometry, IEnumerable<int[]>, IMeshConvertible

构造函数

名称描述
Mesh()初始化 Mesh 类的新实例。
Mesh(string)初始化 Mesh 类的新实例。
Mesh(TextureData)使用指定的高度图构建网格,如果高度图的像素格式包含多个分量,则使用第一个(通常是红色)分量作为高度值 (z)。控制点的 x 和 y 分量为归一化像素坐标。
Mesh(TextureData, Matrix4)使用指定的高度图构建网格,如果高度图的像素格式包含多个分量,则使用第一个(通常是红色)分量作为高度值 (z)。控制点的 x 和 y 分量为归一化像素坐标。
Mesh(TextureData, bool, Matrix4)使用指定的高度图构建网格,如果高度图的像素格式包含多个分量,则使用第一个(通常是红色)分量作为高度值 (z)。控制点的 x 和 y 分量为归一化像素坐标。

属性

名称描述
CastShadows { get; set; }获取或设置此几何体是否可以投射阴影
ControlPoints { get; }获取所有控制点
Deformers { get; }获取与此几何体关联的所有变形器。
Edges { get; }获取 Mesh 的边。网格中的 Edge 是可选的,因此可能为空。
Excluded { get; set; }获取或设置在导出时是否排除此实体。
virtual Name { get; set; }获取或设置名称。
ParentNode { get; set; }获取或设置第一个父节点,如果设置了第一个父节点,则此实体将从其他父节点分离。
ParentNodes { get; }获取所有父节点,实体可以附加到多个父节点以实现几何实例化
PolygonCount { get; }获取多边形的数量
Polygons { get; }获取网格的多边形定义
Properties { get; }获取所有属性的集合。
ReceiveShadows { get; set; }获取或设置此几何体是否可以接收阴影。
Scene { get; }获取此对象所属的场景
VertexElements { get; }获取所有顶点元素
Visible { get; set; }获取或设置几何体是否可见

方法

名称描述
static DoBoolean(BooleanOperation, Mesh, Matrix4?, Mesh, Matrix4?)
AddElement(VertexElement)向当前几何体添加已有的顶点元素
CreateElement(VertexElementType)创建具有指定类型的顶点元素并将其添加到几何体中。
CreateElement(VertexElementType, MappingMode, ReferenceMode)创建具有指定类型的顶点元素并将其添加到几何体中。
CreateElementUV(TextureMapping)创建一个具有给定纹理映射类型的VertexElementUV
CreateElementUV(TextureMapping, MappingMode, ReferenceMode)创建一个具有给定纹理映射类型的VertexElementUV
CreatePolygon(int[])使用 indices 中定义的所有顶点创建一个新多边形。若要逐顶点创建多边形,请使用PolygonBuilder
CreatePolygon(int, int, int)创建一个具有3个顶点的多边形(三角形)
CreatePolygon(int[], int, int)使用 indices 中定义的所有顶点创建一个新多边形。若要逐顶点创建多边形,请使用PolygonBuilder
CreatePolygon(int, int, int, int)创建一个具有4个顶点的多边形(四边形)
FindProperty(string)查找属性。它可以是动态属性(由 CreateDynamicProperty/SetProperty 创建)或本地属性(通过其名称识别)
GetBoundingBox()获取当前实体在其对象空间坐标系中的包围盒。
GetDeformers<T>()
GetElement(VertexElementType)获取具有指定类型的顶点元素
virtual GetEntityRendererKey()获取在渲染器中注册的实体渲染器的键
GetEnumerator()获取每个内部多边形的枚举器。
GetPolygonSize(int)获取指定多边形的顶点数量。
GetProperty(string)获取指定属性的值
GetVertexElementOfUV(TextureMapping)获取具有给定纹理映射类型的VertexElementUV实例
IsManifold()检查当前网格是否为流形网格。此函数不会缓存流形计算结果。
Optimize(bool)通过消除重复的控制点来优化网格的内存使用。
Optimize(bool, float, float, float)通过消除重复的控制点来优化网格的内存使用。
RemoveProperty(Property)移除动态属性。
RemoveProperty(string)移除通过名称识别的指定属性
SetProperty(string, object)设置指定属性的值
ToMesh()从当前实体获取 Mesh 实例。
Triangulate()返回三角化后的网格
operator &计算两个网格的交集
operator |计算两个网格的并集
operator -计算两个网格的差集

示例

在网格中添加多边形:

Mesh mesh = new Mesh();
int[] indices = new int[] {0, 1, 2};
mesh.CreatePolygon(indices);

遍历网格中的所有多边形:

Mesh mesh = new Mesh();
foreach(int[] polygon in mesh)
{
    //处理多边形
}

另请参见