Tetrahedralize generates tetrahedral meshes given a set of 3D points and polyhedral meshes. It also refines existing tetrahedral meshes and can detect intersecting polygons that thwart tetrahedralization.
A tetrahedral mesh consists of tetrahedron primitives. A tetrahedron is a four-sided shape where each side is triangular. The plural of tetrahedron is tetrahedra or tetrahedrons, and it’s abbreviated as “tet”.
This operator is a low level tool that creates tetrahedralizations from closed and self-intersection free inputs. It is used inside Tet Conform and Tet Embed to create solid repesetnations of surface meshes.
Tetrahedral meshes are required for various dynamic solvers such as the finite element solver for soft body dynamics. A generated tetrahedral mesh can also be used to generate realistic fractures.
The Tetrahedralize SOP allows you to create a constrained delaunay tetrahedralization (i.e. in Conform to Surface Mode) for an input polygon mesh. This roughly means that the interior of the input surface mesh is filled with nicely shaped tetrahedrons that fit exactly to the existing polygons and don’t cut through the polygons.
In addition, this operator is useful for building a graph connecting nearby points together in space. It is also useful for building convex hulls.
Use Tet Conform instead of this node to create conforming tetrahedralizations from surface meshes. This node is low level and cannot handle holes and self-intersections in the input surface, however it is sufficient for creating tetrahedralizations from points.
Although there is no direct option to control the number of generated tetrahedra, you can control their sizes. Use the Sizing options to control the sizes of individual tetrahedra. Naturally, smaller size parameters will produce more tetrahedra.
The secondary input provides a way to add internal point constraints to the resulting tetrahedron mesh.
The point group to use for tetrahedralization. Only primitives whose points are in the given point group are used as constraints or tetrahedra for refinement.
Determines which pieces of the input to treat individually. This allows Tetrahedralize to process pieces separately, which is useful when fracturing.
Tetrahedralize the input as a whole.
Automatically determine pieces of the input, and tetrahedralize each piece individually.
Use Piece Attribute and tetrahedralize each group of polygons with the same attribute value as one.
Remove Unused Points
Remove duplicate points and other points not used in the tetrahedralization. Only points in the source group are considered.
Select what you would like tetrahedralize to do.
Conform to Surface
Generate a tetrahedral mesh from a closed and self-intersection free polyhedral mesh. This is the standard way to use this node.
Given a tetrahedral mesh in the input, this option will refine the existing mesh. Together with the Quality controls, you can improve the quality of an existing mesh.
Convex Hull (deprecated)
This forms a convex hull of the object, the smallest convex shape that contains all the points. In this mode, only input points are considered, polygons in the input are ignored.
Generating a convex hull this way will never scale as well as a dedicated convex hull algorithm. So if you have lots of points, such as more than 250,000 it will start to slow down. The Shrinkwrap SOP should be used instead.
Also, it can only return a convex hull for sets of points with valid tetrahedralization. So no primitives will be returned for things such as points on a 2D plane. However, you can special case these cases and for example use Triangulate2D followed by Divide and turn on Remove Shared Edges.
This mode skips tetrahedralization, and simply attempts to detect any intersections in the input geometry, which will otherwise cause problems when tetrahedralizing.
Each point is connected to its neighbor in the Delaunay Tetrahedralization. This point connectivity graph is very useful for determining which points are adjacent. The set of connected points are those which have some third point that they are both closer to than any other point.
Constructs a mesh consisting of individual tetrahedra.
Constructs a triangle for each tetrahedron face on the surface.
Polygons and Tetrahedra
Outputs triangles and tetrahedra as in the above two outputs, but together.
Whether to keep the original primitives.
Avoid Boundary Modifications
Prevents any changes to the input surface. Only new internal points (Steiner points) are allowed.
Attribute Transfer Control
At Most One Surface Face per Tet
This option ensures that each tet contributes at most one triangular face to the surface of the tet mesh; distinct triangles on the tet mesh surface cannot be faces of a single tet. This option is useful when you want to preserve vertex attributes such as uv coordinates on a tet mesh.
Propagate Primitive Attributes Away from Normals
Copy attribute values from the surface polygons to tetrahedra on the side opposite to the polygon normal. This, along with the Propagate Primitive Attributes to Internal Tetrahedra toggle, allows you to get attributes onto output tetrahedra within a particular closed region, by placing attributes onto input polygons.
Propagate Primitive Attributes to Internal Tetrahedra
Interpolate attribute values from the surface polygons to output tetrahedra inside the mesh (not just to surface tetrahedra, which happens irrespective of this toggle).
Turns on the controls for this section and allows you to control the quality of the resulting tetrahedron mesh.
Max Radius-Edge Ratio
This option specifies a constraint on each generated tetrahedron. In particular, the radius of the circumscribed sphere of each tetrahedron, divided by the length of the shortest-edge of the same tetrahedron must be smaller than the value given in this parameter. This is a heuristic that helps generate tetrahedrons that are as close as possible to being equilateral.
Min Dihedral Angle
This parameter specifies a constraint on the minimum angle allowed between each two faces of each tetrahedron in the output mesh. Together with the Max Radius-Edge Ratio, this constraint forces out a good quality generated tetrahedral mesh.
Target Size Attribute
The name of a point attribute given to points in the input geometry, which specifies the desired lengths of edges in the output mesh. Each edge in the output mesh aims to conform to this size attribute given by the nearest input points.
The uniform maximum size constraint. This constrains the maximum volume of all output tetrahedra by
V = a*a*a/(6*sqrt(2)) where
V is volume and
a is the given size.
Max Size Attribute
The primitive attribute used to constrain the size of each tetrahedra on the output. This constrains the maximum volume of each output tetrahedron by
V = a*a*a/(6*sqrt(2)) where
V is volume and
a is the given size.
These options help prevent long tetrahedralizations. Use these to premptively stop mesh improvement when quality constraints are too restrictive.
Max Repair Iterations
Maximum number of iterations used internally by the Delaunay Tetrahedralization algorithm. This forces this operator to finish tetrahedralizing a mesh, even if the resulting mesh may not fully satisfy all the given quality constraints.
Max Added Points
Maximum number of internal points allowed to be inserted into the tetrahedron mesh on the output. This may prevent the resulting mesh to satisfy all the given quality constraints.
Mesh optimization further improves the mesh quality after a mesh as been generated.
Number of iterations the algorithm takes to improve the quality of the mesh. A larger number may slow down tetrahedralization.
Allow edge and face flips between neighboring tetrahedra.
Allow vertex smoothing.
Allow inserting and/or deleting vertices after a mesh has been generated to improve quality.
This control provides various workflow options, by changing how this node behaves when a piece or components (as determined by the Batch option) fails to tetrahedralize.
Remove Failed Components
Ignore any pieces that failed to tetrahedralize. Give a warning if something went wrong but no other indication of failure.
Keep Failed Components
Keep failed components for debugging purposes, such that the user may chose to mark these with a color and/or add them to a group.
Fail on Error
Let the node \“error out\” as soon as a single piece fails to tetrahedralize. This is the least forgiving option.
An internal random number generator uses this seed to generate random numbers. Changing this value may produce a slightly different result in complex tetrahedralizations.
An internal tolerance used to determine if two neighboring triangles are coplanar for edge flips, and other proximity tests in the algorithm. It may be useful to change this tolerance in case the input contains prohibitively small features.
Dihedral Angle Tolerance
Tetrahedralization will fail when the input mesh contains a dihedral angle smaller than this tolerance. Increasing this value helps prevent poorly formed inputs from producing tetrahedralizations that are bad for simulation. Decreasing this value makes this node more permissive.
Sometimes the tetrahedralization algorithm encounters an unrecoverrable problem. This parameter controls how many times this node retries to tetrahedralize by perturbing the input points or adjusting the Random Seed. This node warns when tetrahedralization fails at the first attempt.
Invalid Prim Color
The color to give components that couldn’t be tetrahedralized.
Invalid Prim Group
The group created on the output that contains all primitives which were part of components that couldn’t be tetrahedralized.