![]() | TriangleMesh Class |
Namespace: DigitalRune.Geometry.Meshes
The TriangleMesh type exposes the following members.
Name | Description | |
---|---|---|
![]() | TriangleMesh |
Initializes a new instance of the TriangleMesh class.
|
![]() | TriangleMesh(Int32, Int32) |
Initializes a new instance of the TriangleMesh class with the specified
initial capacity.
|
Name | Description | |
---|---|---|
![]() | Add(ITriangleMesh) |
Adds the triangles of the specified mesh (without vertex welding).
|
![]() | Add(Triangle) |
Adds the triangle (without vertex welding).
|
![]() | Add(ITriangleMesh, Boolean) |
Adds the triangles of the specified mesh.
|
![]() | Add(Triangle, Boolean) |
Adds the triangle.
|
![]() | Add(Triangle, Boolean, Single, Boolean) |
Adds the triangle.
|
![]() | Clone |
Creates a new TriangleMesh that is a copy of the current instance.
|
![]() | ComputeNormals |
Computes the mesh normals.
|
![]() | Equals | (Inherited from Object.) |
![]() ![]() | FromModel |
Creates a triangle mesh from an XNA Model. (Only available in the
XNA-compatible build, except Silverlight.)
|
![]() | GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) |
![]() | GetTriangle |
Gets the triangle with the given index.
|
![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() | ReverseWindingOrder |
Changes the winding order of all triangles.
|
![]() | ToString | Returns a string that represents the current object. (Inherited from Object.) |
![]() | Transform |
Transforms all vertices by the given matrix.
|
![]() | WeldVertices |
Removes duplicate vertices.
|
![]() ![]() | WeldVertices(Single) |
Removes duplicate vertices.
|
Name | Description | |
---|---|---|
![]() | GetVolume |
Gets the enclosed volume of a triangle mesh.
(Defined by GeometryHelper.) |
Name | Description | |
---|---|---|
![]() | Indices |
Gets or sets the indices.
|
![]() | NumberOfTriangles |
Gets the number of triangles.
|
![]() | Tag |
Gets or sets custom information.
|
![]() | Vertices |
Gets or sets the vertices.
|
The triangles are defined using a vertex list (see Vertices) and an index list (see Indices). (NumberOfTriangles is Indices.Count / 3. It is allowed to manipulate the vertex and index lists directly, e.g. a triangle can be added by adding 3 indices to Indices.
Vertex welding: The Add(Triangle, Boolean) method and its overloads can be used to add a new triangles to the mesh. These methods can perform brute-force vertex welding to remove duplicate vertices. The brute-force approach is fast if the mesh has only a small number of vertices.
// Building a simple triangle mesh using brute-force vertex welding. TriangleMesh mesh = new TriangleMesh(); // Add triangles: mesh.AddTriangle(new Triangle(v0, v1, v2), true); mesh.AddTriangle(new Triangle(v4, v1, v0), true); ...
But vertex welding using brute-force is slow if there is a large number of vertices. Therefore, when constructing complex meshes the method WeldVertices(Single) should be used. WeldVertices(Single) implements a fast vertex welding algorithm that handles large meshes efficiently. (However, this algorithm is more resource intensive than the brute-force approach.)
// Building a complex triangle mesh using intelligent vertex welding. TriangleMesh mesh = new TriangleMesh(); // Add triangles: mesh.AddTriangle(new Triangle(v0, v1, v2), false); mesh.AddTriangle(new Triangle(v4, v1, v0), false); ... // After all vertices are added, remove duplicates. mesh.WeldVertices(0.001f);