ACM Transactions on Graphics (SIGGRAPH), 2025
Zhaofeng Luo*1,2, Zhitong Cui*1,3, Shijian Luo3, Mengyu Chu2,4, Minchen Li1
1 Carnegie Mellon University
2 Peking University
3 Zhejiang University
4 State Key Lab of General AI
*Equal Contribution
Currently tested only on Meta Quest 3. Support for other VR headset models requires manual adjustment of related settings.
The scene is pre-configured. To quickly experience VR-Doh, follow these steps:
-
Clone the project
git clone https://github.com/Simulation-Intelligence/VR-Doh
-
Add project to Unity
- In Unity Hub, select "Add" → "Add project from disk"
- Select the cloned folder
-
Install and configure Meta Quest Link
- Ensure Meta Quest Link is installed on your PC
- Connect properly with Quest 3
-
Configure Quest Link settings
- In Settings → Beta, enable "Developer Runtime Features" and all related options
- In Settings → General, ensure "Set Meta Quest Link as the active OpenXR Runtime" is checked
-
Open Unity project
- If errors occur during the process, select "Ignore"
- If prompted about Oculus input changes requiring restart, select "Restart"
-
Load the scene
- Open
Assets/Scenes/MPM 88_UI2
scene
- Open
-
Run the project
- Ensure your PC and Quest 3 are properly connected with Quest Link mode active
- Click "Play" at the top of the screen in Unity to enter
The main physics simulation is implemented in: scripts/mpm3D_gaussian_part.kernel.py
This part uses Taichi to compile kernels into AOT modules (default location: Assets/Resources/TaichiModules/mpm3DGaussian_part_mat.kernel.tcm
).
In Unity, the module is imported via C# with main code in:
Assets/Scripts/Mpm3DMarching.cs
While users can adjust various parameters through the UI after launching the scene, some parameters are not yet exposed. Currently, all algorithms and parameters mentioned in the paper can be adjusted through the following method:
Test_Example_1
andTest_Example_2
in the scene are the default startup objects.- You can pre-adjust parameters in their Mpm 3D Marching component in the Unity Editor.
-
Render Type:
- Select Marching Cubes for modeling from scratch
- Select Gaussian Splats for editing 3D-GS models
-
If using Gaussian Splats:
- Enable the Gaussian Splat Renderer component on the object
- Select a target Asset (created via
Tools → Gaussian Splats → CreateGaussianSplatAsset
) - Ensure quality is set to very high
-
Decoupling of physical and appearance representations:
- Enable
Use_gaussian_acceleration
- Adjust
Gaussian_simulate_ratio
- Enable
If you encounter any deployment or runtime issues, please:
- Submit an Issue
- Email contact: zhaofen2@andrew.cmu.edu
If you use VR-Doh in your research, please cite our paper:
@article{luo2025vrdoh,
author = {Zhaofeng Luo and Zhitong Cui and Shijian Luo and Mengyu Chu and Minchen Li},
title = {VR-Doh: Hands-on 3D Modeling in Virtual Reality},
year = {2025},
issue_date = {July 2025},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
volume = {44},
number = {4},
issn = {0730-0301},
url = {https://doi.org/10.1145/3731154},
doi = {10.1145/3731154},
journal = {ACM Trans. Graph.},
month = jul,
numpages = {12},
keywords = {Virtual Reality, 3D Modeling, Elastoplasticity Simulation, Material Point Method, Human-Computer Interaction}
}