DREAM3D User Manual
|
Creating a surface mesh in DREAM3D can be accomplished in several ways. There are a pair of filters Multi-Material Marching Cubes (Slice at a Time) and Quick Surface Mesh that will generate a triangular based mesh of the primary Field for you. The terminology of the underlying data structures is something that the user should understand so that they can be well informed. We start out by defining a triangle T which we will call a Face. Each Triangle has 3 Vertex (V0, V1, V2) which are referred to as a Point, Vertex and/or Node interchangeably within DREAM3D.
These data structures are declared in DREAM3D in the following code:
typedef struct { Float_t pos[3] } Vert_t typedef struct { signed int verts[3] } Face_t
DREAM3D stores all the vertices in a single array. DREAM3D has the notion of a "shared vertex list" where each vertex is only listed once in the vertex list. Each Triangle is then created by referencing 3 indexes out of the vertex list to form the 3 points of the triangle.
DREAM3D filters can attach attributes to each vertex or triangle. These attributes can be scalar or vector of any numerical type. Some attributes are dependent on the winding of the triangle. From OpenGL the normal is computed via a right-hand-rule and so proper triangle winding is important when visualizing the mesh and also is important to some filters such as the Grain Face Curvature Filter. This is why there are filters such as Reverse Triangle Winding and Verify Triangle Winding in order to ensure proper winding and normal calculations.
To support the creation and manipulation of a surface mesh DREAM3D introduced a new data container type called the SurfaceMeshDataContainer
and have as its core properties the shared vertex array and triangle array. These arrays have default names given to them which are defined in DREAM3DLib/Common/Constants.h
const std::string SurfaceMeshNodes("SurfaceMeshNodes") const std::string SurfaceMeshTriangles("SurfaceMeshTriangles")
In the filter documentation the following terminology will be used:
SurfaceMeshDataContainer
SurfaceMeshDataContainer
SurfaceMeshDataContainer
Update with algorithm to generate Unique Edge Ids
See a bug? Does this documentation need updated with a citation? Send comments, corrections and additions to The DREAM3D development team
Generate Surface Mesh Connectivity
Generate Face Misorientation Coloring
Multi-Material Marching Cubes (Slice at a Time)
Moving Finite Element Smoothing
Reverse Triangle Winding Filter