A USD-native LEGO-style brick simulator — Pixar OpenUSD as the source-of-truth scene description, programmatic asset authoring, PhysX-style snapping rules, and a Replicator-style synthetic-data pipeline. Built as a learning vehicle and portfolio artifact for the NVIDIA Omniverse / Isaac Sim ecosystem.
Status: Phase 0 — scaffolding. Active build log in
docs/PROGRESS.md.
This repo is the capstone for a 6-month learning sprint into NVIDIA's physical-AI stack (OpenUSD, Omniverse Kit, PhysX, Replicator, Warp). Each phase ships a working artifact:
| Phase | Artifact | Demonstrates |
|---|---|---|
| 1 | Procedurally-authored brick library as USD | OpenUSD authoring, schemas, composition, variants, instancing |
| 2 | Omniverse Kit extension to load & lay out bricks | Kit extension architecture, omni.ui, Fabric/USDRT |
| 3 | PhysX brick snapping + 1,000-brick assembly | Rigid-body sim, fixed joints, collision authoring in USD |
| 4 | Replicator synthetic-data pipeline | Domain randomization, COCO-format dataset emission |
| 5 (stretch) | Warp kernel for bulk collision pre-pass | GPU compute, Python-callable kernels |
| 6 (stretch) | Cosmos Transfer → photoreal | Sim-to-real translation |
A 20-year game-engine engineer (Unreal expert, EA Frostbite, Wētā FX Atlas scene-description, Call of Duty MWIII ECS-for-physics, currently Lead SWE on the LEGO Brick Editor) pivoting toward NVIDIA Omniverse / Isaac Sim roles needs a portfolio piece that:
- Maps Wētā Atlas experience onto OpenUSD authoring
- Maps AAA ECS-for-physics experience onto Kit/PhysX integration
- Uses public domain content (bricks) so it doesn't touch employer IP
- Runs on a developer laptop and scales upward to cloud
- Lands on the stack of NVIDIA JR2018096 (Metropolis Synthetic Data Generation), which literally lists "Unreal/Unity rigid-body physics" + Python + Omniverse as required/preferred
# clone
git clone https://github.com/jiamingfeng/usd-native-brick-sim.git
cd usd-native-brick-sim
# create venv with usd-core
# (using uv — https://docs.astral.sh/uv/)
uv venv --python 3.11 .venv
.venv\Scripts\Activate.ps1
uv pip install -e ".[dev]"
# generate a small brick library
python -m brick_sim.gen_library --out assets/bricks --count 20
# verify
python scripts/inspect_stage.py assets/bricks/library.usdausd-native-brick-sim/
├─ src/brick_sim/ # the Python package — USD authoring, brick schemas
├─ assets/bricks/ # generated .usda libraries (gitignored, regen-able)
├─ demos/ # one-off scripts that produce videos/screenshots
├─ tests/ # pytest, runs against in-memory stages
├─ scripts/ # CLI helpers (inspect stages, dump composition, etc.)
├─ docs/
│ ├─ ARCHITECTURE.md # the USD layer cake, mental model
│ ├─ PROGRESS.md # phase log, what shipped when
│ └─ atlas-to-usd.md # write-up: mapping Wētā Atlas concepts to OpenUSD
└─ pyproject.toml
- Portfolio: https://jiamingfeng.github.io/portfolio/
- Learning plan: private (the 6-month NVIDIA pivot roadmap)
- License: Apache-2.0