Material Options¶
A material selects the solver that simulates an entity and that solver's physical parameters: rigid (and
kinematic) bodies, MPM, SPH, PBD and FEM deformables, and the Eden-hosted Mochi solver. Set it as an entity's
material field. The physics guide explains each solver.
from eden.options.materials import RigidMaterialOptions
RigidMaterialOptions(gravity_compensation=1.0) # gravity compensation is a material field
A Mochi scene is all-Mochi: every entity, the ground plane included, takes a Mochi*MaterialOptions.
Material options for rigid, MPM, SPH, FEM, PBD, and Mochi entities.
Attributes¶
MaterialLike
module-attribute
¶
MaterialLike: TypeAlias = RigidMaterialOptions | KinematicMaterialOptions | MPMElasticMaterialOptions | MPMElastoPlasticMaterialOptions | MPMLiquidMaterialOptions | MPMSandMaterialOptions | SPHLiquidMaterialOptions | PBDLiquidMaterialOptions | PBDClothMaterialOptions | PBDElasticMaterialOptions | PBDParticleMaterialOptions | FEMElasticMaterialOptions | FEMClothMaterialOptions | FEMMuscleMaterialOptions | MochiRigidMaterialOptions | MochiElasticMaterialOptions | MochiShellMaterialOptions | MochiRodMaterialOptions
Union of every concrete material options class.
Classes¶
MaterialOptions
¶
Bases: ConfigurableOptions
Options for Genesis materials.
Subclasses set _genesis_material_cls to the corresponding gs.materials.*
class; to_genesis_material then forwards every declared field through.
| PARAMETER | DESCRIPTION |
|---|---|
use_visual_raycasting
|
If True, the entity's visual mesh is included in the raycaster BVH used by
Lidar / DepthCamera sensors, and by a viewer plugin casting against visual
geometry (
TYPE:
|
Source code in eden/options/options.py
Attributes¶
Methods:¶
to_genesis_material
¶
Source code in eden/options/materials.py
KinematicMaterialOptions
¶
Bases: MaterialOptions
Options for Genesis kinematic materials.
Source code in eden/options/options.py
RigidMaterialOptions
¶
Bases: MaterialOptions
Options for Genesis rigid materials.
| PARAMETER | DESCRIPTION |
|---|---|
rho
|
The density of the material used to compute mass. Default is 200.0.
TYPE:
|
friction
|
Friction coefficient within the rigid solver. If None, a default of 1.0 may be used or parsed from file.
TYPE:
|
friction_torsional
|
Torsional friction coefficient: how strongly a contact resists relative spin about its normal.
Expressed in meters — it is the effective contact-patch radius, and it bounds the resisting
torque at
TYPE:
|
friction_rolling
|
Rolling friction coefficient: how strongly a contact resists rolling about its two tangent
axes. In meters like
TYPE:
|
needs_coup
|
Whether the material participates in coupling with other solvers. Default is True.
TYPE:
|
coup_friction
|
Friction used during coupling. Must be non-negative. Default is 0.1.
TYPE:
|
coup_softness
|
Softness of coupling interaction. Must be non-negative. Default is 0.002.
TYPE:
|
coup_restitution
|
Restitution coefficient in collision coupling. Should be between 0 and 1. Default is 0.0.
TYPE:
|
sdf_cell_size
|
Cell size in SDF grid in meters. Defines grid resolution. Default is 0.005.
TYPE:
|
sdf_min_res
|
Minimum resolution of the SDF grid. Must be at least 16. Default is 32.
TYPE:
|
sdf_max_res
|
Maximum resolution of the SDF grid. Must be >= sdf_min_res. Default is 128.
TYPE:
|
gravity_compensation
|
Compensation factor for gravity. 1.0 cancels gravity. Default is 0.
TYPE:
|
coup_type
|
Coupling mode for this entity. Only used by the IPC coupler. Requires
TYPE:
|
coup_links
|
Link names to include in coupling. When set, only the named links participate
in coupling; other links are excluded. Only supported with needs_coup=True and
TYPE:
|
enable_coup_collision
|
Whether coupler collision is enabled for this entity's links. Only used by the IPC coupler.
Unlike
TYPE:
|
coup_collision_links
|
Link names whose geoms participate in coupler collision. Only used by the IPC coupler.
Only effective when
TYPE:
|
contact_resistance
|
IPC coupling contact resistance/stiffness override for this entity.
TYPE:
|
Source code in eden/options/options.py
Attributes¶
friction_torsional
class-attribute
instance-attribute
¶
friction_torsional: float | None = Field(default=None, ge=0.0)
friction_rolling
class-attribute
instance-attribute
¶
friction_rolling: float | None = Field(default=None, ge=0.0)
coup_type
class-attribute
instance-attribute
¶
coup_type: Literal['two_way_soft_constraint', 'external_articulation', 'ipc_only'] | None = None
coup_collision_links
class-attribute
instance-attribute
¶
MPMElasticMaterialOptions
¶
Bases: MaterialOptions
Options for Genesis MPM elastic materials.
| PARAMETER | DESCRIPTION |
|---|---|
E
|
Young's modulus. Default is 3e5.
|
nu
|
Poisson ratio. Default is 0.2.
|
rho
|
Density (kg/m^3). Default is 1000.
|
lam
|
The first Lame's parameter. Default is None, computed by E and nu.
|
mu
|
The second Lame's parameter. Default is None, computed by E and nu.
|
sampler
|
Particle sampler ('pbs', 'regular', 'random'). Note that 'pbs' is only supported on Linux x86 for now. Defaults to 'pbs' on supported platforms, 'random' otherwise.
|
model
|
Stress model ('corotation', 'neohooken'). Default is 'corotation'.
|
Source code in eden/options/options.py
Attributes¶
MPMElastoPlasticMaterialOptions
¶
Bases: MaterialOptions
Options for an MPM elasto-plastic material.
| PARAMETER | DESCRIPTION |
|---|---|
E
|
Young's modulus. Default is 1e6.
|
nu
|
Poisson ratio. Default is 0.2.
|
rho
|
Density (kg/m^3). Default is 1000.
|
lam
|
The first Lame's parameter. Default is None, computed by E and nu.
|
mu
|
The second Lame's parameter. Default is None, computed by E and nu.
|
sampler
|
Particle sampler ('pbs', 'regular', 'random'). Note that 'pbs' is only supported on Linux x86 for now. Defaults to 'pbs' on supported platforms, 'random' otherwise.
|
yield_lower
|
Lower bound for the yield clamp (ignored if using von Mises). Default is 2.5e-2.
|
yield_higher
|
Upper bound for the yield clamp (ignored if using von Mises). Default is 4.5e-2.
|
use_von_mises
|
Whether to use von Mises yield criterion. Default is True.
|
von_mises_yield_stress
|
Yield stress for von Mises criterion. Default is 10000.
|
Source code in eden/options/options.py
Attributes¶
MPMLiquidMaterialOptions
¶
Bases: MaterialOptions
Options for an MPM liquid material.
| PARAMETER | DESCRIPTION |
|---|---|
E
|
Young's modulus. Default is 1e6.
|
nu
|
Poisson ratio. Default is 0.2.
|
rho
|
Density (kg/m^3). Default is 1000.
|
lam
|
The first Lame's parameter. Default is None, computed by E and nu.
|
mu
|
The second Lame's parameter. Default is None, computed by E and nu.
|
viscous
|
Whether the liquid is viscous. Simply set mu to zero when non-viscous. Default is False.
|
sampler
|
Particle sampler ('pbs', 'regular', 'random'). Note that 'pbs' is only supported on Linux x86 for now. Defaults to 'pbs' on supported platforms, 'random' otherwise.
|
Source code in eden/options/options.py
Attributes¶
MPMSandMaterialOptions
¶
Bases: MaterialOptions
Options for an MPM sand (granular) material.
| PARAMETER | DESCRIPTION |
|---|---|
E
|
Young's modulus. Default is 1e6.
|
nu
|
Poisson ratio. Default is 0.2.
|
rho
|
Density (kg/m^3). Default is 1000.
|
lam
|
The first Lame's parameter. Default is None, computed by E and nu.
|
mu
|
The second Lame's parameter. Default is None, computed by E and nu.
|
friction_angle
|
Internal friction angle of the granular material (degrees). Default is 45.
|
sampler
|
Particle sampler ('pbs', 'regular', 'random'). Note that 'pbs' is only supported on Linux x86 for now. Defaults to 'pbs' on supported platforms, 'random' otherwise.
|
Source code in eden/options/options.py
Attributes¶
SPHLiquidMaterialOptions
¶
Bases: MaterialOptions
Options for an SPH liquid material.
| PARAMETER | DESCRIPTION |
|---|---|
rho
|
The rest density (kg/m^3) the material tends to maintain in equilibrium. Default is 1000.
|
stiffness
|
State stiffness (N/m^2): how pressure increases with compression. Default is 50000.0.
|
exponent
|
State exponent: how nonlinearly pressure scales with density. Larger values mean a stiffer response to compression. Default is 7.0.
|
mu
|
The viscosity of the liquid. Default is 0.005.
|
gamma
|
The surface tension of the liquid: how strongly the material "clumps" together at boundaries. Default is 0.01.
|
sampler
|
Particle sampler ('pbs', 'regular', 'random'). 'pbs' is only supported on Linux x86. Default is 'regular': SPH is sensitive to the initial particle distribution, which sets the initial density and pressure fields. Irregular samplers ('pbs', 'random') introduce local density fluctuations at initialization, which cause large spurious pressure forces and can make the simulation unstable or diverge.
|
Source code in eden/options/options.py
Attributes¶
PBDLiquidMaterialOptions
¶
Bases: MaterialOptions
Options for Genesis PBD (Position-Based Dynamics) liquid materials.
Particle-based fluid simulated with the PBD solver. The PBD solver's
simulation domain (lower_bound/upper_bound) and iteration counts are
configured via EnvOptions.pbd_options (a gs.options.PBDOptions). If
left unset, genesis uses its PBD defaults (a (-100, -100, 0)..(100,
100, 100) domain) — set it to bound the domain to the working volume.
Position/orientation are baked into the morph at creation time
(set_pos/set_quat raise on the resulting entity).
| PARAMETER | DESCRIPTION |
|---|---|
rho
|
Rest density of the fluid. Default is 1000.0.
TYPE:
|
sampler
|
Particle sampler ('pbs', 'random', 'regular'). 'pbs' is only supported on Linux x86. Default is 'pbs'.
TYPE:
|
density_relaxation
|
Relaxation factor for the density (incompressibility) constraint. Larger values enforce incompressibility more strongly per iteration. Default is 0.2.
TYPE:
|
viscosity_relaxation
|
Relaxation factor for the XSPH viscosity constraint. Larger values make the fluid more viscous. Default is 0.01.
TYPE:
|
Source code in eden/options/options.py
Attributes¶
PBDClothMaterialOptions
¶
Bases: MaterialOptions
Options for Genesis PBD (Position-Based Dynamics) cloth materials.
Thin-shell cloth simulated as a particle/edge network with the PBD solver.
Built from a triangle mesh morph (e.g. EntityOptions(file="meshes/cloth.obj")).
The PBD solver iteration counts are configured via EnvOptions.pbd_options
(genesis defaults are used if unset). Individual particles can be pinned via the
underlying Genesis entity's fix_particles / find_closest_particle
(accessible through entity.entity).
| PARAMETER | DESCRIPTION |
|---|---|
rho
|
Surface density of the cloth. Default is 4.0.
TYPE:
|
static_friction
|
Static friction coefficient for particle contact. Default is 0.15.
TYPE:
|
kinetic_friction
|
Kinetic friction coefficient for particle contact. Default is 0.15.
TYPE:
|
stretch_compliance
|
Compliance (inverse stiffness) of the stretch constraint. Smaller values make the cloth less stretchy. Default is 1e-7.
TYPE:
|
bending_compliance
|
Compliance (inverse stiffness) of the bending constraint. Smaller values make the cloth resist folding more. Default is 1e-5.
TYPE:
|
stretch_relaxation
|
Relaxation factor for the stretch constraint per iteration. Default is 0.3.
TYPE:
|
bending_relaxation
|
Relaxation factor for the bending constraint per iteration. Default is 0.1.
TYPE:
|
air_resistance
|
Air drag applied to the cloth particles. Default is 0.001.
TYPE:
|
Source code in eden/options/options.py
Attributes¶
PBDElasticMaterialOptions
¶
Bases: MaterialOptions
Options for Genesis PBD (Position-Based Dynamics) elastic (soft-body) materials.
Volumetric soft body simulated with the PBD solver, governed by stretch,
bending, and volume-preservation constraints. The PBD solver is configured
via EnvOptions.pbd_options (genesis defaults are used if unset).
| PARAMETER | DESCRIPTION |
|---|---|
rho
|
Material density. Default is 1000.0.
TYPE:
|
static_friction
|
Static friction coefficient for particle contact. Default is 0.15.
TYPE:
|
kinetic_friction
|
Kinetic friction coefficient for particle contact. Default is 0.15.
TYPE:
|
stretch_compliance
|
Compliance (inverse stiffness) of the stretch constraint. Default is 0.0.
TYPE:
|
bending_compliance
|
Compliance (inverse stiffness) of the bending constraint. Default is 0.0.
TYPE:
|
volume_compliance
|
Compliance (inverse stiffness) of the volume-preservation constraint. Default is 0.0.
TYPE:
|
stretch_relaxation
|
Relaxation factor for the stretch constraint per iteration. Default is 0.1.
TYPE:
|
bending_relaxation
|
Relaxation factor for the bending constraint per iteration. Default is 0.1.
TYPE:
|
volume_relaxation
|
Relaxation factor for the volume constraint per iteration. Default is 0.1.
TYPE:
|
Source code in eden/options/options.py
Attributes¶
PBDParticleMaterialOptions
¶
Bases: MaterialOptions
Options for Genesis PBD (Position-Based Dynamics) free-particle materials.
Bare particles driven by the PBD solver with no internal constraints (collide
and respond to gravity only). The PBD solver is configured via
EnvOptions.pbd_options (genesis defaults are used if unset).
| PARAMETER | DESCRIPTION |
|---|---|
rho
|
Material density. Default is 1000.0.
TYPE:
|
sampler
|
Particle sampler ('pbs', 'random', 'regular'). 'pbs' is only supported on Linux x86. Default is 'pbs'.
TYPE:
|
Source code in eden/options/options.py
FEMElasticMaterialOptions
¶
Bases: MaterialOptions
Options for Genesis FEM elastic materials.
Used for volumetric deformable bodies (tetrahedralized meshes) simulated with the FEM solver. When an IPC coupler is active, these entities participate in penetration-free frictional contact.
| PARAMETER | DESCRIPTION |
|---|---|
E
|
Young's modulus controlling stiffness. Default is 1e6.
TYPE:
|
nu
|
Poisson ratio describing volume change under stress. Default is 0.2.
TYPE:
|
rho
|
Material density (kg/m^3). Default is 1000.
TYPE:
|
model
|
Constitutive model ('linear', 'stable_neohookean', 'linear_corotated'). Default is 'linear'.
TYPE:
|
friction_mu
|
Friction coefficient. Default is 0.1.
TYPE:
|
contact_resistance
|
IPC contact resistance/stiffness override. None uses the coupler global default. Default is None.
TYPE:
|
Source code in eden/options/options.py
FEMClothMaterialOptions
¶
Bases: MaterialOptions
Options for Genesis FEM cloth (thin shell) materials.
Used for cloth, fabric, and thin flexible surfaces simulated as 2D shells in the IPC backend. Requires an IPC coupler and GPU backend.
| PARAMETER | DESCRIPTION |
|---|---|
E
|
Young's modulus (Pa) controlling stiffness. Default is 1e4.
TYPE:
|
nu
|
Poisson ratio. Default is 0.49 (nearly incompressible).
TYPE:
|
rho
|
Material density (kg/m^3). Default is 200.
TYPE:
|
thickness
|
Shell thickness in meters. Default is 0.001 (1mm).
TYPE:
|
bending_stiffness
|
Bending resistance. None disables bending. Default is None.
TYPE:
|
model
|
FEM material model. Default is 'stable_neohookean'.
TYPE:
|
friction_mu
|
Friction coefficient. Default is 0.1.
TYPE:
|
contact_resistance
|
IPC contact resistance/stiffness override. None uses the coupler global default. Default is None.
TYPE:
|
Source code in eden/options/options.py
FEMMuscleMaterialOptions
¶
Bases: MaterialOptions
Options for Genesis FEM muscle materials.
Extends FEM elastic material with muscle activation support for soft-body actuation.
| PARAMETER | DESCRIPTION |
|---|---|
E
|
Young's modulus. Default is 1e6.
TYPE:
|
nu
|
Poisson ratio. Default is 0.2.
TYPE:
|
rho
|
Material density (kg/m^3). Default is 1000.
TYPE:
|
model
|
Constitutive model. Default is 'linear'.
TYPE:
|
n_groups
|
Number of muscle groups. Default is 1.
TYPE:
|
friction_mu
|
Friction coefficient. Default is 0.1.
TYPE:
|
contact_resistance
|
IPC contact resistance/stiffness override. Default is None.
TYPE:
|
Source code in eden/options/options.py
MochiMaterialOptions
¶
Bases: MaterialOptions
Base of every Mochi (implicit multi-physics solver) material.
Not usable directly — pick :class:MochiRigidMaterialOptions, :class:MochiElasticMaterialOptions,
:class:MochiShellMaterialOptions or :class:MochiRodMaterialOptions. A scene holding one Mochi
entity must hold only Mochi (and kinematic) entities: the MochiSolver assembles every body and
the penalty contact into one Newton system and refuses to run beside another physics solver.
The shared contact parameters below are combined per contact pair as documented on each field.
| PARAMETER | DESCRIPTION |
|---|---|
use_visual_raycasting
|
See :class:
TYPE:
|
Source code in eden/options/options.py
MochiRigidMaterialOptions
¶
Bases: MochiMaterialOptions
Options for Mochi rigid and articulated bodies (eden.engine.solvers.mochi.materials.Rigid).
Deliberately not a :class:RigidMaterialOptions: the Mochi solver has no coupler, so the
coup_* / gravity_compensation / needs_coup fields do not exist here (Genesis rejects
them on Mochi.Rigid; gravity is switched per body with has_gravity). Entities carrying
this material build as :class:~eden.entities.mochi.MochiRigidEntity, which keeps the whole
rigid-entity API (DOFs, PD control, IK, attach_to) minus force ranges, friction loss and
constraint-solver parameters, which the solver never reads.
| PARAMETER | DESCRIPTION |
|---|---|
use_visual_raycasting
|
See :class:
TYPE:
|
rho
|
Density (kg/m^3) used to derive mass and inertia when the asset gives none; overrides per-geometry densities declared in the asset. Default is 1000.0.
TYPE:
|
collider_type
|
How other bodies collide against this one: an analytic plane/sphere/box, a signed
distance field of the mesh, or nothing.
TYPE:
|
sdf_cell_size
|
Cell size (m) of the SDF grid built for
TYPE:
|
sdf_min_res
|
Minimum SDF grid resolution. Default is 32.
TYPE:
|
sdf_max_res
|
Maximum SDF grid resolution. Default is 128.
TYPE:
|
Source code in eden/options/options.py
MochiElasticMaterialOptions
¶
Bases: MochiMaterialOptions
Options for Mochi volumetric soft bodies (eden.engine.solvers.mochi.materials.Elastic).
Linear tetrahedra with a stable neo-Hookean, Saint Venant-Kirchhoff or linear material, solved
fully implicitly together with contact. Box / Sphere / Cylinder / Mesh morphs are tetrahedralized
by tetgen (pass morph={"maxvolume": ..., "nobisect": False} on the primitive to refine); a
.node (tetgen) or .vtk (legacy ASCII unstructured grid) file is read as-is. Entities
build as :class:~eden.entities.mochi.MochiSoftEntity.
| PARAMETER | DESCRIPTION |
|---|---|
use_visual_raycasting
|
See :class:
TYPE:
|
E
|
Young's modulus (Pa). Default is 1e5.
TYPE:
|
nu
|
Poisson ratio. Default is 0.45.
TYPE:
|
rho
|
Density (kg/m^3). Default is 1000.0.
TYPE:
|
model
|
Constitutive model. Default is "stable_neohookean".
TYPE:
|
mass_damping
|
Rayleigh mass-proportional damping (1/s). Default is 0.0.
TYPE:
|
stiffness_damping
|
Rayleigh stiffness-proportional damping (s). Default is 0.0.
TYPE:
|
collider_type
|
How other bodies collide against this body: a signed distance field of the rest shape queried through the deformed tetrahedra (no contact skin — a few millimeters of interpenetration remain), or nothing. Default is "auto".
TYPE:
|
Source code in eden/options/options.py
MochiShellMaterialOptions
¶
Bases: MochiMaterialOptions
Options for Mochi thin shells / cloth (eden.engine.solvers.mochi.materials.Shell).
The surface triangles of a Mesh (or primitive) morph become a Saint Venant-Kirchhoff membrane
plus a Koiter-type bending term, both thickness-integrated from E, nu, rho and
thickness unless overridden. Shells act as colliders through spheres of collider_radius
at their vertices, which only other point-cloud bodies (cloths, rods) and — with
self_contact — the shell itself feel; rigid bodies and solids touch the shell through its own
contact samples. Consistently wound meshes are required. Light cloth has little inertia: use
penalty_coefficient=1e7. Entities build as :class:~eden.entities.mochi.MochiSoftEntity.
| PARAMETER | DESCRIPTION |
|---|---|
use_visual_raycasting
|
See :class:
TYPE:
|
E
|
Young's modulus (Pa). Default is 1e4.
TYPE:
|
nu
|
Poisson ratio. Default is 0.3.
TYPE:
|
rho
|
Density (kg/m^3); areal density is
TYPE:
|
thickness
|
Shell thickness (m). Default is 1e-3.
TYPE:
|
membrane_mu
|
Membrane shear stiffness override; None derives
TYPE:
|
membrane_lambda
|
Membrane Lame lambda override (plane stress); None derives it. Default is None.
TYPE:
|
bending_alpha
|
Bending stiffness override,
TYPE:
|
bending_beta
|
Bending stiffness override,
TYPE:
|
mass_damping
|
Rayleigh mass-proportional damping (1/s). Default is 0.0.
TYPE:
|
stiffness_damping
|
Rayleigh stiffness-proportional damping (s). Default is 0.0.
TYPE:
|
collider_type
|
Whether the shell carries vertex spheres other point-cloud bodies collide with. Default is "auto".
TYPE:
|
collider_radius
|
Radius (m) of the vertex spheres. Default is 1e-2.
TYPE:
|
self_contact
|
Let the shell's samples collide with its own vertex spheres. Default is False.
TYPE:
|
self_contact_exclusion_ratio
|
Vertices within
TYPE:
|
Source code in eden/options/options.py
MochiRodMaterialOptions
¶
Bases: MochiMaterialOptions
Options for Mochi discrete elastic rods (eden.engine.solvers.mochi.materials.Rod).
A Kirchhoff rod (stretch, bend, twist; no shear) on the polyline of a
:class:~eden.options.entities.RodOptions morph — the only morph this material accepts. The
five stiffness / inertia quantities derive from E, nu, rho and the rod radius unless
given explicitly. Clamp a rod by fixing its first two nodes. Rods collide through samples on
their centerline and act as colliders through node spheres of the rod radius, which only other
point-cloud bodies (and the rod itself under self_contact) feel. Entities build as
:class:~eden.entities.mochi.MochiSoftEntity.
| PARAMETER | DESCRIPTION |
|---|---|
use_visual_raycasting
|
See :class:
TYPE:
|
E
|
Young's modulus (Pa). Default is 1e7.
TYPE:
|
nu
|
Poisson ratio (shear modulus
TYPE:
|
rho
|
Density (kg/m^3). Default is 1000.0.
TYPE:
|
axial_stiffness
|
TYPE:
|
flexural_stiffness
|
TYPE:
|
torsional_stiffness
|
TYPE:
|
linear_density
|
TYPE:
|
linear_rotational_inertia
|
TYPE:
|
mass_damping
|
Rayleigh mass-proportional damping (1/s). Default is 0.0.
TYPE:
|
stiffness_damping
|
Rayleigh stiffness-proportional damping (s). Default is 0.0.
TYPE:
|
collider_type
|
Whether the rod carries node spheres other point-cloud bodies collide with. Default is "auto".
TYPE:
|
self_contact
|
Let the rod's samples collide with its own node spheres. Default is False.
TYPE:
|
self_contact_exclusion_ratio
|
Nodes within
TYPE:
|