The webcam source tracks your face, hands and body from a camera connected to the computer running Persona. It runs Google's MediaPipe on that computer, needs no phone or mocap app, and combines with the network sources — a phone can supply the face, mocopi the body and the webcam the fingers. One camera can drive several Live2D and VRM avatars
Setting It Up
- In Tracking, turn on Enable Webcam Tracking in the Webcam Tracking section. The first time, this creates the webcam source: a card named MediaPipe Webcam
- Click the card to open its settings, pick a Camera, and choose which tasks to run
- Assign avatars with the card's Face, Body and Hands buttons
- Look forward with a neutral expression, stand upright, and click Calibrate below the card
On macOS, the system asks for camera access the first time the camera starts; if it was denied, see Troubleshooting
Source Settings
There is one webcam source, and Enable Webcam Tracking is its switch — the card has none of its own. That switch works independently of Enable Face Tracking and Enable Pose Tracking, which control network sources. Turning it off keeps the task choices and avatar assignments, and turning it back on resumes them without reassigning any other source
| Setting | Effect |
|---|---|
| Camera | The camera to use. Default Camera follows the system default; a camera that is no longer connected shows as Unavailable Camera |
| Face Tracking | Expressions and head movement. On by default |
| Hand Tracking | Live2D hand inputs, and the arms and fingers of VRM avatars. On by default |
| Body Tracking | The torso and legs of VRM avatars. Off by default |
| Mirror Tracking | On by default: the avatar moves like your reflection, so your right hand drives its left. Off, left and right are not swapped |
| Processing | CPU, the default, or GPU. GPU can raise the tracking rate but shares the graphics card with avatar rendering |
| Hand Motion for ‹name› | One row per VRM avatar whose hands the webcam tracks: Arms and Fingers, the default, or Fingers Only — see VRM |
Only enabled tasks are loaded and run. Changing the camera, a task or Processing restarts the camera
The web console and the plugin API edit the same source, tasks and assignments. The camera list, Calibrate and the preview are in the desktop app only
Assigning Avatars
Where a network source's card has one Assign Avatars button, the webcam's has three: Face, Body and Hands. Each opens the same multi-select, and Body lists VRM avatars only. An avatar takes each of the three from one source at a time, which is how webcam and device tracking combine
So one avatar can take its face from LAPLACE Persona Tracker, its body from mocopi and its fingers from the webcam. Selecting an avatar that another source already tracks on that channel opens Reassign Tracking, as it does for any source. A task that is switched off leaves its channel untracked on the avatars assigned to it; Persona never falls back to another source
Like any source, the webcam can drive several avatars at once, each receiving the same tracking
Calibration
Calibrate sits on the status line below the card, and reads Recalibrate once a calibration is in place. It is available while the camera sees a face, a hand or a body. The hint under the preview gives the pose: look forward with a neutral expression and stand upright, then calibrate
- Face — your head pose and expression at that moment become neutral. Head angles and lean are measured from it, and expressions from your resting face. Until you calibrate, the first face the camera sees serves as neutral
- Hands — on VRM avatars, the next moment only one hand is in view sets how far from the camera and how high your hands rest, which scales the arms' reach
- Body — the direction you face and the spot you stand on become the origin for turning and moving. Bent legs are not taken as the rest pose
Restarting the camera, or changing Mirror Tracking, discards the calibration
Preview and Frame Rate
The Webcam Tracking Preview below the card draws the landmarks MediaPipe finds as lines — the eyes, mouth and outline of the face, the hands and the body — mirrored when Mirror Tracking is on. It never shows the camera image, and between results it holds the latest landmarks without interpolating between updates. The status line above it shows the source's status and, while tracking, the tracking rate, as in tracking · 30 FPS
The tracking rate counts completed updates per second, separately from the stage's own frame rate that Show FPS Counter displays. Persona asks the camera for up to 60 fps; what you get depends on the rate the camera actually delivers, on how many tasks are enabled — they run one after another on every frame — and on Processing. A faster GPU cannot supply frames faster than the camera, and each extra task can lower the rate
Status
The card, and the line beside Enable Webcam Tracking, report the same status words as other sources, judged by what the camera detects:
| Status | Meaning |
|---|---|
| off | Enable Webcam Tracking is off, or every task is |
| waiting… | The camera is starting, or, with Face Tracking off, no hand or body is detected |
| tracking | An enabled task detects a face, a hand or a body — so it can read tracking with no face in view |
| no face | Face Tracking is on but sees no face, and no hand or body is detected either |
The status line above the preview also reads starting… while the camera and tracker load, and unavailable when they fail, with a message and Retry. The Face Tracking and Pose Tracking statuses count network sources only
What Each Task Drives
Live2D
- Face feeds the same mapping as a phone: derived inputs such as
FaceAngleXandMouthOpen, and theARKit*inputs, through the model's parameter bindings - Hands feed the 28 hand inputs, which reach the model through its bindings in the same way
- Body has nothing to drive: Live2D has no humanoid rig, and Persona does not invent torso or limb parameters
VRM
- Face drives expressions, gaze and the head the way a phone does, perfect sync included
- Hands with Arms and Fingers move the shoulders, arms, wrists and fingers: where your wrist is in the image becomes an arm target, solved with the avatar's own arm lengths. Fingers Only moves the finger bones alone
- Body turns the torso and legs and moves the avatar by an estimate. Sideways and vertical movement follow your position in the image; forward and back is judged from how large your torso appears and limited to ±0.5 m. It does not track absolute walking positions, and the feet are not locked to the ground
Body Tracking does not move the arms — arm gestures come from Hand Tracking. While a face source is driving the avatar, it keeps the head and neck
With VMC or mocopi
When VMC or mocopi drives an avatar's body, that source controls the shoulders and elbows, and webcam hands add wrist and finger rotation on top. With Fingers Only, the body source keeps the wrists too
Hand Inputs
Hand tracking feeds these inputs to Live2D parameter bindings, grouped under Hands in the editor. The names follow VTube Studio's hand tracking, plus HandLeftAngleY and HandRightAngleY, and every HandLeft… input has a HandRight… twin:
| Input | Range | Meaning |
|---|---|---|
HandLeftFound | 0 – 1 | 1 while that hand is detected |
HandLeftPositionX, HandLeftPositionY, HandLeftPositionZ | −10 – 10 | Wrist position: X outward, Y up, Z toward the camera, estimated from palm size |
HandLeftAngleX, HandLeftAngleZ | −180° – 180° | Wrist rotation |
HandLeftAngleY | −90° – 90° | Wrist rotation |
HandLeftOpen | 0 – 1 | The average of the five fingers |
HandLeftFinger_1_Thumb … HandLeftFinger_5_Pinky | 0 – 1 | Each finger, 1 when straight |
BothHandsFound | 0 – 1 | 1 while both hands are detected |
HandDistance | 0 – 10 | The distance between the wrists |
A model without bindings of its own binds any Cubism parameter named after a hand input, using that parameter's own range — so a parameter authored for ±1 is not driven as if it were ±10
Limits
- MediaPipe's face blendshapes follow ARKit's names but include no tongue, so
tongueOutnever moves — a webcam image is not the equivalent of an iPhone's TrueDepth camera - Everything is estimated from one image: hand distance from palm size, body depth from torso size. These are estimates, not measured positions
- A hand that is hidden, overlaps the other or leaves the frame is dropped rather than guessed. Body tracking needs both shoulders and both hips in view
- On VRM, a hand or body lost for a moment is held for 200 ms, then blends back to the pose underneath over about 0.4 s. On Live2D, a lost hand's
Foundinput drops to 0 while its other inputs keep their last values, so the rig's own fade can finish
Privacy
Tracking runs on this computer, with MediaPipe's models bundled in the app, so nothing is downloaded when it starts. Camera frames never leave Persona — even the preview in the control window receives only landmarks. The MediaPipe library would otherwise report usage metrics to Google; Persona blocks that request. See Privacy and Security for what is stored and who can read it
Troubleshooting
"Camera access was denied"
Allow Persona to use the camera in your system settings, then restart it. On macOS that is System Settings → Privacy & Security → Camera, and a changed permission only takes effect once Persona restarts
"The camera is unavailable"
The camera was unplugged or another app is holding it. Choose another Camera, or click Retry
"Webcam tracking could not start"
The tracker failed to load. Click Retry to reload it
Last updated on September 19, 2026