Important: Isaac Sim support
Note: For Isaac Sim support, the community is gradually transitioning from this forum to the Isaac Sim GitHub repository so that questions and issues can be tracked, searched, and resolved more efficiently in one place. Whenever possible, please create a GitHub Discussion or Issue there instead of starting a new forum topic.
Note: For any Isaac Lab topics, please submit your topic to its GitHub repo ( GitHub - isaac-sim/IsaacLab: Unified framework for robot learning built on NVIDIA Isaac Sim · GitHub ) following the instructions provided on Isaac Lab’s Contributing Guidelines ( Contribution Guidelines — Isaac Lab Documentation ).
Please provide all relevant details below before submitting your post. This will help the community provide more accurate and timely assistance. After submitting, you can check the appropriate boxes. Remember, you can always edit your post later to include additional information if needed.
6.0.0
5.1.0
5.0.0
4.5.0
4.2.0
4.1.0
4.0.0
4.5.0
2023.1.1
2023.1.0-hotfix.1
Other (please specify):
Operating System
Ubuntu 24.04
Ubuntu 22.04
Ubuntu 20.04
Windows 11
Windows 10
Other (please specify):
GPU Information
- Model: NVIDIA GeForce RTX 5080
- Driver Version: 580.159.03
Topic Description
A rigid body in contact with a particle set only experiences a fraction of the assigned total particle-set mass. As a result, the lifting force required does not match the assigned total particle-set mass.
Detailed Description
I am testing the interaction between a rigid-body ground plane and PBD particles in Isaac Sim / Omniverse PhysX.
Setup
-
A ground plane created from a cube mesh, with a Rigid Body, a Collider (collider preset), and mass = 1 kg.
-
Particles placed on top of the plane using the Particle Sampler from a cube mesh, which automatically creates a Particle System and a Particle Set.
-
The Particle Set is assigned a total mass = 10 kg (Mass component on the particle set).
Experiment
I apply an upward force in the +Z direction to the ground plane and measure the threshold force required to start lifting it.
What I expected
The force needed to lift the plane should be roughly constant regardless of particle count, since the total supported mass (plane 1 kg + particles 10 kg = 11 kg) does not change. I expected a lift threshold of about (1 + 10) · 9.81 ≈ 107.9 N in every case.
What actually happened
The required lifting force decreases as the particle count increases, following the pattern of plane weight + only ONE particle’s share of the total particle-set mass:
-
No particles: plane lifts at > 9.81 N →
(1 kg) · 9.81as expected. -
1 particle: plane lifts at > 108 N →
(1 + 10) · 9.81 ≈ 107.9(full 10 kg felt). -
4 particles: plane lifts at ≈ 34.33 N →
(1 + 10/4) · 9.81(only 2.5 kg of the 10 kg felt).
So the measured threshold is (m_plane + M/N) · 9.81, where M = total particle-set mass and N = particle count. The total set mass stays 10 kg, but only one particle’s worth of mass ever loads the rigid plane.
I later found that the PhysX docs define particle-set mass as computedMass = mass / numParticles, which explains the per-particle scaling. However, even accounting for that, I would still expect the sum of all particles contact reactions on the plane to equal the full 10 kg when all particles are in contact, which it does not.
Steps to Reproduce
-
Create a ground plane from a cube mesh. Apply Rigid Body + Collider (collider preset). Set its mass to 1 kg.
-
Use the Particle Sampler on a cube mesh placed above the plane to generate a Particle System and Particle Set.
-
On the Particle Set, add a Mass component and set the total mass = 10 kg.
-
Press Play and let the particles settle on the plane.
-
Apply an upward force in +Z to the ground plane and increase it until the plane starts to lift; record the threshold force.
-
Repeat steps 2–5 with different particle counts (e.g. N = 1, then N = 4), keeping the particle-set total mass fixed at 10 kg.
-
Observe that the lift threshold drops as N increases: ≈ 108 N for N = 1, but ≈ 34 N for N = 4.
Screenshots or Videos
Additional Information
What I’ve Tried
-
Spread particles into a single flat layer so that every particle is in direct contact with the plane. This did not change the result — the plane still only feels one particle’s worth of load, which rules out a stacked-column / force-chain propagation issue.
-
Replaced the particles with N small rigid bodies (e.g. 4 spheres at 2.5 kg each). This works exactly as expected: the plane requires > 108 N to lift, i.e. rigid-rigid contacts correctly sum to the full 10 kg. This isolates the issue specifically to the particle → rigid-body coupling / particle-set mass handling, not to the rigid solver or my force measurement.
-
Verified the mass formula in the docs: Omniverse Physics documentation states under “Particle-Set Mass Computation” that
computedMass = mass / numParticles, confirming the per-particle division of the assigned set mass. -
Checked precedence of mass sources (default density < scene material density < system material density < mass-component density < mass-component mass).
Additional Context
My questions for confirmation:
-
Is it by design that the total particle-set mass is divided evenly across particles (
mass / numParticles) and that this per-particle mass, rather than the summed contact load, governs the two-way coupling reaction on a rigid body? -
When many particles are simultaneously in contact with a rigid body, are their individual contact impulses summed onto the rigid body, or is the coupling effectively limited so that the rigid body only experiences a single particle’s worth of reaction?
-
What is the recommended way to make a rigid body feel the full particle-set mass independent of particle count?
-
Are there known limitations or planned improvements for particle → rigid-body load transfer fidelity?