|On this page|
Houdini’s FEM solver can be used to create high-quality simulations of elastic materials. It is specifically well suited for the realistic simulation of highly nonlinear materials with strong local volume preservation, such as organic tissues. This has applications in Character FX, for example, muscle and skin simulations.
In addition to solid objects, represented by tetrahedra (tets), Houdini’s FEM Solver allows the simulation of polygonal shells. A 3D solid and a 2D shell may even be combined into a single simulated object, for example one where the shell shares points with the surface of the solid. In addition, there is support for polylines, so that wires can be attached to objects. I combination with all this, isolated points can be simulated with FEM as well.
In the simulation network, there are two available types of FEM Objects: the FEM Solid Object node and the FEM Hybrid Object Node. The FEM Solid Object is specific to three-dimensional solids; it expects a geometry that exists entirely of tets. Tet solids can be constructed from polygons using the “Tet” Sops, which include Tet Conform and Tet Embed. The FEM Hybrid object accepts a combination of tets (3D), polygons (2D), polylines (1D) and isolated points (0D). Both the FEM Solid Object node and the FEM Hybrid Object Node are recognized and solved by a FEM Solver.
In contrast to many other solvers, Houdini’s finite element solver is resolution independent: the way an object moves and deforms is to a large degree independent of the density of primitives. In particular, the same settings on an FEM Object have similar results when applied to meshes of increasingly high resolution. There is a point at which adding more tetrahedrons to a tet mesh does not significantly affect the simulated results.
The FEM Solver is capable of solving hyperelastic materials. These are materials in which the deformation gives rise to an energy density. The energy density in turn defines the internal stresses and the FEM node (Houdini point) forces, which contribute to the motion and behavior of the simulated objects. The more an object deforms, the more energy is stored in the object.
Normally 3D models consist of just the outer shell of an object, and techniques like voronoi fracturing “fake” internal matter by creating extra surfaces between pieces when needed. In contrast, the FEM Solid Object represents an object as a solid mass of small 3D tetrahedrons (four sided pyramids). This lets the solver realistically simulate bending, elasticity, internal mass, chipping, crumbling, and shattering. The FEM Solid Object can represent stiff materials (like metal or wood), or elastic, rubbery, fluid, and floppy objects (like muscle and fat).
The complexity and the quality of the used tetrahedral mesh has a large impact on the efficiency of a simulation. Generally, the more tets, the higher the simulation time. Generally, 10 times more tets will translate to a simulation that is at least 10 times slower (possibly more than that).
For fast simulations, use as few tets as possible while still retaining enough mesh resolution to accurately represent the desired motion. The setup created by the Solid Object shelf tool should be a good starting point. You can tweak the Tet Size parameters on the Tet Embed SOP to influence the mesh resolution.
Simulations with lower-resolution tet meshes are good approximations of high-resolution tet meshes, as long as the overall shapes are similar.
In addition to the number of tets, the shapes of the tets may have a significant effect on efficiency of the simulation. Ideally, all tetrahedrons should be close to a regular tetrahedron. Tetrahedrons that are very small, very large, very flat or very thin will slow down a finite element simulation. The Tet Embed and Tet Conform tools are designed to generate good quality tetrahedrons. It is strongly recommended that you use the FEM Validate SOP to inspect the quality of a tet mesh before you attempt to simulate it using FEM.
Render-quality models tend to have much more detail than is necessary for a good simulation. Furthermore, render models may have have holes, self-intersections and typically have very poor quality tets. If directly base a tet mesh on a high-resolution model (for example using Tet Conform), it will be slow due to the large number of tets and the poor quality of these tets.
For these reasons, Houdini supports “embedding” a rendering mesh into a lower-res tet mesh. Houdini runs the simulation on the lower-res tet mesh, and then applies the simulated deformations to the render model. This affects point positions, velocities, and point/vertex normals (if the embedded geometry has the normal (
The deformation produced by the FEM Embedding feature is smooth (better than barycentric) to ensure that there are no visible discontinuities when the embedded geometry is much more detailed than the simulated geometry.
You can use the node setup created by the Solid Object shelf tool as an example for more customized embedded simulations.
It is important that the primitives of the embedded render model are completely convered by the tets of the simulation tet mesh, preferably with a small extra margin. The embedded deformation produces inferior results or artefacts otherwise.
If any embedded primitives and/or points are outside the simulated tetrahedron mesh, the FEM Solid Object node will display a warning. A primitive group
fe_outlier_primitivesand a point group
fe_outlier_pointsmay be generated on the embedded geometry, containing the primitives and points that were outside the simulated mesh.
The embedded geometry may consist of tetrahedrons and polygons or a mix of these two. If you want internal fracture surfaces, the embedded geometry must have tetrahedrons or polygons near the regions where the simulated geometry fractures.
fracturepartprimitive attribute exists on the simulation tets, an attribute with the same name may be added on the embedded geometry as well to control how the embedded geometry fractures.
Finite elements vs. position based dynamics
Position-based solvers represent each elastic object as a set of constraints, each of which involve a small number of points (e.g., four for a tetrahedron). Position-based methods such as PBD and XPBD preserve the shape and volume of objects by approximately enforcing these constraints. The solve consists of a user-specified number of passes, within which these constraints are relaxed individually. When considering meshes of increasingly high resolution, the number of constraint passes must be increased to preserve the similar level of quality.
The finite element solver is based on a physical model, which includes stresses based on strain and volume preservation. The solver works by performing a global solve of the entire nonlinear system. The user does not have to adjust the number of passes that the solver uses internally. The advantages of the finite element approach include the superior realism of the simulated results, a reduced need to iterate settings, and a strong consistency for varying mesh resolutions and substepping rates.