Convert NVIDIA ARDY motion output (.npz) to BVH and FBX, so you can use real-time text-generated motion in Blender, Unity, Unreal, or any animation tool.
ARDY generates impressive real-time, text-and-constraint-driven human motion, but it only writes .npz files and (for the G1 robot) MuJoCo CSVs. There is currently no path from the humanoid "Core" skeleton output to standard animation formats. This tool fills that gap.
The Core skeleton's bone names (Hips, Spine, RightUpLeg, LeftForeArm, ...) follow the standard Mixamo-style naming convention. The BVH produced here retargets almost 1:1 onto standard humanoid rigs, so most retargeting tools map the bones automatically.
pip install numpy scipyNo torch, no ARDY install required. For FBX export you also need Blender (free) on your PATH.
# 1. Generate motion with ARDY (see their repo)
python scripts/generate.py "A person dances energetically." --output dance
# 2. Convert to BVH
python ardy2bvh.py outputs/dance.npz # -> outputs/dance.bvh
python ardy2bvh.py outputs/waves/ -o bvh/ # whole folder
# 3. (Optional) Convert to FBX via headless Blender
python bvh2fbx.py outputs/dance.bvh # -> outputs/dance.fbxOptions for ardy2bvh.py:
| Flag | Meaning |
|---|---|
-o, --output |
output path (file or folder) |
--scale |
unit scale, e.g. 100 for meters→centimeters |
- Generate motions with ARDY (
generate.py, batch-friendly). - Convert to BVH with this tool.
- Retarget the motion onto your own rigged character with any standard retargeting tool (a Blender add-on or a game engine's built-in retargeter). Because the bone names follow the Mixamo naming convention, the bone mapping is picked up automatically in most tools.
- Export FBX / glTF for your engine.
- ✅ Core (cskel27) —
ARDY-Core-RP-*models - ❌ G1 robot — use ARDY's built-in MuJoCo CSV export
- ⏳ SOMA — planned once NVIDIA releases the SOMA-skeleton checkpoints
- Coordinate system: ARDY is Y-up, Z-forward, right-handed; BVH output preserves this (Blender BVH importer default settings work).
- Root motion (Hips world translation) is preserved in the root channels.
foot_contactsfrom the npz are not exported (BVH has no slot for them); use ARDY's--postprocess(default on) to reduce foot skating before export.- Early release: validated against ARDY's own BVH parser and forward-kinematics comparison. Issues and PRs welcome.
Apache-2.0. Skeleton definition and rest pose extracted from the Apache-2.0 licensed ARDY repository (© NVIDIA Corporation & Affiliates).