Demos
NovaPhy includes a comprehensive set of demos using Polyscope for 3D visualization.
Rigid Body
| Demo |
Description |
Physics |
demo_pyramid_ball.py |
4-3-2-1 pyramid with sphere projectile; --solver {semi_implicit,featherstone,xpbd} |
Free body / Featherstone / XPBD |
demo_friction_ramp.py |
Boxes on 30-degree ramp, different friction |
Coulomb friction |
demo_wall_break.py |
5x5 wall hit by sphere |
Dynamic collision |
demo_dominoes.py |
20 dominoes chain reaction |
Angular impulse |
demo_unified_collision.py |
Gallery of all collision pairs |
SAT narrowphase |
demo_pyramids_numerous.py |
Stress test: many pyramids |
Sequential Impulse |
xpbd/demo_xpbd_stack.py |
Supported wall stack |
XPBD constraints |
xpbd/demo_xpbd_weld.py |
Welded bodies |
XPBD weld constraint |
Articulated Body (Featherstone)
| Demo |
Description |
Physics |
multibody_demo/demo_newtons_cradle_pendulum.py |
Newton's cradle with hinge suspension |
Revolute joints + contacts |
multibody_demo/demo_rope.py |
15-link chain released from horizontal |
Multi-joint chain |
multibody_demo/demo_wrecking_ball.py |
Chain pendulum smashing a box tower |
Joint + rigid contacts |
multibody_demo/demo_seesaw.py |
Box dropped onto revolute seesaw |
Joint + impact |
multibody_demo/demo_motor_arm.py |
Motor-driven arm sweeping boxes |
Torque-level PD |
multibody_demo/demo_100_robots_multibody.py |
Quadruped grid via Featherstone |
Floating base + PGS |
demo_100_robots.py |
Quadruped grid via XPBD |
SolverXPBD |
Robotics & Control
| Demo |
Description |
Physics |
demoSim_ppo_inverted_pendulum.py |
PPO control of a single revolute pendulum |
Forward dynamics + RL |
demo_ik_arm.py |
Damped-least-squares IK |
Analytical Jacobian |
demo_basic_urdf.py |
URDF loading smoke test |
URDF parser |
demo_robot_sim_pipeline.py |
URDF to USD full pipeline with torque control |
Featherstone + export |
demo_sensors.py |
Sensor system demo |
Sensor readings |
Fluid
| Demo |
Description |
Physics |
demo_dam_break.py |
Rectangular fluid block collapses |
PBF solver |
demo_fluid_box.py |
~8000 particles sloshing in a moving box |
PBF + domain bounds |
demo_ball_in_water.py |
Ball dropping into water |
Rigid-fluid coupling (Akinci) |
demo_fluid_coupling.py |
Boxes and spheres splashing into water |
PBF + Akinci + rigid collision |
IPC
| Demo |
Description |
Physics |
demo_ipc_stack.py |
Box stacking with guaranteed no-penetration |
IPC via libuipc (CUDA) |
VBD / AVBD
| Demo |
Description |
Physics |
demo_vbd_contacts_gui.py |
Rigid contacts |
AVBD primal-dual + Coulomb friction |
demo_vbd_joint_gui.py |
Joints between bodies |
AVBD augmented-Lagrangian joints |
demo_vbd_spring_gui.py |
Springs between bodies |
AVBD compliant springs |
demo_vbd_lunar_rover.py |
Lunar rover simulation |
AVBD contacts + joints |
Profiling
| Demo |
Description |
demo_performance_monitor.py |
Performance monitoring with --scene {rigid,fluid} |
Running Demos
# Install visualization dependency
pip install polyscope
# Run any demo
python demos/demo_pyramid_ball.py
# Some demos accept solver selection
python demos/demo_pyramid_ball.py --solver featherstone
# Profiling demo with options
python demos/demo_performance_monitor.py --scene rigid --measured-steps 120