M.010.14 — iOS TrueDepth Face Tracking (52 Blendshapes) Execution Spec
Date: 2026-04-04
Owner: Copilot execution lane
Status: Ready for implementation
Goal
Mirror user facial expressions into holographic avatars using iOS TrueDepth face tracking with the full ARKit blendshape set, producing low-latency expressive telepresence in HoloScript scenes.
Product behavior
- User enables Face Tracking in iOS mobile session.
- Front camera initializes TrueDepth tracking.
- Runtime streams blendshape coefficients per frame.
- Avatar rig maps coefficients to target morphs.
- Remote peers (or local preview) see expression-driven avatar updates in near real time.
Scope
In scope (v1)
- ARKit face anchor ingestion
- 52-blendshape coefficient capture and normalization
- Avatar morph mapping profile (
BlendshapeMap) - local preview + network packet integration
- fallback behavior when TrueDepth unavailable
Out of scope (v1)
- custom rig auto-retargeting ML
- full body + face fusion solve
- non-iOS depth camera parity
Architecture
1) Capture adapter (iOS)
- source: ARKit face anchor update callback
- output: normalized coefficient frame
ts
interface FaceBlendshapeFrame {
sessionId: string;
timestampMs: number;
trackingState: 'normal' | 'limited' | 'unavailable';
coefficients: Record<string, number>; // 52 ARKit blendshape keys
}2) Mapping layer
BlendshapeMapties ARKit keys -> avatar morph targets- supports per-target gain, clamp, and smoothing
ts
interface BlendshapeMapEntry {
source: string;
target: string;
gain?: number;
min?: number;
max?: number;
smoothing?: number;
}3) Runtime application
- apply mapped coefficients each render frame
- optional exponential smoothing to reduce jitter
- expression quality scoring for telemetry
4) Network payload (optional shared mode)
- quantized coefficient delta packets
- dropped-frame tolerance + interpolation
Proposed code touch points
packages/runtime/- iOS face tracking adapter
- coefficient smoothing + mapping utilities
packages/core/- blendshape mapping schema + validation
packages/studio/or mobile UI package- enable/disable controls and calibration preview
Failure taxonomy
TRUDEPTH_NOT_AVAILABLEFACE_TRACKING_PERMISSION_DENIEDTRACKING_STATE_LIMITEDBLENDSHAPE_MAP_MISSING_TARGETSNETWORK_EXPRESSION_DROP
Acceptance criteria
- TrueDepth-supported device captures and applies 52-blendshape updates.
- Avatar expression update latency meets target (<80ms local path median).
- Tracking loss degrades gracefully without avatar corruption.
- Blendshape mapping profile can be adjusted per avatar rig.
- Fallback path exists for unsupported devices and is user-visible.
Test plan
Unit
- blendshape mapping transform correctness
- smoothing/clamping behavior
- quantization encode/decode integrity
Integration
- ARKit frame ingestion -> avatar morph application
- tracking limited/unavailable transitions
- network expression packet replay and interpolation
Device validation
- iPhone TrueDepth devices (multiple generations)
- low-light and occlusion conditions
- long-session stability and thermal behavior
Shipping slices
- Slice A: capture adapter + mapping schema
- Slice B: runtime application + local preview controls
- Slice C: network sync + hardening + calibration UX
Metrics
face_tracking_session_start_totalface_tracking_frame_rateface_tracking_latency_msface_tracking_limited_state_totalface_tracking_fallback_activation_total
Definition of done
- End-to-end iOS TrueDepth expression mirroring works on supported devices
- acceptance criteria pass
- fallback and calibration UX documented
- operator notes include rig mapping guidance and known limits