Rod Actors
Rod actors are part of the experimental API. Their API may change in future releases.
Rod actors represent one-dimensional elastic elements for simulating cables, ropes, hair strands, tendons, springs, and other slender deformable structures. They are well-suited for any object whose length is much greater than its cross-sectional dimensions. Their centerline geometry is supplied by a polyline shape.
Formulation
Continuous Model
Rod actors approximate Kirchhoff rods, for which cross-sections are assumed to remain orthogonal to the centerline throughout deformation. This problem is posed on a parametric curve parameterized by the mapping from coordinate to position . The curve defines the undeformed reference configuration, while the deformed position of is given by . This can be expressed in terms of a displacement field . The geometry of the curve alone cannot express torsion, which is important to the dynamics of the rod. It is augmented with a field of frame axes, , which are orthogonal to the tangent and deform to that are also unit vectors and orthogonal to . A third local frame basis vector is defined by the cross product and deforms to . The basis vectors and define an orthonormal basis of the cross-section, and are assumed to be the principal axes of its geometry, for simplicity, diagonalizing its area moment of inertia tensor. We denote normalized unit tangent basis vectors by and .
The kinetic energy of the rod is given by a translational and a rotational contribution:
where is the mass density per unit reference length, is the cross-section rotational inertia per unit reference length, and
is the temporal twist rate. This neglects gyroscopic effects, which are negligible in the thin-rod limit where the Kirchhoff-rod kinematic assumptions are appropriate. Some rod formulations neglect the rotational inertia altogether, treating twist quasi-statically, but including the given inertia term can be helpful to stabilize rods with unconstrained ends and improve conditioning of algebraic problems.
The elastic potential energy can be expressed in terms of a density per unit reference length
where the density can be decomposed into stretching, bending, and twisting terms:
where , , and are stretching, bending, and twisting strain measures. The stretching strain is the scalar axial component of the Green–Lagrange strain,
The bending strain is a vector expressing the change in binormal curvature, expressed with respect to the cross-section basis as
for , where
are the reference and current scaled binormal-curvature vectors. The twisting strain is the scalar
In terms of these strain measures, the energy density terms are then
defining a St. Venant–Kirchhoff-type model for rod deformation.
Mass and stiffness dissipation are given by the dissipation potential
where and are mass and stiffness dissipation coefficients. This potential is the natural rod generalization of the soft-actor dissipation model.
Linearized Increments
The configuration space is a nonlinear manifold. The tangent space can be parameterized by , where is a displacement increment and is a scalar twist angle increment. SuperDex Physics formulates variations of the energy with respect to this tangent space and solves for solution increments there, which are applied to the configuration manifold by a retraction map that adds the displacement to the centerline and updates directors by composing the minimum rotation pushing the tangent forward (parallel transport) with a scalar rotation by about the tangent. (The parallel transport and scalar rotation commute when the scalar rotation is about the appropriate tangent, and can be done in either order.)
Parameter Selection
The parameters , , , , , and can represent general rod responses and need not correspond to a homogeneous three-dimensional material. In the special case of a rod made of a homogeneous isotropic material with Young's modulus , shear modulus , and mass density per unit reference volume , they can be calculated from the cross-sectional area , principal area moments of inertia and , polar area moment of inertia , and torsion constant :
For circular cross-sections, ; for general cross-sections, the torsion constant differs from the polar area moment of inertia. It can be derived by solving for a Prandtl stress function, but values for common shapes are tabulated in engineering handbooks.
For the common case of a rod with a circular cross-section of radius :
| Quantity | Formula |
|---|---|
| Area | |
| Polar area moment of inertia | |
| Second area moment of inertia | |
| Torsion constant |
The stiffness-dissipation coefficient can be taken directly from a three-dimensional material, while the mass-dissipation coefficient can be tuned empirically to model effects such as drag from the surrounding medium.
Discretization
The reference centerline is discretized as a polyline with nodes , deformed positions , and one material frame per edge. Let
The first reference and current directors on edge are denoted by and , respectively; these are the discrete counterparts of the continuous fields and . The displacement is interpolated linearly, giving the constant axial strain on each edge. Translational mass is lumped to the nodes, while rotational inertia and the scalar twist degrees of freedom are associated with the edge frames.
Bending and twisting are evaluated at each interior vertex using its two adjacent edges. Define the reference and current dual lengths and , and the integrated curvature binormal function from Bergou et al. (2008)
operating on two unit vectors and . The discrete counterparts of the scaled binormal curvatures in the continuous model are
The adjacent edge frames are minimum-rotation transported to the averaged vertex tangent and averaged there to obtain the vertex directors and . The bending strains are then
For twist, let and denote the adjacent first directors transported to the averaged current tangent , with reference counterparts , , and . The discrete twist strain is
The continuous energies are integrated by multiplying the edge stretching density by and the vertex bending and twisting densities by . Because diverges as its arguments approach opposite directions, the bending energy forms a barrier against folding the centerline through , and the twisting energy similarly forms a barrier against relative twist between adjacent frames. The implementation regularizes the denominator at finite precision.
Parameters Reference
Pass RodActorParams to the experimental free function CreateRodActor / create_rod_actor; unlike standard actor types, rods are not created through a Scene method.
RodActorParams
| Parameter | Type | Default | Description |
|---|---|---|---|
name | DynamicString | "" | Actor name for identification. |
layer | DynamicString | "" | Contact layer name. |
worldFromLocal | TransformRT | Identity | Transform from local (shape) space to world space. |
shape | ShapeHandle | -- | Polyline shape defining the rod centerline. Required. |
contact | ContactParams | Default | Contact properties. |
contactElementType | ActorSegmentElementType | Default (P1Q3) | Contact sampling along centerline segments. |
material | RodMaterialParams | Default | Material properties (see below). |
colliderType | ColliderType | None | PointCloud or Auto enables a point-cloud collider. |
pointCloudCollider | PointCloudColliderParams | Default | Point-cloud collider parameters shared with shell actors. |
hasGravity | bool | true | Whether the rod is affected by scene gravity. |
useContactSkin | bool | false | Samples contact on the shape's contact skin instead of the centerline. |
contactSkinElementType | ActorBoundaryElementType | Default | Contact sampling on the contact skin. |
RodMaterialParams
See Parameter Selection for formulas relating these parameters to homogeneous three-dimensional materials.
| Parameter | Type | Default | Units | Description |
|---|---|---|---|---|
linearDensity | real | 1e-1 | kg/m | Mass per unit undeformed length . |
linearRotationalInertia | real | 1e-6 | kg·m | Rotational inertia about the rod axis per unit length . |
axialStiffness | real | 1e2 | N | Axial stiffness . |
torsionalStiffness | real | 5e-4 | N·m² | Torsional stiffness . |
flexuralStiffness | Real2 | [5e-4, 5e-4] | N·m² | Flexural stiffnesses about the two principal axes. |
massDampingCoefficient | real | 0 | 1/s | Mass-proportional damping coefficient . |
stiffnessDampingCoefficient | real | 0 | s | Stiffness-proportional damping coefficient . |
Contact
By default, a rod's colliding samples lie along its centerline. Set useContactSkin to place them on the triangular ModelData::contactSkinMesh instead and transmit contact forces to the rod DoFs through its skinning Jacobian. The contact skin and its rod embedding data are required. It is independent of the optional visual mesh, which remains rendering geometry.
Whenever the shape has a contact skin, Actor::GetContactSkinMesh and the ContactSkinNodePositions / ContactSkinNodeNormals queries expose it, regardless of useContactSkin. Rods have no surface mesh.
Rods have no collider by default. Set colliderType to PointCloud or Auto to enable a point-cloud collider, whose collider integral is taken over the centerline. See Contact Roles for the distinction between colliding samples and colliders.
Examples
- Mass on Rod Spring: hangs a rigid mass from a helical spring, exercising curved reference geometry and bend-twist coupling, and derives constraint stiffnesses from the rod's own stiffness coefficients by dimensional analysis.
- Python example —
examples/example_mass_on_rod_spring.py
- Python example —
- Choosing a Tendon Model: compares a contact-routed rod tendon with reduced spatial-tendon and linear-transmission models, including tubular contact-skin contact and rod endpoint constraints.
- Python example —
examples/example_tendon_comparison.py
- Python example —
Related Concepts
- Shapes — How to create and load polyline shapes for rod actors.
- Soft Actors — Volumetric deformable bodies (3D counterpart to 1D rods).
- Solvers — Newton solver, linear solvers, and line search methods used to integrate the rod dynamics.
- Constraints — Constraint types available for coupling rods with other actors.
- Transmissions — Reduced scalar models for tendon routing and actuation.
References
- M. Bergou, M. Wardetzky, S. Robinson, B. Audoly, and E. Grinspun, Discrete Elastic Rods, ACM SIGGRAPH 2008 Papers, Article 63, 2008.