Particle systems in isaacsim 5.0

5.1.0

Operating System

Windows 11

GPU Information

  • Model: rtx2060
  • Driver Version:

No particle system extension

I am unable to find the particle system extension in isaacsim 5.0. how do I simulate particles in this new version? please help!

Hi, Isaac Sim supports PhysX particle-based simulation for fluids, cloth, and granular materials. Here’s how to set it up:

1: Enable PhysX Particle System

First, enable the particle simulation feature in your settings:

import carb.settings 
settings = carb.settings.get_settings()
settings.set("/physics/physxParticles", True)

2: Create a Particle System
Create a particle system that will manage particle simulation parameters:

from isaacsim.core.prims import SingleParticleSystem

_Create particle_ system at specified path
particle_system = SingleParticleSystem(
    prim_path="/World/ParticleSystem",
    name="my_particle_system",
    particle_system_enabled=True,
    contact_offset=0.05,           _Collision detection_ distance
    rest_offset=0.04,              # Particle spacing at rest
    particle_contact_offset=0.04,  # Particle-particle collision distance
    solid_rest_offset=0.02,        # Solid particle spacing
    fluid_rest_offset=0.03,        # Fluid particle spacing
    solver_position_iteration_count=16,  # Solver iterations for stability
    max_depenetration_velocity=100.0,    # Max velocity for collision response
    max_velocity=1000.0            # Maximum particle velocity
)

_Initialize the_ system
particle_system.initialize()

3: Create Particle Material
Define material properties for your particles (friction, viscosity, cohesion, etc.):

from isaacsim.core.api.materials import ParticleMaterial

#_Create particle material for_ fluid-like behavior
particle_material = ParticleMaterial(
    prim_path="/World/Materials/FluidMaterial",
    name="fluid_material",
    friction=0.1,                    _Surface friction_
    particle_friction_scale=0.5,     # Particle-particle friction multiplier
    damping=0.0,                     # Velocity damping
    viscosity=0.001,                 # Fluid viscosity (0 = no viscosity)
    vorticity_confinement=0.0,       # Vortex preservation (for fluids)
    surface_tension=0.0074,          # Surface tension force
    cohesion=0.025,                  _Particle attraction force_
    adhesion=0.0,                    _Adhesion to_ rigid bodies
    gravity_scale=1.0,               # Gravity multiplier
    lift=0.0,                        # Aerodynamic lift coefficient
    drag=0.0                         # Aerodynamic drag coefficient
)

#_Apply material to particle system_
particle_system.apply_particle_material(particle_material)

4: Create Particle Geometry
Now create actual particles using a mesh geometry:

from pxr import UsdGeom, Gf
from isaacsim.core.utils.stage import get_current_stage
import omni.physx.scripts.particleUtils as particleUtils

stage = get_current_stage()

#_Create particles from a mesh (e.g., fluid in container)
fluid_mesh_path = "/World/FluidMesh"
fluid_mesh = UsdGeom.Mesh.Define(stage, fluid_mesh_path)

#_Define_ mesh geometry (simple cube of fluid particles)
points = []
for x in range(10):
    for y in range(10):
        for z in range(10):
            points.append(Gf.Vec3f(x * 0.05, y * 0.05, z * 0.05))

fluid_mesh.GetPointsAttr().Set(points)

#_Convert mesh_ to particles
particleUtils.add_physx_particle_system(
    stage=stage,
    particle_system_path=particle_system.prim_path,
    contact_offset=0.05,
    rest_offset=0.04,
    particle_contact_offset=0.04,
    solid_rest_offset=0.02,
    fluid_rest_offset=0.03
)

#_Configure_ as fluid particles
particleUtils.add_physx_particleset_pointinstancer(
    stage=stage,
    path="/World/FluidParticles",
    positions=points,
    velocities=None,
    particle_system_path=particle_system.prim_path,
    self_collision=True,
    fluid=True,  _Enable fluid behavior_
    particle_group=0,
    particle_mass=0.01
)

5: Configure Physics Scene
Ensure your physics scene is properly configured:

from pxr import PhysxSchema, UsdPhysics

#_Get or create physics scene_
physics_scene = UsdPhysics.Scene.Define(stage, "/World/PhysicsScene")

#_Configure Ph_ysX scene parameters
physx_scene = PhysxSchema.PhysxSceneAPI.Apply(physics_scene.GetPrim())
physx_scene.CreateEnableGPUDynamicsAttr(True)  # GPU acceleration
physx_scene.CreateBroadphaseTypeAttr("MBP")    # Multi-box pruning
physx_scene.CreateSolverTypeAttr("TGS")       # _Temporal Gauss-Seidel_ solver

You can also create the particle system using the menu: Create → Physics → Particle System to add a PhysX particle system prim to the scene and configure it.

1 Like