Skip to content

[Feature] Sand (granular) simulation: loose grains that roll and pile #82

Description

@ryichando

Motivation

The solver currently handles shells, solids, and rods, but not granular media. Sand, gravel, and similar piling/pouring effects are common in animation and product visualization, and there is no way to produce them today. Adding a granular body type would let users simulate grains falling, rolling, and piling under gravity with frictional contact, while still interacting with the existing shell/solid/rod objects in the same scene.

Proposal

Add a sand body type: a collection of loose spherical grains (a faceless point cloud) that the solver advances under gravity with grain-grain, grain-wall, and grain-object frictional contact. Grains should roll, not just slide, so piles form at realistic angles of repose.

Suggested user-facing surface:

  • A SAND group / object type.
  • A way to turn a closed mesh into a particle cloud (volume seeding), or to feed a point cloud directly.
  • Tunable parameters: grain radius, particle mass, and friction.
  • Grains collide with existing shells, solids, and rods in the same scene.

Alternatives Considered

  • Approximating grains with many small solid/shell bodies. Impractical at grain counts and does not capture rolling/piling cleanly.
  • Doing granular effects in a separate package and compositing. Loses the two-way contact with the cloth/solid objects already in the scene.

Additional Context

Requested as a granular capability to complement the existing shell/solid/rod support, with two-way coupling to those object types.

Contribution Agreement

  • I confirm that any code, patches, scripts, attachments, or other copyrightable material I include in this issue may be used, reproduced, modified, and distributed by this project under the Apache License 2.0 or as otherwise described in CONTRIBUTING.md.
  • This is a feature request from the community (please provide a reference below).

Community Reference

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestworkedworked and will be closed

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions