Difference between revisions of "Humanoid Rig Requirements for IK"

From Neos Wiki
Jump to navigation Jump to search
(Marked this version for translation)
Line 4: Line 4:
 
When you import a rigged model to try and turn it into an avatar. It can be confusing to know what's required and what's not for best results. This page exists to help you understand the requirements.
 
When you import a rigged model to try and turn it into an avatar. It can be confusing to know what's required and what's not for best results. This page exists to help you understand the requirements.
  
== Support Formats ==
+
== Support Formats == <!--T:9-->
 
If you have a rigged model, that's compatible with other VR Platforms such as VRChat etc, then it should work out of the box. Just try importing the avatar.  
 
If you have a rigged model, that's compatible with other VR Platforms such as VRChat etc, then it should work out of the box. Just try importing the avatar.  
  
 +
<!--T:10-->
 
As a reminder, we '''don't''' currently support the importing of <code>.unitypackage</code> files.
 
As a reminder, we '''don't''' currently support the importing of <code>.unitypackage</code> files.
  
 +
<!--T:11-->
 
Supported '''Humanoid Avatar''' formats:
 
Supported '''Humanoid Avatar''' formats:
 
* FBX
 
* FBX
 
* GLTF
 
* GLTF
  
== Overall Rig/Model Requirements ==
+
== Overall Rig/Model Requirements == <!--T:12-->
 
* Model should be in A-pose or T-Pose.
 
* Model should be in A-pose or T-Pose.
 
* Orientation (forward facing) should be along the positive Z axis. Flipped Z can be detected as well but might contain bugs.
 
* Orientation (forward facing) should be along the positive Z axis. Flipped Z can be detected as well but might contain bugs.
 
** Quick validation for this: check "Force T-pose" in import settings. If hands are crossed, rotate 180 degrees along the Z (up-down) axis. If one hand is in front and the other hand is in back, rotate 90 degrees along the Z (up-down) axis.
 
** Quick validation for this: check "Force T-pose" in import settings. If hands are crossed, rotate 180 degrees along the Z (up-down) axis. If one hand is in front and the other hand is in back, rotate 90 degrees along the Z (up-down) axis.
  
== Bone Requirements ==
+
== Bone Requirements == <!--T:13-->
 
When you import a model, Neos uses pattern matching and heuristics to figure out the layout of your Model's Bones. This means that bone names are largely case insensitive and can have additional data around the name. As an example "hips", "Hips", "HIPS" and "cheese_hips" should all be detected as the model's hip bone. The heuristics are also forgiving of spaces so "upper arm" and "upperarm" should also be flagged correctly as an "Upper Arm" bone.
 
When you import a model, Neos uses pattern matching and heuristics to figure out the layout of your Model's Bones. This means that bone names are largely case insensitive and can have additional data around the name. As an example "hips", "Hips", "HIPS" and "cheese_hips" should all be detected as the model's hip bone. The heuristics are also forgiving of spaces so "upper arm" and "upperarm" should also be flagged correctly as an "Upper Arm" bone.
  
 +
<!--T:14-->
 
This is quite good at picking up a variety of rigs but to help you can follow this format.  
 
This is quite good at picking up a variety of rigs but to help you can follow this format.  
  
 +
<!--T:15-->
 
An extensive guide is presented below, with a key information for each segment of the body.  
 
An extensive guide is presented below, with a key information for each segment of the body.  
  
 +
<!--T:16-->
 
If this is too much detail you can also skip to a [[#Overall Summary|summary]] or [[#Example Rig|download a sample rig]]
 
If this is too much detail you can also skip to a [[#Overall Summary|summary]] or [[#Example Rig|download a sample rig]]
  
=== Central Spine/Hips ===
+
=== Central Spine/Hips === <!--T:17-->
  
 +
<!--T:18-->
 
The root of the model's armature should be its Hip. This should be a single bone which is facing upwards. It can be named: hips, pelvis, root
 
The root of the model's armature should be its Hip. This should be a single bone which is facing upwards. It can be named: hips, pelvis, root
  
 +
<!--T:19-->
 
[[File:HumanoidRigHips.png|thumb|200px|Example hip/central spine layout]] // put this on the right
 
[[File:HumanoidRigHips.png|thumb|200px|Example hip/central spine layout]] // put this on the right
  
 +
<!--T:20-->
 
Following the hips should be a chain that leads from the hips upwards: Hips -> Spine -> Chest -> Neck -> Head.
 
Following the hips should be a chain that leads from the hips upwards: Hips -> Spine -> Chest -> Neck -> Head.
  
 +
<!--T:21-->
 
So in summary:
 
So in summary:
 
{| class="wikitable"
 
{| class="wikitable"
Line 62: Line 71:
 
|}
 
|}
  
=== Shoulders and Arms ===
+
=== Shoulders and Arms === <!--T:22-->
 
Two arms should be attached to the "Chest" bone from above, one for each side of the model. Use the letters "L" and "R" to indicate which side of the model the arm is on. These are also case insentive so "l" and "r" are ok.
 
Two arms should be attached to the "Chest" bone from above, one for each side of the model. Use the letters "L" and "R" to indicate which side of the model the arm is on. These are also case insentive so "l" and "r" are ok.
  
 +
<!--T:23-->
 
The order should follow: Shoulder -> Upper Arm -> Lower Arm -> Hand. We'll cover fingers in another segment.
 
The order should follow: Shoulder -> Upper Arm -> Lower Arm -> Hand. We'll cover fingers in another segment.
  
 +
<!--T:24-->
 
[[File:HumanoidRigArm.png|thumb|200px|Example arm rig layout]] // put this on the right
 
[[File:HumanoidRigArm.png|thumb|200px|Example arm rig layout]] // put this on the right
  
 +
<!--T:25-->
 
{| class="wikitable"
 
{| class="wikitable"
 
!Order
 
!Order
Line 91: Line 103:
 
|}
 
|}
  
=== Hands ===
+
=== Hands === <!--T:26-->
  
 +
<!--T:27-->
 
[[File:HumanoidRigFingers.png|thumb|200px|Example fingers rig layout]]
 
[[File:HumanoidRigFingers.png|thumb|200px|Example fingers rig layout]]
  
 +
<!--T:28-->
 
Hands can appear quite complex but they don't need to be. Before we move onto bone names keep in mind the following:
 
Hands can appear quite complex but they don't need to be. Before we move onto bone names keep in mind the following:
 
* Fingers
 
* Fingers
Line 103: Line 117:
 
** We need an identifiable thumb.
 
** We need an identifiable thumb.
  
 +
<!--T:29-->
 
Additionally to this, if your model has 5 fingers, we'll use geometric detection to figure out what your bones are called. This process looks at the rig and can figure out which finger is which.
 
Additionally to this, if your model has 5 fingers, we'll use geometric detection to figure out what your bones are called. This process looks at the rig and can figure out which finger is which.
  
 +
<!--T:30-->
 
Even with these things in mind, you may want to setup the fingers manually. So as with other segments here are some comments on the names of the bones.
 
Even with these things in mind, you may want to setup the fingers manually. So as with other segments here are some comments on the names of the bones.
  
 +
<!--T:31-->
 
For each finger: <code><fingername>1 -> <fingername>2 -> <fingername>3 -> <fingername>4</code>
 
For each finger: <code><fingername>1 -> <fingername>2 -> <fingername>3 -> <fingername>4</code>
  
 +
<!--T:32-->
 
Where the finger names are:
 
Where the finger names are:
 
* Thumb
 
* Thumb
Line 116: Line 134:
 
* Pinky
 
* Pinky
  
 +
<!--T:33-->
 
Or explained in a table:
 
Or explained in a table:
  
 +
<!--T:34-->
 
{| class="wikitable"
 
{| class="wikitable"
 
!Finger Number
 
!Finger Number
Line 150: Line 170:
 
|}
 
|}
  
=== Legs ===
+
=== Legs === <!--T:35-->
 
Legs are simple compared to everything else. Each leg should be connected to the Hip bone. Use the letters "L" and "R" to indicate which side of the model the arm is on. These are also case insensitive so "l" and "r" are ok.
 
Legs are simple compared to everything else. Each leg should be connected to the Hip bone. Use the letters "L" and "R" to indicate which side of the model the arm is on. These are also case insensitive so "l" and "r" are ok.
  
 +
<!--T:36-->
 
[[File:HumanoidRigLeg.png|thumb|200px|Example leg rig layout]]
 
[[File:HumanoidRigLeg.png|thumb|200px|Example leg rig layout]]
  
 +
<!--T:37-->
 
{| class="wikitable"
 
{| class="wikitable"
 
!Order
 
!Order
Line 177: Line 199:
 
|}
 
|}
  
=== Heads ===
+
=== Heads === <!--T:38-->
 
Heads are simple, but some data is available to help you in a few areas:
 
Heads are simple, but some data is available to help you in a few areas:
 
* For eye tracking you will need two eye bones
 
* For eye tracking you will need two eye bones
Line 184: Line 206:
 
** Name the jaw: "Jaw"
 
** Name the jaw: "Jaw"
  
 +
<!--T:39-->
 
Visemes are covered elsewhere as they aren't associated with the rig of a model.
 
Visemes are covered elsewhere as they aren't associated with the rig of a model.
  
 +
<!--T:40-->
 
[[File:HumanoidRigHead.png|thumb|200px|Example head rig layout]]
 
[[File:HumanoidRigHead.png|thumb|200px|Example head rig layout]]
  
== Overall Summary ==
+
== Overall Summary == <!--T:41-->
 
Here are some photos of a summary of the example rig. See above for more detailed notes:
 
Here are some photos of a summary of the example rig. See above for more detailed notes:
  
 +
<!--T:42-->
 
[[File:HumanoidRigOverall.png|500px|Example overall rig]]
 
[[File:HumanoidRigOverall.png|500px|Example overall rig]]
 
[[File:HumanoidRigOverallHierarchy.png|250px|Example overall rig hierarchy shown in blender]]
 
[[File:HumanoidRigOverallHierarchy.png|250px|Example overall rig hierarchy shown in blender]]
  
== Example Rig ==
+
== Example Rig == <!--T:43-->
 
A sample Blender rig can be found here: [https://drive.google.com/drive/folders/1jlNeTwg2ZKSv1wD7HMifZ-RtTTN6mGMw Download from Google Drive].
 
A sample Blender rig can be found here: [https://drive.google.com/drive/folders/1jlNeTwg2ZKSv1wD7HMifZ-RtTTN6mGMw Download from Google Drive].
 
</translate>
 
</translate>

Revision as of 09:39, 1 November 2021

Other languages:
English • ‎čeština • ‎日本語 • ‎한국어

When you import a rigged model to try and turn it into an avatar. It can be confusing to know what's required and what's not for best results. This page exists to help you understand the requirements.

Support Formats

If you have a rigged model, that's compatible with other VR Platforms such as VRChat etc, then it should work out of the box. Just try importing the avatar.

As a reminder, we don't currently support the importing of .unitypackage files.

Supported Humanoid Avatar formats:

  • FBX
  • GLTF

Overall Rig/Model Requirements

  • Model should be in A-pose or T-Pose.
  • Orientation (forward facing) should be along the positive Z axis. Flipped Z can be detected as well but might contain bugs.
    • Quick validation for this: check "Force T-pose" in import settings. If hands are crossed, rotate 180 degrees along the Z (up-down) axis. If one hand is in front and the other hand is in back, rotate 90 degrees along the Z (up-down) axis.

Bone Requirements

When you import a model, Neos uses pattern matching and heuristics to figure out the layout of your Model's Bones. This means that bone names are largely case insensitive and can have additional data around the name. As an example "hips", "Hips", "HIPS" and "cheese_hips" should all be detected as the model's hip bone. The heuristics are also forgiving of spaces so "upper arm" and "upperarm" should also be flagged correctly as an "Upper Arm" bone.

This is quite good at picking up a variety of rigs but to help you can follow this format.

An extensive guide is presented below, with a key information for each segment of the body.

If this is too much detail you can also skip to a summary or download a sample rig

Central Spine/Hips

The root of the model's armature should be its Hip. This should be a single bone which is facing upwards. It can be named: hips, pelvis, root

Example hip/central spine layout

// put this on the right

Following the hips should be a chain that leads from the hips upwards: Hips -> Spine -> Chest -> Neck -> Head.

So in summary:

Order Part Alternative Names
1st Hips hips, pelvis, root
2nd Spine spine, chest
3rd Chest chest, upper chest, ribcage
4th Neck neck
5th Head head

Shoulders and Arms

Two arms should be attached to the "Chest" bone from above, one for each side of the model. Use the letters "L" and "R" to indicate which side of the model the arm is on. These are also case insentive so "l" and "r" are ok.

The order should follow: Shoulder -> Upper Arm -> Lower Arm -> Hand. We'll cover fingers in another segment.

Example arm rig layout

// put this on the right

Order Part Alternative Names
1st Shoulder shoulder, clavicle, collar, collarbone
2nd Upper Arm upperarm, upper arm, arm, bicep
3rd Lower Arm fore arm, forearm, lower arm, lowerarm, elbow
4th Hand hand, wrist, palm

Hands

Example fingers rig layout

Hands can appear quite complex but they don't need to be. Before we move onto bone names keep in mind the following:

  • Fingers
    • Each finger must have at least two segments.
    • We support up to 4 segments per finger.
    • We need at least 3 Fingers to identify a hand
  • Thumbs
    • We need an identifiable thumb.

Additionally to this, if your model has 5 fingers, we'll use geometric detection to figure out what your bones are called. This process looks at the rig and can figure out which finger is which.

Even with these things in mind, you may want to setup the fingers manually. So as with other segments here are some comments on the names of the bones.

For each finger: <fingername>1 -> <fingername>2 -> <fingername>3 -> <fingername>4

Where the finger names are:

  • Thumb
  • Index
  • Middle
  • Ring
  • Pinky

Or explained in a table:

Finger Number Finger Name Alternative Names Example Structure
1 Thumb thumb1.L -> thumb2.L -> thumb3.L -> thumb4.L
2 Index index1.L -> index2.L -> index3.L -> index4.L
3 Middle middle1.L -> middle2.L -> middle3.L -> middle4.L
4 Ring ring1.L -> ring2.L -> ring3.L -> ring4.L
5 Pinky little pinky1.L -> pinky2.L -> pinky3.L -> pinky4.L

Legs

Legs are simple compared to everything else. Each leg should be connected to the Hip bone. Use the letters "L" and "R" to indicate which side of the model the arm is on. These are also case insensitive so "l" and "r" are ok.

Example leg rig layout
Order Part Alternative Names
1st Upper Leg upper leg, upleg, thigh, upperleg, hipL, hipR
2nd Lower Leg leg, calf, knee, shin
3rd Foot foot, ankle
4th Toes toe, toes, ball, toebase, toes

Heads

Heads are simple, but some data is available to help you in a few areas:

  • For eye tracking you will need two eye bones
    • Name the eyes: "EyeL" and "EyeR".
  • For Jaw based talking animations you will need a Jaw Bone.
    • Name the jaw: "Jaw"

Visemes are covered elsewhere as they aren't associated with the rig of a model.

Example head rig layout

Overall Summary

Here are some photos of a summary of the example rig. See above for more detailed notes:

Example overall rig Example overall rig hierarchy shown in blender

Example Rig

A sample Blender rig can be found here: Download from Google Drive.

Supported Tools

  • Mixamo rigs work well.