Rigidformer
Implementation of RigidFormer, Learning Rigid Dynamics using Transformers, out of MIT and Meta
Install
$ pip install rigidformer
Usage
import torch
from rigidformer import Rigidformer
# instantiate model
model = Rigidformer(
dim = 256,
dim_head = 192,
heads = 8,
object_self_attn_depth = 4,
anchor_cross_attn_depth = 4,
num_anchors = 4,
object_hidden_layers = (0, 1, 2, 4),
vertex_properties_dim = 3
)
# mock inputs
delta_times = torch.randn(2)
vertex_properties = torch.randn(2, 4, 3) # (batch, num_objects, d_attr)
object_pos = torch.randn(2, 4, 64, 3) # (batch, num_objects, num_points, 3)
object_pos_prev = torch.randn(2, 4, 64, 3)
object_pos_next = torch.randn(2, 4, 64, 3)
# training
loss, loss_breakdown = model(
delta_times = delta_times,
vertex_properties = vertex_properties,
object_pos = object_pos,
object_pos_prev = object_pos_prev,
object_pos_next = object_pos_next # target
)
loss.backward()
# if `object_pos_next` not passed in, will return predictions
pred = model(
delta_times = delta_times,
vertex_properties = vertex_properties,
object_pos = object_pos,
object_pos_prev = object_pos_prev,
)
assert pred.object_pos_next.shape == object_pos.shape
# rollout multiple steps with a wrapper
from rigidformer import RigidformerRolloutWrapper
wrapper = RigidformerRolloutWrapper(model)
rollout_positions = wrapper(
num_steps = 10,
delta_times = delta_times,
vertex_properties = vertex_properties,
object_positions = [object_pos_prev, object_pos]
)
# rollout_positions is a list of length 12 tensors of shape (batch, num_objects, num_points, 3)
# includes the 2 initial positions
Box2D example
Train on a synthetic Box2D dataset of boxes sliding on the ground under friction and coming to rest, and save examples/box2d.png + examples/box2d_trajectories.png (training loss, a held-out rollout vs ground truth, and rollout error against the constant-velocity baseline):
$ uv run --extra examples python examples/train_box2d.py --example friction # smooth dynamics
$ uv run --extra examples python examples/train_box2d.py --example collision # sharp contacts
Citations
@misc{dou2026rigidformerlearningrigiddynamics,
title = {RigidFormer: Learning Rigid Dynamics using Transformers},
author = {Zhiyang Dou and Minghao Guo and Haixu Wu and Doug Roble and Tuur Stuyck and Wojciech Matusik},
year = {2026},
eprint = {2605.09196},
archivePrefix = {arXiv},
primaryClass = {cs.CV},
url = {https://arxiv.org/abs/2605.09196},
}
@inproceedings{Arora2023ZoologyMA,
title = {Zoology: Measuring and Improving Recall in Efficient Language Models},
author = {Simran Arora and Sabri Eyuboglu and Aman Timalsina and Isys Johnson and Michael Poli and James Zou and Atri Rudra and Christopher R'e},
year = {2023},
url = {https://api.semanticscholar.org/CorpusID:266149332}
}
@misc{islam2026platonictransformerssolidchoice,
title = {Platonic Transformers: A Solid Choice For Equivariance},
author = {Mohammad Mohaiminul Islam and Rishabh Anand and David R. Wessels and Friso de Kruiff and Thijs P. Kuipers and Rex Ying and Clara I. Sánchez and Sharvaree Vadgama and Georg Bökman and Erik J. Bekkers},
year = {2026},
eprint = {2510.03511},
archivePrefix = {arXiv},
primaryClass = {cs.CV},
url = {https://arxiv.org/abs/2510.03511},
}
Metadata
Release files for rigidformer 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| rigidformer-0.2.0.tar.gz | 15.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rigidformer-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 30.3 kB
Release files / rigidformer-0.2.0.tar.gz
| Download URL | rigidformer-0.2.0.tar.gz |
|---|---|
| Size | 15.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
49360886629095f06ba4c15c3aeeaac78185fd8fbc7381aa4cbdc629f0c583eb
|
|
BLAKE2b-256 checksum How to use checksums |
d3e61d9c9ac11c5dbd536c1f507ddbf18bb46309085215bd54d0afa0244f8522
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.17
|
Release files / rigidformer-0.2.0-py3-none-any.whl
| Download URL | rigidformer-0.2.0-py3-none-any.whl |
|---|---|
| Size | 15.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2a4ed0e49bbd520db957bf49429ff7946da343d5db4abe41d887a9ea4258385f
|
|
BLAKE2b-256 checksum How to use checksums |
038e6ead92df19a38058d8919d6ee1ba43208e86cdf89549a3a9dcdab1904c8a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.17
|