gs.materials.FEM.Cloth#
gs.materials.FEM.Cloth simulates thin shells such as cloth and fabric using a shell-based FEM formulation in the IPC backend. Use it for garments, flags, and membranes where bending and stretching of a thin surface matter.
- class genesis.engine.materials.FEM.cloth.Cloth(*, use_visual_raycasting: bool = False, E: float = 10000.0, nu: float = 0.49, rho: float = 200.0, hydroelastic_modulus: float = 10000000.0, friction_mu: float = 0.1, contact_resistance: float | None = None, hessian_invariant: bool = False, build: Any = None, pre_compute: Any = None, update_stress: Any = None, compute_energy_gradient_hessian: Any = None, compute_energy_gradient: Any = None, compute_energy: Any = None, mu: float = 0.0, lam: float = 0.0, idx: int | None = None, thickness: float = 0.001, bending_stiffness: float | None = None, model: Literal['linear', 'stable_neohookean', 'linear_corotated'] = 'stable_neohookean') None[source]#
Cloth material for thin shell/membrane simulation using IPC.
This material is designed for cloth, fabric, and other thin flexible materials. It uses shell-based FEM formulation (NeoHookeanShell) in the IPC backend.
When used with FEMEntity, it signals to IPCCoupler that this entity should be treated as a 2D shell (cloth) rather than a 3D volumetric FEM object.
- Parameters:
E (float, optional) – Young’s modulus (Pa), controlling stiffness. Default is 1e4 (10 kPa).
nu (float, optional) – Poisson’s ratio, describing volume change under stress. Default is 0.49 (nearly incompressible).
rho (float, optional) – Material density (kg/m³). Default is 200 (typical fabric).
thickness (float, optional) – Shell thickness (m). Default is 0.001 (1mm).
bending_stiffness (float, optional) – Bending resistance coefficient. If None, no bending resistance. Default is None.
model (str, optional) – FEM material model (not used for cloth, kept for compatibility). Default is “stable_neohookean”.
friction_mu (float, optional) – Friction coefficient. Default is 0.1.
contact_resistance (float | None, optional) – IPC contact resistance/stiffness override.
Noneuses the IPC coupler global default. Default is None.
Notes
Only works with IPCCoupler enabled
Requires GPU backend
Only accepts surface mesh morphs (Mesh, etc.)
Uses FEMEntity infrastructure but simulated as 2D shell in IPC
Examples
>>> cloth = scene.add_entity( ... morph=gs.morphs.Mesh(file="cloth.obj"), ... material=gs.materials.FEM.Cloth( ... E=10e3, nu=0.49, rho=200, thickness=0.001, bending_stiffness=10.0 ... ), ... )