

A mesh-free, object-centric Transformer for multi-object rigid-body contact dynamics from point clouds.
NeurIPS 2026
1 MIT2 Meta
Abstract Interactive Demo Partial Point Clouds Video Main Qualitative Results Main Quantitative Results Online Adaptation
Learning-based simulation of multi-object rigid-body dynamics remains difficult because contact is discontinuous and errors compound over long horizons. Most existing methods remain tied to mesh connectivity and vertex-level message passing, which limits their applicability to mesh-free inputs such as point clouds and leads to high computational cost. Efficiently modeling high-fidelity rigid-body dynamics from mesh-free representations therefore remains challenging. We introduce RigidFormer, an object-centric Transformer-based model that learns mesh-free rigid-body dynamics with controllable integration step sizes. RigidFormer reasons at the object level and advances each object through compact anchors; Anchor-Vertex Pooling enriches these anchors with local vertex features, retaining contact-relevant geometry without dense vertex-level interaction. We propose Anchor-based RoPE to make attention aware of the objects' spatial layout while respecting the unordered nature of objects and anchors: object-token processing is permutation-equivariant, and the mean-pooled anchor descriptor is invariant to anchor reindexing. RigidFormer further enforces rigidity by projecting updates onto the rigid-body manifold using differentiable Kabsch alignment. On standard benchmarks, RigidFormer outperforms or matches mesh-based baselines using point inputs, runs faster, generalizes to unseen point resolutions and across datasets, and scales to 200+ objects; we also show a preliminary extension to command-conditioned articulated bodies by treating body parts as interacting object-level components.
RigidFormer's predictions on held-out MOVi test scenes. Drag to orbit; click the view, then scroll to zoom.
Meshes are shown only for visualization; our model operates on point inputs. The first four frames at the chosen step size are given (orange on the timeline), and every later frame is predicted from the model's own previous predictions. One model predicts at step sizes 1, 5 and 10, advancing that many simulation frames (240 per second) per prediction. Playback runs in real time at 1×; between predictions, poses are interpolated for display. Six samples per dataset.
One depth camera sees each object from one side. Opaque points are observed, light points are completed.








Qualitative Results on MOVi Datasets (test/val set)
Meshes are shown only for visualization; our model operates on point inputs.
Spherical-object scenes for cross-geometry qualitative comparison.
Held-out test clips selected for qualitative inspection.
More cluttered scenes with diverse object interactions.
Rollouts from partial point-cloud inputs.
We replace the differentiable Kabsch alignment with a learnable skinning module and physics-informed supervision, turning sparse anchor dynamics into full-mesh deformation.
Soft-body data simulated with the FEM solver in libuipc.
Dense rigid-body rollouts with increasing scene complexity.
Controllable articulated-body rollouts driven by learned rigid dynamics.
Articulated-body data simulated with Isaac Gym.
Additional Unitree G1 humanoid rollouts under controlled motion. Each sample uses a different initial state and control signal (direction and velocity).
Articulated-body data simulated with Isaac Gym.
Simulating the cracking and fragmentation process of objects.
Rollouts on deformable thin-shell scenes. Left: mesh visualization. Right: skinning weights. h denotes the ball's drop height and v0 its initial velocity.
Combining the neural physical rollout with Diffusion-as-Shader to render the same physical trajectory under diverse stylized prompts.
Comparison against state-of-the-art neural rigid-body simulators.
Table 1. Method comparison. Mesh-Free: no triangle connectivity required. Var. Δt: handles multiple step sizes. Preproc.-Free: no offline geometry computation. Warmup Frames: number of input frames required for rollout.
| Method | Mesh-Free | Var. Δt | Preproc.-Free | #Warmup Frames ↓ | Runtime (FPS) ↑ |
|---|---|---|---|---|---|
| MGN | ✗ | ✗ | ✓ | 2 | 5.7 |
| FIGNet | ✗ | ✗ | ✓ | 3 | 3.0 |
| SDF-Sim† | ✗ | ✗ | ✗ | 3 | — |
| HopNet‡ | ✗ | ✗ | ✗ | 3 | 0.2 |
| RigidFormer (Ours) | ✓ | ✓ | ✓ | 2 | 83.6 |
† SDF pre-learning: ~5 hours for MOVi-B.
‡ Simplicial-complex construction: ~15 days on MOVi-B.
Why these properties matter in practice.
Table 2. Performance on MOVi-A, MOVi-B, and MOVi-Sphere. Each cell reports position RMSE (m) / orientation RMSE (°) at prediction horizons of 50, 75, and 100 frames. Per-column top-two ranks are highlighted: 1st, 2nd.
| Model | MOVi-A | MOVi-B | MOVi-Sphere | ||||||
|---|---|---|---|---|---|---|---|---|---|
| 50 | 75 | 100 | 50 | 75 | 100 | 50 | 75 | 100 | |
| MGN+ | 0.705 / 31.21 | N/A | N/A | 0.538 / 26.91 | N/A | N/A | N/A | N/A | N/A |
| MGN-LargeRadius+ | 0.119 / 15.07 | N/A | N/A | 0.460 / 26.34 | N/A | N/A | N/A | N/A | N/A |
| FIGNet | 0.115 / 14.84 | N/A | N/A | 0.127 / 13.99 | N/A | N/A | N/A | N/A | N/A |
| FIGNetreimpl | 0.132 / 7.10 | 0.285 / 14.62 | 0.492 / 23.30 | 0.141 / 7.39 | 0.300 / 15.16 | 0.516 / 24.96 | N/A | N/A | N/A |
| HCMTreimpl* | 0.239 / 5.70 | 0.538 / 11.82 | 0.951 / 18.40 | 0.237 / 4.72 | 0.527 / 9.80 | 0.932 / 17.43 | 0.243 / 4.19 | 0.541 / 8.21 | 0.956 / 13.81 |
| VPD†reimpl | 0.235 / 5.10 | 0.489 / 11.66 | 0.827 / 20.37 | 0.275 / 4.65 | 0.581 / 9.70 | 0.987 / 16.99 | 0.244 / 4.47 | 0.510 / 9.50 | 0.855 / 17.65 |
| HopNet | 0.054 / 5.64 | 0.115 / 11.84 | 0.196 / 18.83 | 0.047 / 4.91 | 0.101 / 10.35 | 0.176 / 17.91 | 0.034 / 4.05 | 0.073 / 8.21 | 0.124 / 13.68 |
| RigidFormer†,* (Ours) | 0.040 / 4.81 | 0.086 / 10.64 | 0.145 / 17.57 | 0.030 / 3.29 | 0.061 / 7.16 | 0.108 / 12.65 | 0.022 / 2.93 | 0.045 / 6.28 | 0.078 / 10.74 |
* Transformer-based model. † Point inputs.
Table 3. Generalization across MOVi-Sphere (S), MOVi-A (A), and MOVi-B (B). Models trained on one dataset and tested zero-shot on another, under the matched step-size-1 setting. Each cell reports position RMSE (m) / orientation RMSE (°) at prediction horizons of 75 and 100 frames. Per-row top-two ranks are highlighted: 1st, 2nd.
| Train | Test | FIGNet | HopNet | RigidFormer (Ours) | |||
|---|---|---|---|---|---|---|---|
| 75 | 100 | 75 | 100 | 75 | 100 | ||
| S | A | 0.370 / 14.08 | 0.626 / 22.46 | 0.112 / 11.29 | 0.197 / 17.74 | 0.122 / 10.79 | 0.205 / 17.57 |
| B | 0.662 / 18.08 | 1.149 / 29.66 | 0.106 / 9.75 | 0.188 / 17.13 | 0.081 / 8.56 | 0.138 / 15.02 | |
| A | S | 0.239 / 11.55 | 0.417 / 19.66 | 0.100 / 9.16 | 0.172 / 15.17 | 0.059 / 7.17 | 0.100 / 12.59 |
| B | 0.512 / 13.49 | 0.864 / 22.41 | 0.117 / 10.77 | 0.202 / 18.66 | 0.074 / 8.07 | 0.132 / 14.46 | |
| B | S | 0.536 / 12.74 | 0.905 / 20.42 | 0.095 / 9.09 | 0.160 / 15.04 | 0.063 / 7.78 | 0.110 / 13.43 |
| A | 0.520 / 14.53 | 0.871 / 22.89 | 0.120 / 12.08 | 0.202 / 19.15 | 0.099 / 10.62 | 0.165 / 17.18 | |
Table 4. Step-size-conditioned rollout performance. A single RigidFormer model is conditioned on the integration step size at inference time. Each cell reports position RMSE (m) / orientation RMSE (°); “/”: the horizon is not on the step-size grid.
| Step Size | MOVi-A | MOVi-B | MOVi-Sphere | ||||||
|---|---|---|---|---|---|---|---|---|---|
| 50 | 75 | 100 | 50 | 75 | 100 | 50 | 75 | 100 | |
| 10 | 0.016 / 1.43 | / | 0.092 / 11.26 | 0.012 / 1.22 | / | 0.071 / 8.74 | 0.010 / 0.88 | / | 0.062 / 6.58 |
| 5 | 0.029 / 2.94 | 0.068 / 7.76 | 0.120 / 13.76 | 0.020 / 2.71 | 0.048 / 6.32 | 0.090 / 11.52 | 0.017 / 2.02 | 0.040 / 4.83 | 0.073 / 8.85 |
| 1 | 0.040 / 4.81 | 0.086 / 10.64 | 0.145 / 17.57 | 0.030 / 3.29 | 0.061 / 7.16 | 0.108 / 12.65 | 0.022 / 2.93 | 0.045 / 6.28 | 0.078 / 10.74 |
Table 5. Runtime comparison. Measured on MOVi-B with a 50-step autoregressive rollout averaged over 10 iterations on an NVIDIA GeForce RTX 5080. RigidFormer achieves 28× and 354× speedups over FIGNet and HopNet, respectively.
| Method | ms / step ↓ | FPS ↑ |
|---|---|---|
| HopNet | 4228.7 | 0.2 |
| FIGNet | 336.0 | 3.0 |
| RigidFormer (Ours) | 12.0 | 83.6 |
Table 6. Fast inference with the released code. Two opt-in switches of the code: --cuda-graph captures the rollout step once as a CUDA graph and replays it (trajectories bit-identical to the default path); --compile compiles the encoder, decoder and predictor with torch.compile. Same scene and GPU as Table 5 (MOVi-B test scene 72, 50-step rollout, NVIDIA GeForce RTX 5080); mean ± standard deviation over 10 rollouts.
| Inference path | ms / step ↓ | FPS ↑ | Peak memory |
|---|---|---|---|
| Default | 11.96 ± 0.19 | 83.6 | 835 MiB |
--cuda-graph | 7.94 ± 0.07 | 126.0 | 933 MiB |
--compile | 9.07 ± 0.18 | 110.3 | 779 MiB |
Fine-tuning a frozen RigidFormer on 10 in-domain MOVi-B scenes for 20 epochs (~23 min) reduces both position and rotation error across all step sizes. Each curve shows the percentage reduction relative to the pre-finetune baseline at four milestone epochs.