Unified Expressions
This reference document is still being updated. Changes are subject to happen discretionally.
Please consider contributing by editing this page!
Summary​
Unified Expressions is an open source face expression standard used as
the tracking standard for VRCFaceTracking and the expression shape standard
for avatars. It is fully compatible with existing face tracking shapes from other
expression standards such as ARKit
/ PerfectSync
, SRanipal
, FACS
, and others.
This document contains information about Unified Expressions, including the overall usage of it and references for shapes to use on avatars.
Unified Expressions Overview​
Why use Unified Expressions?​
Unified Expressions is a high fidelity and adaptable standard.​
Unified Expressions is a robust face expression standard that avatars can use to create face tracking shapes, and gives avatar creators a huge amount of choice in how they want to best adapt tracking behaviors to their avatars.
Unified Expressions is designed to unify all shape and tracking standards.​
VRCFaceTracking uses Unified Expressions as the bridge between tracking interfaces and avatar shapes. This allows for a huge amount of tracking customization, specialization, and backwards compatibility for many existing VRCFaceTracking avatars.
It is able to use shapes designed for other tracking standards and provide tracking transformations
to work with different shape standards such as ARKit
, FACS
, SRanipal
, and others.
Building an avatar for Unified Expressions also means that you will only have to build a single set of shapes for an avatar that will work nearly identically across different face tracking devices and interfaces. Unified Expressions shapes are untied to any device or interface implementation; the shapes are instead wholely reliant on anatomical basis to give grounding to the shapes.
Unified Expressions is formatted to be able to be improved over time.​
The Unified Expressions standard is also formatted in a heirarchy of fidelity, powered by VRCFaceTracking's dynamic parameter system, allowing avatars to adopt either more simplistic or more complex tracking behaviors out of the expression shapes. Unified Expressions was built out this way in order to retain backwards compatibility with future revisions and to allow the standard to evolve over time (if and when the need for updating arises).
Unified Expressions Best Practices​
Unified Expressions is similar to most other facial expression standards available, with the addition of many additional transformed expression shapes provided that allow avatars to highly specialize or even optimise their face tracking setups to work best with their avatars.
Blended shapes can be used to simplify, combine, or alleviate both shape creation and offer more simplified tracking behavior on avatars. Creators should familiarize with all available shapes and decide what shapes work best on certain avatars.
Unified Expressions Shapes​
This section contains documentation for all currently implemented Unified Expressions shapes available for use in VRCFaceTracking on avatars. These are all the shapes contained under the Unified Expressions shapes umbrella:
- Base Shapes, the base anatomical shapes.
- Blended Shapes, which are shapes that blend many Base Shapes into simpler shapes.
For VRCFaceTracking specific avatar parameters please refer to Avatar Parameters, which lists the parameters that are intended to control these shapes.
Information may be sparse, and we are working to incorporate features that allow us to give highly detailed explanations in the future.
To see what that might look like, hover over this text!
Base Shapes​
The following table contains all base shapes available in Unified Expressions.
Unified Expressions' Base Shapes are heavily based upon highly technical facial anatomies and, while this might be good for achieving highly detailed face tracking (and highly recommended), there may be cases where you might prefer to use more simplified or easier to create shapes. This could be to suit an avatar's style, simplify tracking behavior, or to quickly develop shapes that will just work.
Many of the following shapes are able to be discretionally mixed and matched together! Please refer to Blended Shapes for officially supported simplified shapes for avatars. Thanks to VRCFaceTracking's powerful parameter system, Unified Expressions can be organically adjusted to suit your avatar's needs.
Please read through all available shapes and decide what is best for your avatar.
Reference |
---|
Basis |
Reference | Name | Description |
---|---|---|
EyeLookOutRight | Right eye looks out. | |
EyeLookInRight | Right eye looks in. | |
EyeLookUpRight | Right eye looks up. | |
EyeLookDownRight | Right eye looks down. | |
EyeLookOutLeft | Left eye looks out. | |
EyeLookInLeft | Left eye looks in. | |
EyeLookUpLeft | Left eye looks up. | |
EyeLookDownLeft | Left eye looks down. | |
EyeClosedRight | Closes the right eyelid. | |
EyeClosedLeft | Closes the left eyelid. | |
EyeSquintRight | Squeezes the right eye socket muscles. | |
EyeSquintLeft | Squeezes the left eye socket muscles. | |
EyeWideRight | Right eyelid widens beyond relaxed. | |
EyeWideLeft | Left eyelid widens beyond relaxed. | |
EyeDilationRight | Dilates the right eye pupil | |
EyeDilationLeft | Dilates the left eye pupil | |
EyeConstrictRight | Constricts the right eye pupil | |
EyeConstrictLeft | Constricts the left eye pupil | |
BrowPinchRight | Right eyebrow pinches in. | |
BrowPinchLeft | Left eyebrow pinches in. | |
BrowLowererRight | Outer right eyebrow pulls down. | |
BrowLowererLeft | Outer Left eyebrow pulls down. | |
BrowInnerUpRight | Inner right eyebrow pulls up. | |
BrowInnerUpLeft | Inner left eyebrow pulls up. | |
BrowOuterUpRight | Outer right eyebrow pulls up. | |
BrowOuterUpLeft | Outer left eyebrow pulls up. | |
NoseSneerRight | Right side face sneers. | |
NoseSneerLeft | Left side face sneers. | |
NasalDilationRight | Right side nose canal dilates. | |
NasalDilationLeft | Left side nose canal dilates. | |
NasalConstrictRight | Right side nose canal constricts. | |
NasalConstrictLeft | Left side nose canal constricts. | |
CheekSquintRight | Raises the right side cheek. | |
CheekSquintLeft | Raises the left side cheek. | |
CheekPuffRight | Puffs the right side cheek. | |
CheekPuffLeft | Puffs the left side cheek. | |
CheekSuckRight | Sucks in the right side cheek. | |
CheekSuckLeft | Sucks in the left side cheek. | |
JawOpen | Opens jawbone. | |
MouthClosed | Closes mouth (in relation to JawOpen). | |
JawRight | Pushes jawbone right. | |
JawLeft | Pushes jawbone left. | |
JawForward | Pushes jawbone forwards. | |
JawBackward | Pulls jawbone backwards. | |
JawClench | Flexes jaw muscles. | |
JawMandibleRaise | Raises jawbone. | |
LipSuckUpperRight | Upper right lip part tucks in the mouth. | |
LipSuckUpperLeft | Upper left lip part tucks in the mouth. | |
LipSuckLowerRight | Lower right lip part tucks in the mouth. | |
LipSuckLowerLeft | Lower left lip part tucks in the mouth. | |
LipSuckCornerRight | Right lip corner folds into the mouth. | |
LipSuckCornerLeft | Left lip corner folds into the mouth. | |
LipFunnelUpperRight | Upper right lip part pushes into a funnel. | |
LipFunnelUpperLeft | Upper left lip part pushes into a funnel. | |
LipFunnelLowerRight | Lower right lip part pushes into a funnel. | |
LipFunnelLowerLeft | Lower left lip part pushes into a funnel. | |
LipPuckerUpperRight | Upper right lip part pushes outward. | |
LipPuckerUpperLeft | Upper left lip part pushes outward. | |
LipPuckerLowerRight | Lower right lip part pushes outward. | |
LipPuckerLowerLeft | Lower left lip part pushes outward. | |
MouthUpperUpRight | Upper right part of the lip pulls up. | |
MouthUpperUpLeft | Upper left part of the lip pulls up. | |
MouthLowerDownRight | Lower right part of the lip pulls up. | |
MouthLowerDownLeft | Lower left part of the lip pulls up. | |
MouthUpperDeepenRight | Upper right lip part pushes in the cheek. | |
MouthUpperDeepenLeft | Upper left lip part pushes in the cheek. | |
MouthUpperRight | Moves upper lip right. | |
MouthUpperLeft | Moves upper lip left. | |
MouthLowerRight | Moves lower lip right. | |
MouthLowerLeft | Moves lower lip left. | |
MouthCornerPullRight | Right lip corner pulls diagonally up and out. | |
MouthCornerPullLeft | Left lip corner pulls diagonally up and out. | |
MouthCornerSlantRight | Right corner lip slants up. | |
MouthCornerSlantLeft | Left corner lip slants up. | |
MouthFrownRight | Right corner lip pulls down. | |
MouthFrownLeft | Left corner lip pulls down. | |
MouthStretchRight | Right corner lip pulls out and down. | |
MouthStretchLeft | Left corner lip pulls out and down. | |
MouthDimpleRight | Right lip corner is pushed backwards. | |
MouthDimpleLeft | Left lip corner is pulled backwards. | |
MouthRaiserUpper | Raises and slightly pushes out the upper mouth. | |
MouthRaiserLower | Raises and slightly pushes out the lower mouth. | |
MouthPressRight | Right side lips press and flatten together vertically. | |
MouthPressLeft | Left side lips press and flatten together vertically. | |
MouthTightenerRight | Right side lips squeeze together horizontally. | |
MouthTightenerLeft | Left side lips squeeze together horizontally. | |
TongueOut | Tongue visibly sticks out of the mouth. | |
TongueUp | Tongue points up. | |
TongueDown | Tongue points down. | |
TongueRight | Tongue points right. | |
TongueLeft | Tongue points left. | |
TongueRoll | Sides of the tongue funnel, creating a 'hotdog' shape. | |
TongueBendDown | Tongue arches up then down inside the mouth. | |
TongueCurlUp | Tongue arches down then up inside the mouth. | |
TongueSquish | Tongue squishes together and thickens. | |
TongueFlat | Tongue flattens and thins out. | |
TongueTwistRight | Tongue tip rotates clockwise, with the rest following gradually. | |
TongueTwistLeft | Tongue tip rotates counter-clockwise, with the rest following gradually. | |
SoftPalateCloseÂą | Inner mouth throat closes. | |
ThroatSwallowÂą | The Adam's apple visibly swallows. | |
NeckFlexRightÂą | Right side neck visibly flexes. | |
NeckFlexLeftÂą | Left side neck visibly flexes. |
1: Unused by all interfaces.
2: Physically 'impossible' from normal anatomy.
Blended Shapes​
The following shapes blend together the Unified Expressions Base Shapes above into more simplified shapes. Many of these align with tracking interfaces, other face tracking standards, and generalized expressions.
Many Base Shapes may be able to be discretionally mixed and matched together that are not otherwise listed here. The listed shapes below also have direct tracking transformations available in VRCFaceTracking.
Reference | Name | Description | Basis |
---|---|---|---|
EyeClosed | Closes both eye lids. | EyeClosedRight EyeClosedRight | |
EyeWide | Widens both eye lids. | EyeWidenRight EyeWidenLeft | |
EyeSquint | Squints both eye lids. | EyeSquintRight EyeSquintLeft | |
EyeDilation | Dilates both pupils. | EyeDilationRight EyeDilationLeft | |
EyeConstrict | Constricts both pupils. | EyeConstrictRight EyeConstrictLeft | |
BrowDownRight | Pulls the right eyebrow down and in. | BrowLowererRight BrowPinchRight | |
BrowDownLeft | Pulls the left eyebrow down and in. | BrowLowererLeft BrowPinchLeft | |
BrowDown | Pulls the left eyebrow down and in. | BrowLowererRight BrowLowererLeft BrowPinchRight BrowPinchLeft | |
BrowUpRight | Right brow appears worried. | BrowInnerUpRight BrowOuterUpRight | |
BrowUpLeft | Left brow appears worried. | BrowInnerUpLeft BrowOuterUpLeft | |
BrowUp | Brows appear worried. | BrowInnerUpRight BrowInnerUpLeft BrowOuterUpRight BrowOuterUpLeft | |
NoseSneer | Entire face sneers. | NoseSneerRight NoseSneerLeft | |
NasalDilation | Both nose canals dilate. | NasalDilationRight NasalDilationLeft | |
NasalConstrict | Both nose canals constrict. | NasalConstrictRight NasalConstrictLeft | |
CheekPuff | Puffs both cheeks. | CheekPuffRight CheekPuffLeft | |
CheekSuck | Sucks both cheeks. | CheekSuckRight CheekSuckLeft | |
CheekSquint | Raises both cheeks. | CheekSquintRight CheekSquintLeft | |
LipSuckUpper | Tucks in the upper lips. | LipSuckUpperRight LipSuckUpperLeft | |
LipSuckLower | Tucks in the lower lips. | LipSuckLowerRight LipSuckLowerLeft | |
LipSuck | Tucks in the upper and lower lips. | LipSuckUpperRight LipSuckUpperLeft LipSuckLowerRight LipSuckLowerLeft | |
LipFunnelUpper | Funnels in the upper lips. | LipFunnelUpperRight LipFunnelUpperLeft | |
LipFunnelLower | Funnels in the lower lips. | LipFunnelLowerRight LipFunnelLowerLeft | |
LipFunnel | Funnels in the upper and lower lips. | LipFunnelUpperRight LipFunnelUpperLeft LipFunnelLowerRight LipFunnelLowerLeft | |
LipPuckerUpper | Upper lip part pushes outward. | LipPuckerUpperRight LipPuckerUpperLeft | |
LipPuckerLower | Lower lip part pushes outward. | LipPuckerLowerRight LipPuckerLowerLeft | |
LipPucker | Lips push outward. | LipPuckerUpperRight LipPuckerUpperLeft LipPuckerLowerRight LipPuckerLowerLeft | |
MouthUpperUp | Raises the upper lips. | MouthUpperUpRight MouthUpperUpLeft | |
MouthLowerDown | Lowers the lower lips. | MouthLowerDownRight MouthLowerDownLeft | |
MouthOpen | Mouth opens, revealing teeth. | MouthUpperUpRight MouthUpperUpLeft MouthLowerDownRight MouthLowerDownLeft | |
MouthRight | Moves mouth right. | MouthUpperRight MouthLowerRight | |
MouthLeft | Moves mouth left. | MouthUpperLeft MouthLowerLeft | |
MouthSmileRight | Right side mouth expresses a smile. | MouthCornerPullRight MouthCornerSlantRight | |
MouthSmileLeft | Left side mouth expresses a smile. | MouthCornerPullLeft MouthCornerSlantLeft | |
MouthSmile | Mouth expresses a smile. | MouthCornerPullRight MouthCornerPullLeft MouthCornerSlantRight MouthCornerSlantLeft | |
MouthSadRight | Left side mouth expresses sadness. | MouthFrownRight MouthStretchRight | |
MouthSadLeft | Right side mouth expresses sadness. | MouthFrownLeft MouthStretchLeft | |
MouthSad | Mouth expresses sadness. | MouthFrownRight MouthFrownLeft MouthStretchRight MouthStretchLeft | |
MouthStretch | Mouth stretches. | MouthStretchRight MouthStretchLeft | |
MouthDimple | Lip corner dimples | MouthDimpleRight MouthDimpleLeft | |
MouthTightener | Mouth tightens. | MouthTightenerRight MouthTightenerLeft | |
MouthPress | Mouth presses together. | MouthPressRight MouthPressLeft |
1: Unused by all interfaces.
2: Physically 'impossible' from normal anatomy.