CVR Face Tracking
Reads from the FaceTrackingManager and drives blendshapes on a SkinnedMeshRenderer so face and eye tracking hardware animates the avatar. Supports both the legacy VIVE shape set and the newer Unified Expressions shape set.
Fields
Section titled “Fields”Face Mesh
Section titled “Face Mesh”SkinnedMeshRenderer. Mesh containing the face-tracking blendshapes. Looked up by name on Start so missing shapes are skipped gracefully.
Use Facial Tracking
Section titled “Use Facial Tracking”bool. Master toggle. When false the mesh is reset to basis each frame. Can be flipped at runtime by an animation. Default true.
Blend Shape Strength
Section titled “Blend Shape Strength”float. Percentage multiplier (0-500) applied to resolved blendshape values. Default 100.
Expressions Mode
Section titled “Expressions Mode”CVRFaceTrackingExpressionsMode enum:
Legacy— 37-shape VIVE style. Only mouth / lip shapes drive.UnifiedExpressions— 88-shape Unified Expressions. Eye shapes (0-15) and mouth shapes (16-87) both drive. The component also packs unified shape values (3 per byte) into the legacy-length array so remote peers can downsample.
Face Blend Shapes
Section titled “Face Blend Shapes”string[]. Blendshape names indexed by shape slot. Length is 88 (Unified Expressions max). The Auto select Blendshapes editor button populates this array by name match. When a slot is empty, the shape is skipped.
Runtime-only state
Section titled “Runtime-only state”isLocal— true when the parent has aPlayerSetup(i.e. this is the local player’s face tracking).SyncWasUpdated,HadEyeShapeValues,HadMouthShapeValues— used by the network layer to decide whether to broadcast a tick.BlendShapeValues— legacy 37-slot float array (also carries packed unified data for network compression).- Internal
_blendShapeIndexescaches the mesh’s blendshape indices so the per-frame update does not need another lookup.
ApplyRemoteData(float[] previous, float[] current, float lerp)— inbound from the network layer. Lerps between the previous and current frames. In Unified mode, unpacks 3 bytes per legacy float into the 88-slot array.
Editor helpers
Section titled “Editor helpers”Auto select Blendshapes— populates theFaceBlendShapesslots by name.Open Blendshape Generator— opens the Face Tracking Utilities window.
See the VIVE Eye and Facial Tracking SDK and the Unified Expressions reference for shape semantics.
Related
Section titled “Related”Source
Section titled “Source”CVR-GameFiles/ABI.CCK.Components/CVRFaceTracking.cs