dh.rig
Extension: .dh-rig — Type ID: dh.rig
A rig definition maps DigitalHeaven standard bone names to model-specific bone names. This lets the system understand your armature regardless of what naming convention the original model uses (Mixamo, Blender, custom, etc.).
Properties
Section titled “Properties”| Property | Type | Required | Description |
|---|---|---|---|
$type | "dh.rig" | no | Type identifier |
name | string | no | Display name |
description | string | no | Description |
inherits | string | no | Barcode of the rig to inherit from |
bones | object | yes | Maps standard bone names → model bone names |
customBones | object | no | Maps custom (non-standard) bone names → model bone names |
The type is inferred from the file extension —
$typeis not needed in source files. The compiler adds it automatically during builds.
Example
Section titled “Example”Mapping a Mixamo-rigged model:
{ "name": "Mayu Humanoid Rig", "bones": { "Hips": "mixamorig:Hips", "Spine": "mixamorig:Spine", "Chest": "mixamorig:Spine1", "UpperChest": "mixamorig:Spine2", "Neck": "mixamorig:Neck", "Head": "mixamorig:Head", "LeftShoulder": "mixamorig:LeftShoulder", "LeftUpperArm": "mixamorig:LeftArm", "LeftLowerArm": "mixamorig:LeftForeArm", "LeftHand": "mixamorig:LeftHand", "RightShoulder": "mixamorig:RightShoulder", "RightUpperArm": "mixamorig:RightArm", "RightLowerArm": "mixamorig:RightForeArm", "RightHand": "mixamorig:RightHand", "LeftUpperLeg": "mixamorig:LeftUpLeg", "LeftLowerLeg": "mixamorig:LeftLeg", "LeftFoot": "mixamorig:LeftFoot", "LeftToes": "mixamorig:LeftToeBase", "RightUpperLeg": "mixamorig:RightUpLeg", "RightLowerLeg": "mixamorig:RightLeg", "RightFoot": "mixamorig:RightFoot", "RightToes": "mixamorig:RightToeBase" }, "customBones": { "Tail1": "mixamorig:Tail.001", "Tail2": "mixamorig:Tail.002", "EarL": "mixamorig:EarL", "EarR": "mixamorig:EarR" }}You only need to map bones that exist in your model. Missing optional bones are simply skipped.
Standard Bones
Section titled “Standard Bones”DigitalHeaven defines 56 standard bones organized into groups. 17 are required for a valid humanoid rig — the rest are optional.
| Bone | Required |
|---|---|
| Root | |
| Hips | yes |
| Spine | yes |
| Chest | yes |
| UpperChest | |
| Neck | yes |
| Head | yes |
| Bone | Required |
|---|---|
| LeftEye | |
| RightEye | |
| Jaw |
Left Arm
Section titled “Left Arm”| Bone | Required |
|---|---|
| LeftShoulder | |
| LeftUpperArm | yes |
| LeftLowerArm | yes |
| LeftHand | yes |
Right Arm
Section titled “Right Arm”| Bone | Required |
|---|---|
| RightShoulder | |
| RightUpperArm | yes |
| RightLowerArm | yes |
| RightHand | yes |
Left Hand
Section titled “Left Hand”| Bone | Required |
|---|---|
| LeftThumbMetacarpal | |
| LeftThumbProximal | |
| LeftThumbDistal | |
| LeftIndexProximal | |
| LeftIndexIntermediate | |
| LeftIndexDistal | |
| LeftMiddleProximal | |
| LeftMiddleIntermediate | |
| LeftMiddleDistal | |
| LeftRingProximal | |
| LeftRingIntermediate | |
| LeftRingDistal | |
| LeftLittleProximal | |
| LeftLittleIntermediate | |
| LeftLittleDistal |
Right Hand
Section titled “Right Hand”| Bone | Required |
|---|---|
| RightThumbMetacarpal | |
| RightThumbProximal | |
| RightThumbDistal | |
| RightIndexProximal | |
| RightIndexIntermediate | |
| RightIndexDistal | |
| RightMiddleProximal | |
| RightMiddleIntermediate | |
| RightMiddleDistal | |
| RightRingProximal | |
| RightRingIntermediate | |
| RightRingDistal | |
| RightLittleProximal | |
| RightLittleIntermediate | |
| RightLittleDistal |
Left Leg
Section titled “Left Leg”| Bone | Required |
|---|---|
| LeftUpperLeg | yes |
| LeftLowerLeg | yes |
| LeftFoot | yes |
| LeftToes |
Right Leg
Section titled “Right Leg”| Bone | Required |
|---|---|
| RightUpperLeg | yes |
| RightLowerLeg | yes |
| RightFoot | yes |
| RightToes |
Summary
Section titled “Summary”17 required bones: Hips, Spine, Chest, Neck, Head, LeftUpperArm, LeftLowerArm, LeftHand, RightUpperArm, RightLowerArm, RightHand, LeftUpperLeg, LeftLowerLeg, LeftFoot, RightUpperLeg, RightLowerLeg, RightFoot
39 optional bones: Everything else — Root, UpperChest, face bones, shoulders, fingers, toes.
Custom Bones
Section titled “Custom Bones”The customBones property handles bones that aren’t part of the humanoid standard — tails, ears, wings, extra joints, whatever your model needs.
{ "customBones": { "Tail1": "Armature_Tail.001", "Tail2": "Armature_Tail.002", "WingL": "Armature_Wing.L", "WingR": "Armature_Wing.R" }}Custom bone names are freeform — use whatever makes sense for your model. They’re used for armature linking and platform-specific features.
Setting a Null Mapping
Section titled “Setting a Null Mapping”Set a bone to null to explicitly mark it as unmapped (useful when inheriting from a rig and you need to remove a mapping):
{ "inherits": "base:rigs/humanoid.dh-rig", "bones": { "Jaw": null }}Unity Integration
Section titled “Unity Integration”DigitalHeaven bone names are automatically mapped to Unity’s HumanBone names at runtime. You don’t need to think about Unity naming — just use the standard names above and the runtime handles the translation.
The runtime component (DigitalHeavenRig) can:
- Create a Unity
Avatarfrom the bone mappings - Set up an
Animatorwith the generated avatar - Build a
HumanDescriptionfor humanoid configuration
All 56 standard bones (except Root) have direct Unity equivalents.