VIVE SRanipal
VIVE offers a facial tracking standard through the SRanipal SDK and software. This standard serves as the foundational tracking framework for devices such as the Vive Pro Eye, Vive Facial Tracker, and other VIVE products equipped with facial tracking functionalities.
The following table illustrates the mapping of SRanipal facial tracking to Unified Expressions.
This table provides a comprehensive understanding of the relationship between various shapes and Unified Expressions:
When multiple shapes are listed in the same row, they collaboratively contribute to the formation of a specific standard shape.
Some shapes have an extra condition (While X
, Negates X
)
that indicates that specified cell needs the presence or absence
of specific shapes to convey a specific expression accurately in
order to correlate it to the other expressions in that row.
This often necessitates particular adjustments (animation
or blendshape) for compatibility with Unified Expressions,
while maintaining anatomical consistency within the given row.
While
signifies that a standard requires a shape to be active to match the row.Negates
signifies that a standard requires a shape to be inactive to match the row.
Regardless of the conditions, the shape can be converted into Unified Expressions without compromising tracking quality or expression behavior.
For more concise and readable information for specific tracking standards and how they convert to Unified Expressions, please refer to Admonitions.
SRanipal Comparison
Unified | SRanipal |
---|---|
EyeLookUpRight | Eye_Right_Look_Up |
EyeLookDownRight | Eye_Right_Look_Down |
EyeLookInRight | Eye_Right_Left |
EyeLookOutRight | Eye_Right_Right |
EyeLookUpLeft | Eye_Left_Look_Up |
EyeLookDownLeft | Eye_Left_Look_Down |
EyeLookInLeft | Eye_Left_Right |
EyeLookOutLeft | Eye_Left_Left |
EyeClosedRight | Eye_Right_Blink |
EyeClosedLeft | Eye_Left_Blink |
BrowDownRight CheekSquintRight EyeSquintRight | Eye_Right_squeeze¹ |
BrowDownLeft CheekSquintLeft EyeSquintLeft | Eye_Left_squeeze¹ |
EyeWideRight | Eye_Right_Wide |
EyeWideLeft | Eye_Left_Wide |
EyeDilationRight | Eye_Right_Dilation |
EyeDilationLeft | Eye_Left_Dilation |
EyeConstrictRight | Eye_Right_Constrict |
EyeConstrictLeft | Eye_Left_Constrict |
CheekPuffRight | Cheek_Puff_Right |
CheekPuffLeft | Cheek_Puff_Left |
CheekSuck' | Cheek_Suck |
JawOpen | Jaw_Open |
MouthClosed | Mouth_Ape_Shape¹Negates Jaw_Open |
JawRight | Jaw_Right |
JawLeft | Jaw_Left |
JawForward | Jaw_Forward |
LipSuckUpper | Mouth_Upper_Inside |
LipSuckLower | Mouth_Lower_Inside |
LipFunnelUpper | Mouth_Upper_OverturnWhile Mouth_Upper_Up_Left |
LipFunnelLower | Mouth_Lower_OverturnWhile Mouth_Lower_Down_Left |
LipPucker | Mouth_Pout |
MouthUpperUpRight | Mouth_Upper_Up_Right |
MouthUpperUpLeft | Mouth_Upper_Up_Left |
MouthLowerDownRight | Mouth_Lower_Down_Right |
MouthLowerDownLeft | Mouth_Lower_Down_Left |
MouthSmileRight | Mouth_Smile_Right |
MouthSmileLeft | Mouth_Smile_Left |
MouthSadRight | Mouth_Sad_Right |
MouthSadLeft | Mouth_Sad_Left |
MouthRaiserLower | Mouth_Lower_Overlay |
TongueOut | Tongue_LongStep1 Tongue_LongStep2 |
TongueUp | Tongue_Up |
TongueDown | Tongue_Down |
TongueRight | Tongue_Right |
TongueLeft | Tongue_Left |
TongueRoll | Tongue_Roll |
- ¹ More detailed reasoning is elaborated in Admonitions
- Bold Blended Shape.
Admonitions
Certain expressions in SRanipal may not have direct or intuitive assignments to Unified Expressions due to the format of the expressions.
The following section will provide comprehensive explanations on how SRanipal controls Unified Expressions, and subsequently how Unified can be used to track SRanipal shapes. This can be useful for making SRanipal shapes compatible in Unified Expressions driven animation setups (in the case of VRCFT avatars).
Recognizing these differences in your avatar's setup should allow SRanipal shapes to track as intended. Certain animation templates have these admonitions built in, allowing SRanipal shapes to be used directly with Unified Expressions!
This section provides a thorough description of what each shape should do to track as intended with Unifed Expressions.
SRanipal | Unified Conversion |
---|---|
Eye_Right_squeeze | From the SRanipal avatar reference, this SRanipal expression controls these Unified expressions while the eyelids are closed: |
Eye_Left_squeeze | From the SRanipal avatar reference, this SRanipal expression controls these Unified expressions while the eyelids are closed: |
Mouth_Ape_Shape | This SRanipal expression controls Unified's MouthClosed expression. To get the intended tracking on this SRanipal shape, MouthClosed must negate JawOpen in the animation proportional to the amount MouthClosed is active. |
Mouth_Upper_Overturn | This SRanipal expression controls Unified's LipFunnelUpperRight and LipFunnelUpperLeft expressions. To get the intended tracking on this SRanipal shape, it should also include Mouth_Upper_Up_Right and Mouth_Upper_Up_Left when this shape is active. |
Mouth_Lower_Overturn | This SRanipal expression controls Unified's LipFunnelLowerRight and LipFunnelLowerLeft expressions. To get the intended tracking on this SRanipal shape, it should also include Mouth_Lower_Down_Right and Mouth_Lower_Down_Left when this shape is active. |
Mouth_Smile_Right | This SRanipal expression directly controls Unified's MouthCornerPullerRight and MouthCornerSlantRight, creating the MouthSmileRight Blended shape. On many avatars and on the SRanipal reference avatar, the right cheek is squinting when smiling. It is perfectly acceptable to have MouthSmileRight to have this behavior, especially when using SRanipal-compatible tracking with this avatar. |
Mouth_Smile_Left | This SRanipal expression directly controls Unified's MouthCornerPullerLeft and MouthCornerSlantLeft, creating the MouthSmileLeft Blended shape. On many avatars and on the SRanipal reference avatar, the right cheek is squinting when smiling. It is perfectly acceptable to have MouthSmileLeft to have this behavior, especially when using SRanipal-compatible tracking with this avatar. |
Tongue_LongStep1 Tongue_LongStep2 | These SRanipal expressions control TongueOut linearly. To get the intended tracking on this shape, let Tongue_LongStep1 activate from 0-0.5, while LongStep2 activates from 0.5-1 in the animation. These are corrective shapes for TongueOut, allowing for the tongue to stick out of the mouth. |
SRanipal does not include expressions to track the following Unified Expressions:
BrowPinchRight
BrowPinchLeft
BrowLowererRight
BrowLowererLeft
BrowInnerUpRight
BrowInnerUpLeft
BrowOuterUpRight
BrowOuterUpLeft
CheekSquintRight (baked into Mouth_Smile_Right)
CheekSquintLeft (baked into Mouth_Smile_Left)
MouthRaiserUpper
MouthPressRight
MouthPressLeft
MouthTightenerLeft
MouthTightenerRight
Some misc. Tongue Expressions
However, the absence of these shapes does not affect tracking quality.
Standard Documentation
Vive Developer ResourceVRCFT v4.0 Documentation