LIV will try to animate your .avatar when you are using the microphone, lip tracking, or eye tracking.
This is also true for VRM. If you are using VRM, please head over to the equivalent VRM article.
This article does not describe how to artistically model the blendshapes; it only describes which technical names the LIV software expects to function.
For information about the artistic aspect, you should refer to other online resources.
- In .avatar, we use Oculus Lipsync blendshapes for the microphone, and we recommend Vive SRAnipal blendshapes for face tracking
- In VRM, we use A/I/U/E/O blendshapes for the microphone, and we recommend Apple ARKit blendshapes for face tracking
.avatar Format
Naming convention
When using the .avatar format, we attempt to find out if it is compatible with microphone, and face tracking (lip and eyes).
Our current approach is to use naming conventions. In the future, we will provide you with a creation kit for avatars so that you can control exactly what is being animated.
We scan the entire avatar for SkinnedMeshRenderer components. We will animate all of those that have compatible blendshapes based on their name.
Microphone
For the microphone, it is loosely based on naming conventions derived from Oculus Lipsync, itself derived from the Viseme MPEG-4 Standard.
The blendshape names are case-sensitive. You need to make sure the names match exactly according to this list:
Viseme: Sil = viseme_sil, v_sil
Viseme: PP = viseme_PP, v_PP
Viseme: FF = viseme_FF, v_FF
Viseme: TH = viseme_TH, v_TH
Viseme: DD = viseme_DD, v_DD
Viseme: Kk = viseme_kk, v_kk
Viseme: CH = viseme_CH, v_CH
Viseme: SS = viseme_SS, v_SS
Viseme: Nn = viseme_nn, v_nn
Viseme: RR = viseme_RR, v_RR
Viseme: Aa = viseme_aa, v_aa
Viseme: E = viseme_E, v_E, viseme_ee, v_ee
Viseme: I = viseme_I, v_I, viseme_ih, v_ih
Viseme: O = viseme_O, v_O, viseme_oh, v_oh
Viseme: U = viseme_U, v_U, viseme_ou, v_ou
Eye gaze
Eye gaze works by rotating your avatar eye bones to match where you're looking at. You must enable "Use Experimental Eye Gaze" located in the VR LIV menu.
We will try to use the eye bones that are specified in the humanoid configuration of the avatar asset.
This can be set in the import settings of your avatar asset, usually a FBX file.
Lip/Eye tracking blendshapes
SRAnipal-styled naming (recommended for .avatar)
For Face tracking, it is based on SRAnipal LipShape_v2 and EyeShape_v2.
We will look for blendshapes with the following names, case sensitive:
Eye_Left_Blink Eye_Left_Wide Eye_Left_Right Eye_Left_Left Eye_Left_Up
Eye_Left_Down Eye_Right_Blink Eye_Right_Wide Eye_Right_Right Eye_Right_Left
Eye_Right_Up Eye_Right_Down Eye_Frown Eye_Left_Squeeze Eye_Right_Squeeze
Jaw_Right Jaw_Left Jaw_Forward Jaw_Open Mouth_Ape_Shape
Mouth_Upper_Right Mouth_Upper_Left Mouth_Lower_Right Mouth_Lower_Left Mouth_Upper_Overturn
Mouth_Lower_Overturn Mouth_Pout Mouth_Smile_Right Mouth_Smile_Left Mouth_Sad_Right
Mouth_Sad_Left Cheek_Puff_Right Cheek_Puff_Left Cheek_Suck Mouth_Upper_UpRight
Mouth_Upper_UpLeft Mouth_Lower_DownRight Mouth_Lower_DownLeft Mouth_Upper_Inside Mouth_Lower_Inside
Mouth_Lower_Overlay Tongue_LongStep1 Tongue_LongStep2 Tongue_Down Tongue_Up
Tongue_Right Tongue_Left Tongue_Roll Tongue_UpLeft_Morph Tongue_UpRight_Morph
Tongue_DownLeft_Morph Tongue_DownRight_Morph
ARKit-styled naming
If you avatar was already designed with ARKit in mind, we will also look for blendshapes named after ARKit-styled naming as defined in ARKitBlendShapeLocation, where the first letter is uppercase:
BrowDownLeft BrowDownRight BrowInnerUp BrowOuterUpLeft BrowOuterUpRight
CheekPuff CheekSquintLeft CheekSquintRight EyeBlinkLeft EyeBlinkRight
EyeLookDownLeft EyeLookDownRight EyeLookInLeft EyeLookInRight EyeLookOutLeft
EyeLookOutRight EyeLookUpLeft EyeLookUpRight EyeSquintLeft EyeSquintRight
EyeWideLeft EyeWideRight JawForward JawLeft JawOpen
JawRight MouthClose MouthDimpleLeft MouthDimpleRight MouthFrownLeft
MouthFrownRight MouthFunnel MouthLeft MouthLowerDownLeft MouthLowerDownRight
MouthPressLeft MouthPressRight MouthPucker MouthRight MouthRollLower
MouthRollUpper MouthShrugLower MouthShrugUpper MouthSmileLeft MouthSmileRight
MouthStretchLeft MouthStretchRight MouthUpperUpLeft MouthUpperUpRight NoseSneerLeft
NoseSneerRight TongueOut
You can also look at ARFaceAnchor.BlendShapeLocation documentation for reference but keep in mind the first letter must be uppercase.
Please don't have both ARKit-styled blendshapes and SRAnipal-styled blendshapes simultaneously!
VRM Format
If you are using VRM, please head over to the equivalent VRM article.