Skip to content

[NeurIPS 2025] Gaussian-Augmented Physics Simulation and Identification with Complex Colliders

Notifications You must be signed in to change notification settings

FedericoVasile1/as-diffmpm

Repository files navigation

🚧 Currenly under construction, will be finished soon. 🚧


Gaussian-Augmented Physics Simulation and System Identification with Complex Colliders

Federico Vasile, Ri-Zhao Qiu, Lorenzo Natale Xiaolong Wang,

Paper PDF Project Page

We present Any-Shape Differentiable Material Point Method (AS-DiffMPM), a particle-based framework for simulating collisions with arbitrarily shaped rigid bodies.

0. Installation

Clone the repository and install dependencies. Our code is tested with Python 3.11 and PyTorch 2.5.1 with CUDA 12.1, but other versions should also work.

git clone https://github.com/FedericoVasile1/as-diffmpm
cd as-diffmpm

conda create -n mpmenv python=3.11
conda activate mpmenv
pip install -r requirements.txt

1. Running the Simulation

The following command runs an example where a cross-shaped object, modeled as a Newtonian fluid, collides with an Armadillo mesh:

python simulate.py --particles assets/particles/cross.ply --config configs/newtonian/armadillo.ply

The simulation outputs the particle positions at each timestep in the output directory specified in the config file (default is simulation_output/{material}/{collider}).

The particles can be visualized in Open3D using the provided script. For the sake of convenience, we handle user input through a OpenCV window, click on the windows and then press f and b to move forward and backward through the simulation.

python vis_simulation_output.py --base-dir simulation_output/newtonian/armadillo

Obtained Open3D visualization:

[TODO]

For further colliders, materials, and simulation settings, please refer to the configs/ folder. We currently used the cross-shaped object as material particles, you can find more at assets/particles/.

1.1 Advanced Examples: Moving Colliders

Our code supports also moving colliders, such as the glass example. Take a look at configs/newtonian/glass.py, specifically at the start_frame, end_frame, lin_vel, ang_vel and rot_center that handle the moving collider parameters. Few examples below:

python simulate.py --particles assets/particles/cross.ply --config configs/newtonian/glass.py
python simulate.py --particles assets/particles/cross.ply --config configs/non_newtonian/paddle.py
python simulate.py --particles assets/particles/cross.ply --config configs/sand/sphere.py

1.2 Advanced Examples: Replacing Mesh with 2DGS-based Colliders

Our framework supports both mesh and 2DGS-based collders. Few splats are provided in assets/collider/splats. To use a 2DGS-based, we need to modify the config file accordingly. In configs/newtonian/armadillo.py, replace as follows:

        # 1st replace:
        #"mesh": {
        "splat": {

        # 2nd replace:
            #"ply_path": "assets/colliders/meshes/armadillo.ply",
            "ply_path": "assets/colliders/splats/armadillo.ply",

        # 3rd replace:
            #"points_per_face": 1,
            "opacity_threshold": 0.01,

2. System Identification from Particle Trajectories

Besides forward simulation, AS-DiffMPM can be used to identify physical parameters from observed particle trajectories using gradient-based optimization. Given observations of particle positions over time, we can optimize for unknown physical parameters (e.g., Young's modulus, fluid viscosity) by minimizing the discrepancy between simulated and observed trajectories using MSE loss.

python train.py --config configs/newtonian/box.py --gt-dir [TODO]

3. Dataset

The dataset used for system identification experiments can be found at [TODO]

TODOS

  • [] Add System Identification from Visual Observations
  • [] Add particle visualizations with other libraries (e.g., Genesis)

Acknowledgements

Our code is built upon the following repositories: PAC-NeRF, MLS-MPM. We thank the authors for their fantastic work.

Citation

If you find our work useful, please consider citing our paper as follows:

@article{vasile2025asdiffmpm,
    title={Gaussian-Augmented Physics Simulation and Identification with Complex Colliders},
    author={Federico Vasile and Ri-Zhao Qiu and Lorenzo Natale and Xiaolong Wang},
    booktitle={NeurIPS},
    year={2025},
}

Mantainer

This repository is mantained by:

@FedericoVasile1

About

[NeurIPS 2025] Gaussian-Augmented Physics Simulation and Identification with Complex Colliders

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages