Face Tracking

Face tracking using a webcam or iPhone

This page has been machine translated and may contain inaccuracies.
In this guide, the avatar display app of VRC Avatar Viewer is referred to as the "Viewer App", and the motion capture app (Motion Capture for VRC Avatar Viewer) is referred to as the "Capture App".

Motion Capture for VRC Avatar Viewer (hereafter "the capture app") can also reflect facial expressions such as blinking and mouth movements onto the avatar. You select the method of capturing facial expression data and the format for sending it to the avatar.

Two Data Sources (Capture Methods)

  • Webcam (default) Estimates facial expressions from the video of a webcam connected to the PC. No additional equipment is needed and anyone can use it, but it has limitations such as not being able to capture cheek or tongue movements.
  • iPhone (iFacialMocap) Using a Face ID-compatible iPhone with iFacialMocap (a paid iOS app), you can capture 52 types of high-precision facial expression data based on ARKit. The expressiveness greatly exceeds that of a webcam.

The format used to send the captured facial expression data to the avatar is selected via "Facial Expression Send Format" (see Step 3 for details).

Tips
  • When iFacialMocap is connected, iFacialMocap's facial expression data takes priority over the webcam's (body movements remain from the webcam)
  • Regardless of the send format, if iFacialMocap is enabled, its facial expression data will be used
  • For details on VRChat integration, see the Face Tracking in VRChat guide
1

Capture Facial Expressions with a Webcam

This is the default method. If you start the camera following the steps in the Streaming Mode Guide, facial expressions will automatically be estimated from the webcam. No additional configuration is required.

Capturing facial expressions with a webcam
Capturing facial expressions with a webcam

1-1. Expressions That Can Be Captured

  • Blinking (each eye individually)
  • Vowels (A, I, U, E, O)
  • Gaze direction (up, down, left, right)
  • Eyebrow raise/lower, mouth open/close, mouth corner movement, etc.

1-2. What Cannot / Is Difficult to Capture

  • Cheek puffing, tongue movement
  • Accuracy drops significantly in dark environments. Sufficient brightness for the face to be clearly visible is required
  • Angles where the front of the face is not visible, such as profile or looking down
Choosing a Send Format
  • When using a webcam alone, VRM Standard is recommended. It works naturally with most avatars
  • Perfect Sync and VRCFT also work. However, as noted above, some movements cannot be captured.
2

Capture High-Precision Expressions with iPhone (iFacialMocap)

Using a Face ID-compatible iPhone (iPhone X or later) significantly improves the precision of facial expressions compared to a webcam. The iOS app iFacialMocap is required.

iFacialMocap
iFacialMocap

2-1. Requirements

  • A Face ID-compatible iPhone or iPad Pro
  • iFacialMocap purchased from the App Store (paid iOS app)
  • The iPhone and PC must be connected to the same Wi-Fi (LAN)

2-2. Setup on the iPhone Side

  1. Launch iFacialMocap on your iPhone
  2. The screen will display "Please connect with the PC software", so make a note of the IP address (e.g., 192.168.1.10)
If the IP Address Is Not Displayed
  • Open iFacialMocap's settings and check "Destination Settings". If a value is entered in "Destination IP Address", it will not be displayed. Press "Reset Destination Settings" below it and restart the app to display it.

2-3. Setup on the Capture App Side

  1. Enter the iPhone's IP address you noted into the "iFacialMocap IP Address" field in the capture app
  2. Turn ON "Use iFacialMocap"
  3. If the status next to it changes to "Receiving", the connection is successful

2-4. Meaning of Status Display

StatusMeaning
StoppedThe "Use iFacialMocap" toggle is OFF
IP Not EnteredThe iPhone's IP is blank. Once entered, it will automatically attempt to connect
Waiting for ConnectionHandshake was sent but there's no response from the iPhone (iFacialMocap not running / wrong IP / different network, etc.)
ReceivingFacial expression data is being received normally

2-5. Expressions That Can Be Captured

52 ARKit-based blendshapes + head rotation + left/right gaze can be captured. This includes cheek puffing and tongue movements that cannot be captured by webcam (the avatar must have the corresponding blendshapes).

About Combined Use with Webcam
  • Even while iFacialMocap is enabled, body, arm, and finger movements continue to be captured from the webcam
  • This is a hybrid configuration: "Facial expressions from iFacialMocap, body from webcam"
3

Choose a Facial Expression Send Format (Blendshape Standard)

Select from the "Facial Expression Send Format" dropdown in the capture app. Choose according to what your avatar supports.

Selecting the facial expression send format
Selecting the facial expression send format

VRM Standard

Sends basic facial expressions that VRM natively has, such as blinking, vowels, and gaze, via VMC. Works with any avatar, but the expression is simple. This is the default recommendation when using a webcam alone.

Perfect Sync

Sends 52 ARKit blendshapes via VMC. On Perfect Sync-compatible avatars, even subtle movements of mouth corners, eyebrows, and eyelids are reflected. It is effective when combined with iFacialMocap.

VRCFT

Uses the Unified Expressions standard of VRCFaceTracking 5.x, and is sent simultaneously to both VMC and VRChat OSC. Its key feature is that the same facial expression can be reproduced in both your VRChat avatar and the viewer (e.g., for OBS streaming).

Tips
  • When VRCFT is selected, the caption below the "Start Sending" button changes to "Send Type: VMC + VRChat OSC"
  • For detailed VRChat integration steps, see the Face Tracking in VRChat guide
  • The "Facial Expression Send Format" on the capture app side and the "Type" on the Viewer side must be set to the same value (see Step 4 for details)
4

Choose the Face Tracking Type on the Viewer App Side

Face tracking format
Face tracking format

The "Facial Expression Send Format" selected on the capture app side and the "Type" selected on the Viewer app side must be set to the same value. The type on the Viewer side is switched from the window opened via the streaming mode toolbar → "Face Tracking" button.

4-1. Open the Window

  1. Display the avatar in the Viewer app
  2. Turn on Streaming Mode
  3. Click the "Face Tracking" button in the streaming panel

4-2. Switch the Type

Each click of the "Type" button at the top of the window cycles through the options in the order VRM/VRChat Standard → Perfect Sync → VRCFT. Make sure it matches the selection on the capture app side.

Viewer "Type"Capture App "Facial Expression Send Format"
VRM/VRChat StandardVRM Standard
Perfect SyncPerfect Sync
VRCFTVRCFT

4-3. How to Read the "Supported:" Display

Directly below the "Type" button, a list of the types supported by the currently loaded avatar is displayed, like "Supported: VRM/VRChat Standard, Perfect Sync".

4-4. Notes

  • The category-based facial expression intensity sliders are disabled while VRCFT is selected: Because VRCFT drives expression parameters directly via VRChat OSC, the Viewer's blendshape intensity adjustments are not applied