Last modified September 18, 2020: update humanoid contents (12d11fbd)
VRM humanoid is compatible with the motion of MotionCapture’s FK (Forward Kinematics).
The motion for one frame has the information described below:
- The Translation for Hips bone
- The Rotation for each bone
To reproduce the same pose in the Unity Scene (transferring data to a GameObject containing humanoid structure), the following conditions need to be satisfied:
- Each bone (hips, spine, chest…) corresponds to its humanoid skeleton in GLTF Node (Unity GameObject)
- The Bones’ parent-child relationships are known.
- T-Pose must be the initial pose
NoteIf the ratio (e.g. crotch - knee - ankle) is uncommon, the same pose cannot be reproduced.
The creation of humanoid avatar is pretty much the same as the original:
In addition, to make it easier to handle in the program, VRM Humanoid has the following features:
- For the initial pose, all the Gltf Nodes (Unity GameObject) have no rotation
- No scaling changes
- Palm faces downward, and it is parallel to the ground along x axis
- Thumb is parallel to the ground half way 45 degrees between x and z axis (the perspective view from the top)
In Unity, there is an object called
Avatar, which can be used to set up the model in humanoid mode.
Since the Humanoid Avatar settings are part of
fbx importer, basically the model with Humanoid Avatar from data other than fbx cannot be created.
However, we can still create the Humanoid Avatar via program. See humanoid component.
Compatible with BVH
Compatible with BVH that has the initial pose as
- Substitute the translation value into hips
- Substitute the relative rotation value into its child
For the list of human bones, please refer to:
- Target nodes not containing skinning (GLTF skin, joint and Unity SkinnedMeshRenderer, etc.) can be selected
- All required bones must be included
- The Bone’s parent-child relationship follows the humanoid definition (The first ancestor bone found in LowerLeg is UpperLeg etc.)
- The parent-child relationships for hips as root are described below. Bones that are in parentheses are non-required bones (optional):
hips - spine - chest - (upper chest) - neck - head
- [Branch] from head - left - (eye)
- [Branch] from head - right - (eye)
- [Branch] from chest or upper chest - left - (shoulder) - upper arm - lower arm - hand - (fingers)
- [Branch] from chest or upper chest - right - (shoulder) - upper arm - lower arm - hand - (fingers)
- [Branch] from hips - left - upper leg - lower leg - foot - (toes)
- [Branch] from hips - right - upper leg - lower leg - foot - (toes)
Inserting non-bone objects between humanoid bones is allowable (e.g., LowerLeg’s parent is a Cube GameObject and this Cube’s parent is UpperLeg, etc.)
Non-required bones can be skipped (UpperArm’s parent can be chest instead of shoulder)
Supplementary Information regarding T-Pose
To normalize a model, the model with T-Pose is required.
If the model doesn’t have T-Pose, you can make a T-Pose by doing any of the followings:
Menuon top and select
Export humanoid. The export dialog will pop up. Enable
- Make T-Pose for the model by manually adjusting the rotation of the arm etc.
If the T-Pose made by the first option (automatic T-Pose) didn’t go well, try to make T-Pose manually.
Also, if a model’s normalization have been done once before, please avoid re-normalizing the model as much as you can as the accuracy may gradually deviate from standard.
Force T-Pose option will be unchecked by default if the model’s normalization was already done before. That being said, the system will detect whether the model contain Meta component.
Jaw’s position is incorrect: during T-Pose process, there is a possibility that the jaw’s position is different than before. If this is the case, please remove
jaw(chin) bone setting from the model’s (FBX)
Rig. There is no influence on model if jaw bone is not used
Facial parts (bangs, etc.) have weird movements: during T-Pose process, there is a possibility that the jaw’s position is different than before. That is, facial parts (e.g. bangs) are mis-recognized as jaw and being assigned to Jaw bone. As such, bangs’ movements become weird due to this issue. Please remove
jawbone setting from the model’s (FBX)