NovaPhy¶
A C++20/Python 3D physics engine for embodied intelligence.
NovaPhy is designed for robotics, reinforcement learning, and sim-to-real transfer. It provides a unified simulation framework with multiple solver backends, all accessible through a clean Python API.
Key Features¶
-
Rigid Body Dynamics
Sequential Impulse solver (PGS) with warm starting, Coulomb friction, and Baumgarte stabilization.
-
Articulated Bodies
Featherstone algorithms — FK, RNEA inverse dynamics, CRBA mass matrix, Cholesky forward dynamics.
-
Fluid Simulation
Position Based Fluids (PBF) with SPH kernels, spatial hash grid, and Akinci rigid-fluid coupling.
-
IPC Contact
GPU-accelerated Incremental Potential Contact via libuipc with guaranteed penetration-free contact.
-
VBD / AVBD
Vertex Block Descent with primal-dual contacts, joints, and springs (SIGGRAPH 2025).
-
Python API
Full pybind11 bindings with Polyscope visualization. pip-installable via scikit-build-core.
Quick Example¶
import numpy as np
import novaphy
builder = novaphy.ModelBuilder()
builder.add_ground_plane(y=0.0)
body = novaphy.RigidBody.from_box(1.0, np.array([0.5, 0.5, 0.5]))
idx = builder.add_body(body, novaphy.Transform.from_translation(np.array([0, 5, 0])))
builder.add_shape(novaphy.CollisionShape.make_box(np.array([0.5, 0.5, 0.5]), idx))
world = novaphy.World(builder.build())
for _ in range(1000):
world.step(1/120)
Solvers¶
All solvers are being aligned to a unified Newton-style contract:
| Solver | Description | Status |
|---|---|---|
SolverSemiImplicit |
Free-body PGS (Sequential Impulse) | Stable |
SolverFeatherstone |
Articulated body (FK → RNEA → CRBA → Cholesky) | Stable |
SolverXPBD |
XPBD maximal-coordinate constraints | Stable |
VBDWorld |
AVBD primal-dual (CPU / optional CUDA) | Stable |
IPCWorld |
IPC via libuipc (CUDA >= 12.4) | Optional |
PBFSolver |
Position Based Fluids + Akinci coupling | Stable |