Shell Actors
Shell actors are part of the experimental API. Their API may change in future releases.
Shell actors represent thin-shell surface elements for simulating membranes, fabrics, and other sheet-like deformable structures. Unlike soft (FEM) actors, which use volumetric tetrahedral meshes, shell actors operate on surface triangle meshes and model both in-plane stretching and out-of-plane bending.
Formulation
Continuous Model
Shell actors approximate the Kirchhoff–Love thin shell model, which is posed on a parametric surface parameterized by the mapping from coordinates to position . The surface defines the undeformed reference configuration, while the deformed position of is given by . This can be expressed in terms of a displacement field , which is treated as the unknown solution.
Kinetic energy is
Elastic potential energy is given in terms of a density per unit reference area,
The energy density is the sum of two terms:
where is the membrane energy, depending on the membrane Green–Lagrange strain , and is the bending energy, depending on a curvature strain . Expressed with respect to the standard curvilinear basis of the reference configuration, these strains are
where and are the metric tensor and second fundamental form of and and are the corresponding tensors on the deformed surface, pulled back to . We follow the Einstein summation convention, with tensor indices .
Both energy terms are isotropic St. Venant–Kirchhoff materials, with energies given by
where and are 2D Lamé parameters, and are bending stiffness coefficients, and the trace operator is defined as for a tensor .
Mass and stiffness dissipation are given by the dissipation potential
where and are mass and stiffness dissipation coefficients. This potential is the natural shell generalization of the soft-actor dissipation model.
Parameter Selection
The material parameters , , , and can represent any isotropic membrane and bending responses. However, they are not directly available in material handbooks. In the special case of a shell that is made of homogeneous isotropic material with Young's modulus , Poisson's ratio , and mass density per unit reference volume , we can calculate the shell material properties assuming a thickness :
The utility function ShellMaterialParamsFrom3dIsotropic is provided to apply these formulas. Even for materials where these assumptions do not apply (e.g., textiles consisting of woven threads), this can provide a reasonable starting point for relative orders of magnitude of membrane and bending terms. The stiffness-damping coefficient can be taken directly from a 3D material, while the mass-damping coefficient can be tuned empirically as a crude approximation of air resistance effects.
Discretization
The reference configuration is discretized as a surface triangle mesh. The degrees of freedom are the displacements of each mesh vertex (node), giving total DoFs for nodes. Concepts from discrete differential geometry are then used to define discrete counterparts of the kinematic quantities needed by the continuous model.
Displacement is interpolated with linear finite element shape functions within each triangle. This results in a constant value for over each triangle, making the discrete evaluation of straightforward. The discretization of is more complex, and depends on approximating the second fundamental form of a triangulated surface. We use a similar discrete approximation as that of Chen et al. (2021), Appendix A, which estimates the second fundamental form on each triangle from a four-triangle stencil including its three edge-neighbors. This involves first computing a mid-edge normal vector for the edge opposite each vertex of the triangle, then approximating the partial derivatives of the normal vector with respect to parametric coordinates using finite differences between midpoints of edges:
where and are the curvilinear basis vectors of the triangle's local parameterization and formulas for off-diagonal entries have been simplified using orthogonality of normals with their corresponding edges and the symmetry . Unlike Chen et al., the mid-edge normals are computed via Kelvin inversion (not normalization) of the midpoints between normal vectors of each edge's two adjacent triangles, and :
This is consistent with normalization in the limit of fine discretization of smooth surfaces, but causes the discrete curvature to diverge if the angle between two adjacent normals approaches 180 degrees. It can be seen as a generalization of the diverging -based edge energy recommended by Tamstorf and Grinspun (2013), and makes the formulation more robust against adjacent triangles folding through each other. If an edge is at a boundary of the mesh, the missing face normal is set to the normal of the adjacent face.
Parameters Reference
ShellActorParams
| Parameter | Type | Default | Description |
|---|---|---|---|
name | DynamicString | "" | Actor name for identification |
layer | DynamicString | "" | Layer name for grouping |
worldFromLocal | TransformRT | Identity | Initial world-space transform |
shape | ShapeHandle | -- | Required. Must be a TriangularMeshShape created with CreateTriMeshShape. |
material | ShellMaterialParams | See below | Material properties (membrane Lamé parameters, bending, density) |
colliderType | ColliderType | PointCloud | Must be ColliderType::PointCloud or ColliderType::None. Controls shell-to-shell contact participation. |
contact | ContactParams | Default | Contact properties for interactions with volume (non-shell) actors. Friction settings also apply to shell-shell contact. |
pointCloudCollider | PointCloudColliderParams | Default | Point-cloud collider parameters. |
hasGravity | bool | true | Whether gravity affects this actor |
contactElementType | ActorBoundaryElementType | Default | Quadrature type for contact element sampling |
ShellMaterialParams
| Parameter | Type | Default | Units | Description |
|---|---|---|---|---|
membraneLambda | real | 300 | Pa*m | 2D Lamé first parameter (plane-stress StVK, thickness-integrated) |
membraneMu | real | 400 | Pa*m | 2D Lamé second parameter (plane-stress StVK, thickness-integrated) |
bendingAlpha | real | 0.00002 | Pa*m^3 | First bending stiffness parameter |
bendingBeta | real | 0.00007 | Pa*m^3 | Second bending stiffness parameter |
density | real | 1.0 | kg/m^2 | Mass per unit surface area |
massDampingCoefficient | real | 0 | 1/s | Mass-proportional damping coefficient |
stiffnessDampingCoefficient | real | 0 | s | Stiffness-proportional damping coefficient |
Examples
- T-shirt on Plane: loads a garment triangle mesh, derives shell material parameters from three-dimensional properties, and enables point-cloud self-contact. Python example:
examples/example_tshirt_on_plane.py. - Slit Annular Ring Benchmark: solves a literature benchmark for geometrically nonlinear shell behavior while demonstrating prescribed nodal boundary conditions, external nodal forces, and dynamic relaxation toward a static reference solution. Python example:
examples/example_slit_annular_ring.py.
Related Concepts
- Soft Actors — Volumetric deformable bodies using tetrahedral FEM. Use when thickness is not negligible relative to other dimensions.
- Solvers — Details on the Newton solver, linear solvers, and line search methods used to integrate shell dynamics.
- Contact — General contact model documentation, including penalty-based contact and friction.
References
- Z. Chen, H.-Y. Chen, D. M. Kaufman, M. Skouras, and E. Vouga, Fine Wrinkling on Coarsely Meshed Thin Shells, ACM Transactions on Graphics, 40(5), Article 190, 2021.
- R. Tamstorf and E. Grinspun, Discrete Bending Forces and Their Jacobians, Graphical Models, 75(6), pp. 362–370, 2013.