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);