API reference
API reference
Select your platform
No SDKs available
No versions available

OVRFaceExpressions Class

Extends MonoBehaviour, IReadOnlyCollection< float >
Implements OVRFaceExpressions.WeightProvider
This class manages the face expressions data provided per frame, and is responsible for stopping and starting face tracking.
Use this class to read face tracking data, accessible via OVRFaceExpressions.this and OVRFaceExpressions.GetWeight to drive the blend shapes on a SkinnedMeshRenderer. For more information, see Face Tracking for Movement SDK for Unity.
Refer to the OVRFaceExpressions.FaceExpression enum for the list of face expressions that contain weights that can be applied to blend shapes.

Properties

AreVisemesValid : bool
[Get]
True if the visemes are valid, otherwise false.
This value gets updated in every frame. You should check this value before querying for visemes. If you query visemes when it's false, InvalidOperationException will be thrown.
Signature
bool AreVisemesValid
Count : int
[Get]
The number of items in this collection (facial expression weights).
Signature
int Count
EyeFollowingBlendshapesValid : bool
[Get]
True if the eye look-related blend shapes are valid, otherwise false.
This property affects the behavior of two sets of blend shapes.
EyesLook:
  • FaceExpression.EyesLookDownL
  • FaceExpression.EyesLookDownR
  • FaceExpression.EyesLookLeftL
  • FaceExpression.EyesLookLeftR
  • FaceExpression.EyesLookRightL
  • FaceExpression.EyesLookRightR
  • FaceExpression.EyesLookUpL
  • FaceExpression.EyesLookUpR
EyesClosed:
  • FaceExpression.EyesClosedL
  • FaceExpression.EyesClosedR
When EyeFollowingBlendshapesValid is false:
  • The EyesLook blend shapes are set to zero.
  • The EyesClosed blend shapes range from 0..1, and represent the true state of the eyelids.
When EyeFollowingBlendshapesValid is true:
  • The EyesLook blend shapes are valid.
  • The EyesClosed blend shapes are modified so that the sum of the EyesClosedX and EyesLookDownX blend shapes range from 0..1. This helps avoid double deformation of the avatar's eye lids when they may be driven by both the EyesClosed and EyesLookDown blend shapes. To recover the true EyesClosed values, add the minimum of EyesLookDownL and EyesLookDownR blend shapes back using the following formula:
    EyesClosedL += min(EyesLookDownL, EyesLookDownR)
    EyesClosedR += min(EyesLookDownL, EyesLookDownR)
Signature
bool EyeFollowingBlendshapesValid
FaceTrackingEnabled : bool
[Get]
This will be true if face tracking is enabled, otherwise false.
This is returning the current face tracking enabled state from OVRPlugin - to enable/disable face tracking, please refer to OVRPlugin.StartFaceTracking2 and OVRPlugin.StopFaceTracking.
Signature
bool FaceTrackingEnabled
this[FaceExpression expression] : float
[Get]
This will return the weight of the specified FaceExpression present in the expression weights array.
Signature
float this[FaceExpression expression]
ValidExpressions : bool
[Get]
True if the facial expressions returned from the current face tracking data are valid, otherwise false.
This is equivalent to checking if the OVRPlugin.FaceState is valid on this frame.
This value gets updated in every frame. You should check this value before querying for face expressions.
Signature
bool ValidExpressions

Methods

CopyTo ( array , startIndex )
Copies expression weights to a pre-allocated array.
Signature
void CopyTo(float[] array, int startIndex=0)
Parameters
array: float[]  Pre-allocated destination array for expression weights
startIndex: int  Starting index in the destination array
Returns
void
Throws
ArgumentNullException  Thrown when array is null. ArgumentException  Thrown when there is not enough capacity to copy weights to array at startIndex index. ArgumentOutOfRangeException  Thrown when startIndex value is out of array bounds. InvalidOperationException  Thrown when OVRFaceExpressions.ValidExpressions is false.
CopyVisemesTo ( array , startIndex )
Copies visemes to a pre-allocated array.
Signature
void CopyVisemesTo(float[] array, int startIndex=0)
Parameters
array: float[]  Pre-allocated destination array for visemes
startIndex: int  Starting index in the destination array
Returns
void
Throws
ArgumentNullException  Thrown when array is null. ArgumentException  Thrown when there is not enough capacity to copy weights to array at startIndex index. ArgumentOutOfRangeException  Thrown when startIndex value is out of array bounds. InvalidOperationException  Thrown when OVRFaceExpressions.AreVisemesValid is false.
GetEnumerator ()
Gets the face expressions enumerator, used for enumerating over OVRFaceExpressions as a collection to read data in this collection of facial expressions by accessing this.
Signature
FaceExpressionsEnumerator GetEnumerator()
Returns
FaceExpressionsEnumerator
GetViseme ( viseme )
This will return the weight of the given viseme.
Signature
float GetViseme(FaceViseme viseme)
Parameters
viseme: FaceViseme
Returns
float  Returns weight of viseme ranged between 0.0 to 1.0.
Throws
InvalidOperationException  Thrown when OVRFaceExpressions.AreVisemesValid is false. ArgumentOutOfRangeException  Thrown when viseme value is not in range.
GetWeight ( expression )
Returns the weight of the specified FaceExpression by accessing the expression weights array present through this.
Signature
float GetWeight(FaceExpression expression)
Parameters
expression: FaceExpression  The specified FaceExpression to get the weight for.
Returns
float  The weight of the specified FaceExpression.
ToArray ()
Allocates a float array and copies expression weights to it.
Signature
float[] ToArray()
Returns
float[]
TryGetFaceExpressionWeight ( expression , weight )
This method will try to get the weight of the specified FaceExpression if it's valid.
This can be used if it isn't certain that the specified FaceExpression is a valid expression, or if the facial expressions on this frame are valid.
Signature
bool TryGetFaceExpressionWeight(FaceExpression expression, out float weight)
Parameters
expression: FaceExpression  The expression to get the weight of.
weight: out float  The output argument that will contain the expression weight or 0.0 if it's not valid.
Returns
bool  Returns true if the expression weight is valid, false otherwise.
TryGetFaceTrackingDataSource ( dataSource )
This method tries to get the data source that was used for the current frame for face tracking data.
This can be used if it isn't certain that the facial expressions on this frame are valid.
Signature
bool TryGetFaceTrackingDataSource(out FaceTrackingDataSource dataSource)
Parameters
dataSource: out FaceTrackingDataSource  The output argument that will contain the tracking data source.
Returns
bool  Returns true if the face tracking data source is valid, false otherwise.
TryGetFaceViseme ( viseme , weight )
This method tries to gets the weight of the given viseme if it's available.
Signature
bool TryGetFaceViseme(FaceViseme viseme, out float weight)
Parameters
viseme: FaceViseme  The viseme to get the weight of.
weight: out float  The output argument that will contain the viseme weight or 0.0 if it's not available.
Returns
bool  Returns true if the viseme weight is valid, false otherwise.
TryGetWeightConfidence ( region , weightConfidence )
This method tries to get the confidence weight of the given face part if it's available.
This can be used if it isn't certain that the facial expressions on this frame are valid.
Signature
bool TryGetWeightConfidence(FaceRegionConfidence region, out float weightConfidence)
Parameters
region: FaceRegionConfidence  The part of the face to get the confidence weight of.
weightConfidence: out float  The output argument that will contain the weight confidence or 0.0 if it's not valid.
Returns
bool  Returns true if the weight confidence is valid, false otherwise.

Inner Interface

WeightProvider Interface

The interface for the weight provider that OVRFaceExpressions uses to expose information about the face expressions weights available from face tracking.

Methods

GetWeight ( expression )
Signature
float GetWeight(FaceExpression expression)
Parameters
expression: FaceExpression
Returns
float

Inner Struct

FaceExpressionsEnumerator Struct

Extends IEnumerator< float >
The implementation of IEnumerator for face expressions weights, used for enumerating directly over OVRFaceExpressions.
This is used when reading this data as a collection of facial expressions by accessing this.

Properties

Current : float
[Get]
Gets the element of this collection at the current position of the enumerator.
Signature
float Current
Current : object IEnumerator.
[Get]
Signature
object IEnumerator. Current

Methods

Dispose ()
Signature
void Dispose()
Returns
void
MoveNext ()
Advances the enumerator to the next element of the collection.
Signature
bool MoveNext()
Returns
bool  Returns true if the enumerator was successfully advanced to the next element in this collection, false otherwise.
Reset ()
Sets the enumerator to its initial position, which is before the first element in the collection.
Signature
void Reset()
Returns
void

Inner Enums

FaceRegionConfidence Enum

The face part type used for getting the face tracking confidence weight in TryGetWeightConfidence.

Enumeration Constants

MemberValueDescription
Lower
OVRPlugin.FaceRegionConfidence.Lower
Represents the lower part of the face. It includes the mouth, chin and a portion of the nose and cheek.
Upper
OVRPlugin.FaceRegionConfidence.Upper
Represents the upper part of the face. It includes the eyes, eyebrows and a portion of the nose and cheek.
Max
OVRPlugin.FaceRegionConfidence.Max
Used to determine the size of the FaceRegionConfidence enum.

FaceTrackingDataSource Enum

The source type that the face tracking data is currently based off of.
This is part of the data contained in OVRPlugin.FaceState.

Enumeration Constants

MemberValueDescription
Visual
OVRPlugin.FaceTrackingDataSource.Visual
Represents visual based face tracking. This is the case if the face tracking data came from visual based face tracking.
Audio
OVRPlugin.FaceTrackingDataSource.Audio
Represents audio based face tracking. if the face tracking data came from audio based face tracking.
Count
OVRPlugin.FaceTrackingDataSource.Count
Used to determine the size of the FaceTrackingDataSource enum.

FaceExpression Enum

List of face expressions, based off of the Facial Action Coding System (FACS).

Enumeration Constants

MemberValue
Invalid
OVRPlugin.FaceExpression2.Invalid
BrowLowererL
OVRPlugin.FaceExpression2.Brow_Lowerer_L
BrowLowererR
OVRPlugin.FaceExpression2.Brow_Lowerer_R
CheekPuffL
OVRPlugin.FaceExpression2.Cheek_Puff_L
CheekPuffR
OVRPlugin.FaceExpression2.Cheek_Puff_R
CheekRaiserL
OVRPlugin.FaceExpression2.Cheek_Raiser_L
CheekRaiserR
OVRPlugin.FaceExpression2.Cheek_Raiser_R
CheekSuckL
OVRPlugin.FaceExpression2.Cheek_Suck_L
CheekSuckR
OVRPlugin.FaceExpression2.Cheek_Suck_R
ChinRaiserB
OVRPlugin.FaceExpression2.Chin_Raiser_B
ChinRaiserT
OVRPlugin.FaceExpression2.Chin_Raiser_T
DimplerL
OVRPlugin.FaceExpression2.Dimpler_L
DimplerR
OVRPlugin.FaceExpression2.Dimpler_R
EyesClosedL
OVRPlugin.FaceExpression2.Eyes_Closed_L
EyesClosedR
OVRPlugin.FaceExpression2.Eyes_Closed_R
EyesLookDownL
OVRPlugin.FaceExpression2.Eyes_Look_Down_L
EyesLookDownR
OVRPlugin.FaceExpression2.Eyes_Look_Down_R
EyesLookLeftL
OVRPlugin.FaceExpression2.Eyes_Look_Left_L
EyesLookLeftR
OVRPlugin.FaceExpression2.Eyes_Look_Left_R
EyesLookRightL
OVRPlugin.FaceExpression2.Eyes_Look_Right_L
EyesLookRightR
OVRPlugin.FaceExpression2.Eyes_Look_Right_R
EyesLookUpL
OVRPlugin.FaceExpression2.Eyes_Look_Up_L
EyesLookUpR
OVRPlugin.FaceExpression2.Eyes_Look_Up_R
InnerBrowRaiserL
OVRPlugin.FaceExpression2.Inner_Brow_Raiser_L
InnerBrowRaiserR
OVRPlugin.FaceExpression2.Inner_Brow_Raiser_R
JawDrop
OVRPlugin.FaceExpression2.Jaw_Drop
JawSidewaysLeft
OVRPlugin.FaceExpression2.Jaw_Sideways_Left
JawSidewaysRight
OVRPlugin.FaceExpression2.Jaw_Sideways_Right
JawThrust
OVRPlugin.FaceExpression2.Jaw_Thrust
LidTightenerL
OVRPlugin.FaceExpression2.Lid_Tightener_L
LidTightenerR
OVRPlugin.FaceExpression2.Lid_Tightener_R
LipCornerDepressorL
OVRPlugin.FaceExpression2.Lip_Corner_Depressor_L
LipCornerDepressorR
OVRPlugin.FaceExpression2.Lip_Corner_Depressor_R
LipCornerPullerL
OVRPlugin.FaceExpression2.Lip_Corner_Puller_L
LipCornerPullerR
OVRPlugin.FaceExpression2.Lip_Corner_Puller_R
LipFunnelerLB
OVRPlugin.FaceExpression2.Lip_Funneler_LB
LipFunnelerLT
OVRPlugin.FaceExpression2.Lip_Funneler_LT
LipFunnelerRB
OVRPlugin.FaceExpression2.Lip_Funneler_RB
LipFunnelerRT
OVRPlugin.FaceExpression2.Lip_Funneler_RT
LipPressorL
OVRPlugin.FaceExpression2.Lip_Pressor_L
LipPressorR
OVRPlugin.FaceExpression2.Lip_Pressor_R
LipPuckerL
OVRPlugin.FaceExpression2.Lip_Pucker_L
LipPuckerR
OVRPlugin.FaceExpression2.Lip_Pucker_R
LipStretcherL
OVRPlugin.FaceExpression2.Lip_Stretcher_L
LipStretcherR
OVRPlugin.FaceExpression2.Lip_Stretcher_R
LipSuckLB
OVRPlugin.FaceExpression2.Lip_Suck_LB
LipSuckLT
OVRPlugin.FaceExpression2.Lip_Suck_LT
LipSuckRB
OVRPlugin.FaceExpression2.Lip_Suck_RB
LipSuckRT
OVRPlugin.FaceExpression2.Lip_Suck_RT
LipTightenerL
OVRPlugin.FaceExpression2.Lip_Tightener_L
LipTightenerR
OVRPlugin.FaceExpression2.Lip_Tightener_R
LipsToward
OVRPlugin.FaceExpression2.Lips_Toward
LowerLipDepressorL
OVRPlugin.FaceExpression2.Lower_Lip_Depressor_L
LowerLipDepressorR
OVRPlugin.FaceExpression2.Lower_Lip_Depressor_R
MouthLeft
OVRPlugin.FaceExpression2.Mouth_Left
MouthRight
OVRPlugin.FaceExpression2.Mouth_Right
NoseWrinklerL
OVRPlugin.FaceExpression2.Nose_Wrinkler_L
NoseWrinklerR
OVRPlugin.FaceExpression2.Nose_Wrinkler_R
OuterBrowRaiserL
OVRPlugin.FaceExpression2.Outer_Brow_Raiser_L
OuterBrowRaiserR
OVRPlugin.FaceExpression2.Outer_Brow_Raiser_R
UpperLidRaiserL
OVRPlugin.FaceExpression2.Upper_Lid_Raiser_L
UpperLidRaiserR
OVRPlugin.FaceExpression2.Upper_Lid_Raiser_R
UpperLipRaiserL
OVRPlugin.FaceExpression2.Upper_Lip_Raiser_L
UpperLipRaiserR
OVRPlugin.FaceExpression2.Upper_Lip_Raiser_R
TongueTipInterdental
OVRPlugin.FaceExpression2.Tongue_Tip_Interdental
TongueTipAlveolar
OVRPlugin.FaceExpression2.Tongue_Tip_Alveolar
TongueFrontDorsalPalate
OVRPlugin.FaceExpression2.Tongue_Front_Dorsal_Palate
TongueMidDorsalPalate
OVRPlugin.FaceExpression2.Tongue_Mid_Dorsal_Palate
TongueBackDorsalVelar
OVRPlugin.FaceExpression2.Tongue_Back_Dorsal_Velar
TongueOut
OVRPlugin.FaceExpression2.Tongue_Out
TongueRetreat
OVRPlugin.FaceExpression2.Tongue_Retreat
Max
OVRPlugin.FaceExpression2.Max

FaceViseme Enum

List of face visemes.

Enumeration Constants

MemberValueDescription
Invalid
OVRPlugin.FaceViseme.Invalid
SIL
OVRPlugin.FaceViseme.SIL
The viseme representing silence.
PP
OVRPlugin.FaceViseme.PP
The viseme representing p, b, and m.
FF
OVRPlugin.FaceViseme.FF
The viseme representing f and v.
TH
OVRPlugin.FaceViseme.TH
The viseme representing th.
DD
OVRPlugin.FaceViseme.DD
The viseme representing t and d.
KK
OVRPlugin.FaceViseme.KK
The viseme representing k and g.
CH
OVRPlugin.FaceViseme.CH
The viseme representing tS, dZ, and S.
SS
OVRPlugin.FaceViseme.SS
The viseme representing s and z.
NN
OVRPlugin.FaceViseme.NN
The viseme representing n and l.
RR
OVRPlugin.FaceViseme.RR
The viseme representing r.
AA
OVRPlugin.FaceViseme.AA
The viseme representing a:.
E
OVRPlugin.FaceViseme.E
The viseme representing e.
IH
OVRPlugin.FaceViseme.IH
The viseme representing ih.
OH
OVRPlugin.FaceViseme.OH
The viseme representing oh.
OU
OVRPlugin.FaceViseme.OU
The viseme representing ou.
Count
OVRPlugin.FaceViseme.Count