MotionBricks is a real-time generative framework that transforms interactive motion control for animation and robotics. By combining a large-scale latent backbone with intuitive "smart primitives," it delivers high-quality, zero-shot motion synthesis at 15,000 FPS, allowing users to effortlessly build complex animations and robotic movements like assembling bricks.
- News & Roadmap
- Results
- Setup
- Interactive Demo: Quick Start
- Training
- Motion Representation and Custom Datasets
- Related Work
- Project Structure
- Known Issues
- Citation
- License
- Contact
- 2026-04-27 — Initial public release: interactive demo, pretrained checkpoints (VQVAE · pose · root), synthetic training code, motion-representation docs, and GIF gallery.
- Full training pipeline inside GR00T Whole-Body Control's GEAR-SONIC pipeline — targeted for approximately one month out; reproducibility experiments are already in flight.
See the project page for the full uncut demos and comparison videos. Short clips below are GIFs (muted, ~10 s each).
| Animation | Robotics |
|---|---|
![]() |
![]() |
| Zombie | Injured leg |
|---|---|
![]() |
![]() |
| Injured torso | Skipping |
![]() |
![]() |
| Strafing | Crouch strafing |
![]() |
![]() |
| Freestyle | Idle · Walk · Jog · Run |
|---|---|
![]() |
![]() |
| Pick up sword | Falling |
|---|---|
![]() |
![]() |
| Jump over bench | Sitting |
![]() |
![]() |
| Interactive authoring | |
![]() |
Requirements: Python 3.10+, a CUDA-capable GPU, Git LFS.
MotionBricks ships as a subproject of GR00T Whole-Body Control. Clone the parent repo and cd into motionbricks/. Pretrained checkpoints, mesh assets, and gallery GIFs are tracked with Git LFS, so install LFS before cloning:
git lfs installThe parent repo skips MotionBricks pretrained checkpoints by default so a normal monorepo clone does not automatically download the extra ~2.2 GB of checkpoint files. MotionBricks GIFs and mesh assets still download normally. If you only need source code (for example, to train on your own data), clone normally:
git clone https://github.com/NVlabs/GR00T-WholeBodyControl.git
cd GR00T-WholeBodyControl/motionbricksIf you want the checkpoints for the interactive demo, fetch them explicitly from the repo root:
git clone https://github.com/NVlabs/GR00T-WholeBodyControl.git
cd GR00T-WholeBodyControl
git lfs pull --include="motionbricks/out/**" --exclude=""
git lfs pull --include="motionbricks/assets/skeletons/g1/meshes/**" --exclude="" # needed for interactive demo
cd motionbricksAfter fetching MotionBricks checkpoints, verify that checkpoint files were downloaded (not tiny Git LFS pointer files):
ls -lh out/G1-clip.ckpt # ~7.5 MB
ls -lh out/motionbricks_vqvae/version_1/checkpoints/*.ckpt # ~273 MB
ls -lh out/motionbricks_pose/version_1/checkpoints/*.ckpt # ~1.6 GB
ls -lh out/motionbricks_root/version_1/checkpoints/*.ckpt # ~391 MBIf these files are unexpectedly small (around 1 KB), they are LFS pointers. From the repo root, run git lfs pull --include="motionbricks/out/**" --exclude="" to fetch the actual checkpoints.
# Create environment
conda create -n motionbricks python=3.10 -y
conda activate motionbricks
# Install dependencies
pip install -e .
# Linux only: needed for keyboard input and MuJoCo key-grab workaround
pip install pynput python-xlibDISPLAY=:1 python scripts/interactive_demo_g1.pyThis launches the MuJoCo viewer with the G1 robot. Use your keyboard to control it in real time. Hold the left mouse button and drag to change the camera look-at direction.
| Key | Action |
|---|---|
W |
Move forward |
A |
Move left |
S |
Move backward |
D |
Move right |
The movement direction is relative to the camera. Rotate the camera by right-clicking and dragging in the MuJoCo viewer.
| Key | Style |
|---|---|
V |
Slow walk |
Z |
Hand crawling |
X |
Walk boxing |
B |
Elbow crawling |
R |
Stealth walk |
T |
Injured walk |
C |
Walk stealth (crouched) |
E |
Happy dance walk |
F |
Zombie walk |
G |
Gun walk |
Q |
Scared walk |
Note: crawling modes (Z hand crawling and B elbow crawling) currently do not support side-only directions.
Without pressing a style key, the default locomotion is: idle (no movement keys), walk (WASD pressed).
Training scripts are provided for all three model components. The scripts use synthetic data by default and load model configs from the saved checkpoints in out/. The full motion datasets are available at https://bones.studio/datasets.
Full release status: A full release — a model fully embedded in GR00T whole-body control's robotics formulation, along with the complete training pipeline — is targeted for approximately one month out. Reproducibility experiments are already in flight; please check back for updates.
# Train the VQVAE (motion tokenizer)
python scripts/train_vqvae.py
# Train the pose model (requires pretrained VQVAE checkpoint)
python scripts/train_pose.py
# Train the root model (no VQVAE needed)
python scripts/train_root.pyThe datasets used to train the pretrained checkpoints can be downloaded at https://bones.studio/datasets. All current training scripts default to synthetic data (see motionbricks/data/synthetic_dataset.py) so that the full training pipeline can be verified end-to-end without the real dataset.
For details on the motion feature representation, skeleton system, coordinate conventions, normalization, and feature computation pipeline, see docs/motion_representation.md.
For a step-by-step guide to training MotionBricks on your own motion data and adapting it to a new robot, see docs/adding_your_own_dataset.md.
Kimodo — A sibling project focused on offline motion generation, complementary to MotionBricks' real-time runtime.
GEAR-SONIC — Together with MotionBricks, GEAR-SONIC anchors NVIDIA's GR00T Whole-Body Control initiative.
BONES-SEED Dataset — MotionBricks' training corpus — 350k production-grade mocap clips from real human actors and actresses.
SOMA Retargeter — The Newton-based solver that retargets SOMA capture onto the G1, producing MotionBricks' training data.
motionbricks/
assets/skeletons/g1/ # MuJoCo XMLs and STL meshes
motionbricks/ # Python package
scripts/
interactive_demo_g1.py # Interactive demo
train_vqvae.py # VQVAE training
train_pose.py # Pose model training
train_root.py # Root model training
out/ # Pre-trained checkpoints (Git LFS)
G1-clip.ckpt
motionbricks_vqvae/
motionbricks_pose/
motionbricks_root/
setup.py
- Linux/X11 only: The keyboard key-grab workaround requires X11 (
python-xlib). On Wayland, macOS, or Windows, some MuJoCo keyboard shortcuts may conflict with the controller keys. Keep the terminal focused (not the MuJoCo window) as a workaround. PYTORCH_JIT=0disables key grabs: Running withPYTORCH_JIT=0interferes with the X11 key-grab workaround. If you needPYTORCH_JIT=0, keep the terminal focused instead.- The
pynputpackage is required for keyboard input on Linux/macOS. On Windows, thekeyboardpackage is used instead.
If you use MotionBricks in your research, please cite:
@misc{wang2026motionbricksscalablerealtimemotions,
title={MotionBricks: Scalable Real-Time Motions with Modular Latent Generative Model and Smart Primitives},
author={Tingwu Wang and Olivier Dionne and Michael De Ruyter and David Minor and Davis Rempe and Kaifeng Zhao and Mathis Petrovich and Ye Yuan and Chenran Li and Zhengyi Luo and Brian Robison and Xavier Blackwell and Bernardo Antoniazzi and Xue Bin Peng and Yuke Zhu and Simon Yuen},
year={2026},
eprint={2604.24833},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2604.24833},
}Source code in this repository is licensed under Apache 2.0. Pretrained model weights are licensed under the NVIDIA Open Model License, which permits commercial use with attribution subject to the trustworthy AI requirements.
For questions and feedback, please reach out at gear-wbc@nvidia.com.




















