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},
}
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rigidformer-0.2.0.tar.gz.
File metadata
- Download URL: rigidformer-0.2.0.tar.gz
- Upload date:
- Size: 15.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.8.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49360886629095f06ba4c15c3aeeaac78185fd8fbc7381aa4cbdc629f0c583eb
|
|
| MD5 |
7a23f6682cca1989bffc917ffa8dbbc2
|
|
| BLAKE2b-256 |
d3e61d9c9ac11c5dbd536c1f507ddbf18bb46309085215bd54d0afa0244f8522
|
File details
Details for the file rigidformer-0.2.0-py3-none-any.whl.
File metadata
- Download URL: rigidformer-0.2.0-py3-none-any.whl
- Upload date:
- Size: 15.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.8.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a4ed0e49bbd520db957bf49429ff7946da343d5db4abe41d887a9ea4258385f
|
|
| MD5 |
dedafe329c2dc705b7d8189819be9937
|
|
| BLAKE2b-256 |
038e6ead92df19a38058d8919d6ee1ba43208e86cdf89549a3a9dcdab1904c8a
|