Tetrahedralization

This tutorial demonstrates multiple ways to create a tetrahedralized geometry in Houdini.

Converting Surface Geometry To Tetrahedrons

Houdini provides a node called Tetrahedralize, which allows the conversion of a surface geometry into a tetrahedron geometry. This node offers different levels of customization.

Note

Input geometry for Tetrahedralize nodes but be closed (only manifold edges) and free of self-intersections.

Independently from the tool used to create tetrahedralized geometry, it is important to know which type of tetrahedralization is needed for the current object. There are two common use cases: First, achieve a tetrahedralization which consists of tetrahedrons of uniform sizes. This is used for geometry where all parts are subject to similar or equal deformation, e.g. a mattress. The second case arises when tetrahedralizing an object containing thin and thick regions. Imagine a bunny model: The ears are rather thin and subject to lots of deformations while the main body is quite round and thick. The body will most likely never be completely flattened and only the surface layer needs to undergo deformations. In order to reduce the number of tetrahedrons and increase the simulation speed, larger tetrahedrons can be applied in the core of the bunny geometry.

In either case: Try to avoid shard or splinter-like tetrahedrons. Often, a geometry might seem to be perfectly tetrahedralized at first glance, but this might only be true for the outside, while the inner tetrahedrons could be splinter or shard-shaped. In order to help detect such cases, use the Cross Section Guide Geometry. This tool can slide a cross section plane within the collision bounding box of the tetra geometry, visualizing the containing geometry at the plane. The screenshots below show a tetrahedralization containing shard/splinter-shaped tetrahedrons on the left and a uniform tetrahedralization on the right, visualized with a Plane Offset of 0.

_images/tutorial_tetrahedralization_comparison.png

Splinter tetrahedrons (left) versus a uniformly-sized tetrahedralization (right).

The following explains different ways to achieve tetrahedralizations that are well suited for simulations. They are obtained with the Tetrahedralize node and focus on examples of geometry that contain tetrahedrons of uniform volumetric size. Each screenshot shows the nodal graph in Houdini, then the tetrahedron geometry visualized with the Cross Section Guide Geometry, where the Plane Offset parameter is set to 0, while the right image shows the Cross Section geometry with a Plane Offset of 1.

Default Tetrahedralization

The simplest tetrahedralization possible is achieved by applying a Tetrahedralize node with default parameters. Clusters of that geometry are used in Tetra Setup to create a uniformly tetrahedralized mattress.

_images/tutorial_tetrahedralization_simple.png

Simplest tetrahedralization of a box.

Adapt The Volume Size

If a more refined tessellation is required, enable Quality and then choose Uniform as Max Volume Constraint in the Tetrahedralize node. Adapt the Max Volume parameter until the desired granularity is achieved.

_images/tutorial_tetrahedralization_no_remesh.png

Adapting the tetrahedron size.

The downside of this simple approach is that there is a diagonal line, similar to the default tetrahedralization. Such a line imposes a behavioral pattern and the resulting simulation shows non-uniform behavior.

Remesh The Surface

In order to remove such a pattern, add a Remesh node between the Box and the Tetrahedralize node. It is also necessary to add a Group node containing all 12 edges of the box and pass it along as Hard Edges Group, as otherwise, the box would be smoothed to a rounder shape.

_images/tutorial_tetrahedralization_remesh.png

Remesh node using a Hard Edges Group.

Adding the Group and Remesh nodes results in a tetrahedralization which is perfectly suited for simulations:

_images/tutorial_tetrahedralization_size.png

Using the Group and Remesh nodes as input for the tetrahedralization.

Note

If surface preservation is required, enable Suppress Boundary Modifications in the Tetrahedralize node.

Perfect Tetrahedrons

Using the same setup as just above, it is possible to constrain the Tetrahedralize node in a way that results in a tetrahedralization with equally sized tetrahedrons, which also have equally sized triangles as their surface.

Three pieces of background are needed:

  • Volume of a tetrahedron: \frac{a^3}{6\sqrt{2}} , where a stands for the edge length in a regular tetrahedron.
  • Radius of circumsphere: \sqrt{\frac{3}{8}}a , where a stands for the edge length in a regular tetrahedron.
  • Dihedral angle in a regular tetrahedron: arcos(\frac{1}{3})

Using scripts, that information is used in the screenshots below. Note that Houdini does not allow to set the Min Dihedral Angle larger than 60.

_images/tutorial_tetrahedralization_perfect.png

Using scripts to achieve a perfect tetrahedralization.

Uniform Tetrahedralization Via Second Input

The Tetrahedralize node takes an optional second input, which provides points that must be incorporated for the tetrahedralization. This is a way to completely customize the resulting tetrahedron layout. Such points can be provided in multiple ways, one of them being by a Points from Volume node. This node samples points from the volume contained in the closed-surface input geometry.

This method can be used to achieve a regular tetrahedralization on a grid layout. For that, start from a uniform cube.

_images/tutorial_tetrahedralization_uniform_cube.png

Using a uniform polygon mesh as base geometry.

Then attach a Points from Volume node.

_images/tutorial_tetrahedralization_uniform.png

Using a Points from Volume node with uniformly distributed points.

Per default, the points are uniformly distributed in space, therefore, the resulting tetrahedralization is uniform in size and shape.

Note

  • There are use cases where such a pattern is wanted, but for most scenarios, a randomized pattern of equally sized tetrahedrons is required as it does not induce a structural anisotropy.
  • Tetra Setup demonstrates how to group multiple simple cubes together to avoid anisotropic deformation predispositions.

If a non-uniform inner tetrahedron layout is wanted, applying jitter in the Points from Volume can be very helpful. A combination of Jitter Seed and Jitter Value achieves results as shown below.

_images/tutorial_tetrahedralization_uniform_jitter.png

Using a Points from Volume node with non-uniformly distributed points.

For further information on the Houdini Tetrahedralize nodes, please refer to their reference pages.