VRM / VRMA-specific integration with OpenUSD.
A VRM scene loaded directly through the file-format plugin, with a VRMA motion file retargeted onto the avatar, previewed in usdview with Hydra Storm.
This repository owns what needs the VRM specification:
.vrmimport — VRM 0.x and 1.0, normalized into one canonical model and authored as a deterministic OpenUSD stage;.vrmaimport — VRM Animation clips as avatar-independent semantic motion;- the VRM schemas, and resolution of resources embedded in a
.vrm; - VRM humanoid semantics on a rig — the humanoid binding, VRM 1.0's required bones, expressions and look-at;
execVrm, VRM semantics as OpenExec computations.
It does not own:
| Subject | Owner |
|---|---|
| Generic motion: values, sampling, filtering, recording, retargeting, the OpenUSD motion mapping | usd-motion-plugins |
| Live input: devices, protocols, source profiles, trackers | motion-connectors |
| Runtime composition and the update loop | usd-avatar-runtime |
The importers author data and never evaluate or simulate it. Evaluation
belongs to execVrm or to a runtime outside this repository.
avatar.vrm ─▶ usdVrmFileFormat ─▶ /Asset (skeleton, humanoid, expressions, look-at)
walk.vrma ─▶ usdVrmaFileFormat ─▶ /Animation (semantic humanoid clip)
│
usd-motion-plugins: MotionClip, retarget
│
vrmRig: VRM binding, expressions, look-at
│
motion_retarget (bake) · execVrm (OpenExec)
▼
UsdSkelAnimation on the avatar
.vrm and .vrma are separate plugins and compose by reference, never by
subLayer (VRM motion policy).
| Component | Responsibility |
|---|---|
vrmSchema |
VRM typed API schemas and the schema contract |
usdVrmFileFormat |
.vrm parsing, canonicalization and USD authoring |
usdVrmPackageResolver |
Resolution of resources embedded in a .vrm |
usdVrmaFileFormat |
.vrma clips → a UsdSkelAnimation on a canonical semantic skeleton |
execVrm |
VRM retarget computations for OpenExec over the applied VrmHumanoidAPI |
vrmImaging |
The canonical material schemas as Hydra data on the material prim, for any Hydra renderer |
vrmContainer |
GLB parsing and byte-range validation, shared by the importer and the resolver |
vrmRig |
What a VRM rig adds to the generic retarget: required bones, expression resolve, look-at |
motion_retarget |
CLI: bakes a semantic clip onto a VRM rig as UsdSkelAnimation |
vrm_export |
CLI: writes an imported .vrm as native .usda / .usdc / .usdz that opens with no VRM plugin |
usdVrm |
The aggregate product name — never a bundle id |
Identities and dependency directions: docs/architecture/WORKSPACE.md.
| What is implemented | Per-feature status, for the importer and for motion on a VRM rig |
| Supported configurations | Platforms, OpenUSD, build requirements |
| Incomplete work | The next release's open conditions |
| Release history | The changelog, and the per-version release records |
| docs/ | Which document owns which subject |
Install a released product with docs/guides/INSTALL.md. To build from source, with OpenStrata:
ost runtime pull cy2026 --profile usd --from-usd /path/to/openusd-install
ost plugin test --workspaceor with plain CMake against an OpenUSD 26.08 install and installed
usd-motion-plugins packages. Both paths, the test labels, CI and the release
lane are in docs/guides/BUILDING.md.
Original source and documentation: Apache-2.0 (see LICENSE).
Third-party components keep their own licenses; see
THIRD_PARTY_NOTICES.md. cgltf v1.15 is vendored under
third_party/cgltf with its MIT license. Contributions:
CONTRIBUTING.md · Code of Conduct ·
Security Policy.
Local test VRM avatars used during development are not part of this repository and are not redistributed here; mind their individual licenses.
