Avatar standards¶
Skeleton¶
Warning
The root bone is necessary to keep the avatar's feet on the floor for animations such as jumping.
It should start at 0, 0, 0 and end where the hip bone starts. The hip bone must be parented to it.
It's not shown in the pictures because it easily obscures the other bones, but definitely add it! The blender addon will do this for you when exporting.
Root
`―― Hips
|―― LeftUpLeg
| `―― LeftLeg
| `―― LeftFoot
| `―― LeftToeBase
|―― RightUpLeg
| `―― RightLeg
| `―― RightFoot
| `―― RightToeBase
`―― Spine
`―― Spine1
`―― Spine2
|―― Neck
| `―― Head
| |―― HeadTop_End
| |―― LeftEye
| `―― RightEye
|―― LeftShoulder
| `―― LeftArm
| `―― LeftForeArm
| `―― LeftHand
| |―― LeftHandThumb1
| | `―― LeftHandThumb2
| | `―― LeftHandThumb3
| |―― LeftHandIndex1
| | `―― LeftHandIndex2
| | `―― LeftHandIndex3
| |―― LeftHandMiddle1
| | `―― LeftHandMiddle2
| | `―― LeftHandMiddle3
| |―― LeftHandRing1
| | `―― LeftHandRing2
| | `―― LeftHandRing3
| `―― LeftHandPinky1
| `―― LeftHandPinky2
| `―― LeftHandPinky3
`―― RightShoulder
`―― RightArm
`―― RightForeArm
`―― RightHand
|―― RightHandThumb1
| `―― RightHandThumb2
| `―― RightHandThumb3
|―― RightHandIndex1
| `―― RightHandIndex2
| `―― RightHandIndex3
|―― RightHandMiddle1
| `―― RightHandMiddle2
| `―― RightHandMiddle3
|―― RightHandRing1
| `―― RightHandRing2
| `―― RightHandRing3
`―― RightHandPinky1
`―― RightHandPinky2
`―― RightHandPinky3
Blendshapes¶
You don't have to add every blendshape, just the ones you want to use.
Basic blendshapes¶
These blendshapes are the most used.
EyeBlink_L
Blinking action for the left eyeEyeBlink_R
Blinking action for the right eyeJawOpen
Opening of the jaw
Audio blendshapes¶
These blendshapes are used when you speak.
Your eyebrows are blendshapes that react to a change in volume. They will move upwards when your voice gets louder. These include:
BrowsU_C
Center of the brow going upBrowsU_L
Outside corner of the left brow going upBrowsU_L
Outside corner of the right brow going up
Other audio blendshapes are randomly mixed when you speak. These include:
MouthSmile_L
Left side of the mouth lifting up to a smileMouthSmile_R
Right side of the mouth lifting up to a smileLipsFunnel
Funneling of the lips, as when you say “Oh!”LipsUpperClose
Upper lips rolled inwards
Eyelid offset¶
To ensure that the top of the eyelid rests on the iris, blendshapes are used to track the current position of the eye along with your head orientation.
EyeBlink_L
Blinking action for the left eyeEyeBlink_R
Blinking action for the right eyeEyeOpen_L
Opening of left eyeEyeOpen_R
Opening of right eyeBrowsD_L
Outside corner of the left brow moving downBrowsD_R
Outside corner of the right brow moving down
We apply a small procedural offset to the blendshape coefficients to prevent sleepy or crazy eye lids:
- If you are looking straight ahead: The
EyeBlink
andEyeOpen
coefficients will be0
. - If your eyes begin to look upward:
EyeBlink
,EyeOpen
, andBrowsU
start changing in value, reaching the values of-1
,1
, and0.5
respectively at16.3
degrees. This will have the effect of raising your lids and brows as you look upward. - If your eyes begin to look downward:
EyeBlink
andEyeOpen
start changing in value.EyeBlink
reaches a value of0.5
at32
degrees.EyeOpen
will reach a value of0.5
at27
degrees. This will have the effect of lowering your lids as you look downward.
Tweaks to your blendshapes can be made with a 3D modeling tool, or directly in your avatar’s FST file. In the FST file, blendshapes are defined with the syntax:
bs = [blendshape constant] = [your blendshape name] = [value between 0 and 1]
Here is an example of modifying your blendshapes in your FST file:
bs = BrowsU_L = head_BS_brow_up = 0.3
bs = BrowsU_C = head_BS_brow_up = 0.3
bs = BrowsU_R = head_BS_brow_up = 0.3
bs = BrowsD_R = head_BS_brow_down = 0.5
bs = BrowsD_L = head_BS_brow_down = 0.5
bs = EyeBlink_L = head_BS_L_eye_close = 1
bs = EyeBlink_R = head_BS_R_eye_close = 1
bs = EyeOpen_L = head_BS_L_eye_open = 1
bs = EyeOpen_R = head_BS_R_eye_open = 1
bs = JawOpen = JawOpen = 1
bs = MouthSmile_R = head_BS_L_smile = 0.6
bs = MouthSmile_L = head_BS_R_smile = 0.6
bs = LipsFunnel = head_BS_oo = 0.5
bs = LipsUpperClose = head_BS_mouth_down = 0.1