Skip to main content
Version: Current (v5.0)

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.

Table Explained

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

UnifiedSRanipal
EyeLookUpRightEye_Right_Look_Up
EyeLookDownRightEye_Right_Look_Down
EyeLookInRightEye_Right_Left
EyeLookOutRightEye_Right_Right
EyeLookUpLeftEye_Left_Look_Up
EyeLookDownLeftEye_Left_Look_Down
EyeLookInLeftEye_Left_Right
EyeLookOutLeftEye_Left_Left
EyeClosedRightEye_Right_Blink
EyeClosedLeftEye_Left_Blink
BrowDownRight
CheekSquintRight
EyeSquintRight
Eye_Right_squeeze¹
BrowDownLeft
CheekSquintLeft
EyeSquintLeft
Eye_Left_squeeze¹
EyeWideRightEye_Right_Wide
EyeWideLeftEye_Left_Wide
EyeDilationRightEye_Right_Dilation
EyeDilationLeftEye_Left_Dilation
EyeConstrictRightEye_Right_Constrict
EyeConstrictLeftEye_Left_Constrict
CheekPuffRightCheek_Puff_Right
CheekPuffLeftCheek_Puff_Left
CheekSuck'Cheek_Suck
JawOpenJaw_Open
MouthClosedMouth_Ape_Shape¹
Negates Jaw_Open
JawRightJaw_Right
JawLeftJaw_Left
JawForwardJaw_Forward
LipSuckUpperMouth_Upper_Inside
LipSuckLowerMouth_Lower_Inside
LipFunnelUpperMouth_Upper_Overturn
While Mouth_Upper_Up_Left
While Mouth_Upper_Up_Right
LipFunnelLowerMouth_Lower_Overturn
While Mouth_Lower_Down_Left
While Mouth_Lower_Down_Right
LipPuckerMouth_Pout
MouthUpperUpRightMouth_Upper_Up_Right
MouthUpperUpLeftMouth_Upper_Up_Left
MouthLowerDownRightMouth_Lower_Down_Right
MouthLowerDownLeftMouth_Lower_Down_Left
MouthSmileRightMouth_Smile_Right
MouthSmileLeftMouth_Smile_Left
MouthSadRightMouth_Sad_Right
MouthSadLeftMouth_Sad_Left
MouthRaiserLowerMouth_Lower_Overlay
TongueOutTongue_LongStep1
Tongue_LongStep2
TongueUpTongue_Up
TongueDownTongue_Down
TongueRightTongue_Right
TongueLeftTongue_Left
TongueRollTongue_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.

SRanipalUnified Conversion
Eye_Right_squeeze

From the SRanipal avatar reference, this SRanipal expression controls these Unified expressions while the eyelids are closed:

EyeSquintRight
CheekSquintRight
BrowPinchRight
BrowLowererRight

To get the intended tracking, these Unified expressions must be all active together to trigger Eye_Right_squeeze in animation. Alternatively the listed UE expressions can be made separately to allow for more robust tracking for non-SRanipal tracking.

Eye_Left_squeeze

From the SRanipal avatar reference, this SRanipal expression controls these Unified expressions while the eyelids are closed:

EyeSquintLeft
CheekSquintLeft
BrowPinchLeft
BrowLowererLeft

To get the intended tracking, these Unified expressions must be all active together to trigger Eye_Left_squeeze in animation. Alternatively the listed UE expressions can be made separately to allow for more robust tracking for non-SRanipal tracking.

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.

Alternatively, this blendshape can be turned into MouthClosed by negating JawOpen in the blendshape itself.

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.

Alternatively, this shape can be turned into LipFunnelUpper by adding Mouth_Upper_Up_Left and Mouth_Upper_Up_Right to this shape.

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.

Alternatively, this shape can be turned into LipFunnelUpper by adding Mouth_Upper_Up_Left and Mouth_Upper_Up_Right to this shape.

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.

Optionally, if there is a desire for more expressive tracking then moving the cheek raising part of Mouth_Smile_Right to it's own dedicated shape will allow CheekSquintRight to be able to control it directly, allowing for more expressibility. This will require editing the blendshape directly or creating new shapes to fulfill the change.

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.

Optionally, if there is a desire for more expressive tracking then moving the cheek raising part of Mouth_Smile_Left to it's own dedicated shape will allow CheekSquintLeft to be able to control it directly, allowing for more expressibility. This will require editing the blendshape directly or creating new shapes to fulfill the change.

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.

Some shapes are not tracked

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 Resource
VRCFT v4.0 Documentation