Appearance
CompatibleFaceData 通用面捕数据协议
自研通用面捕数据协议,涵盖 ARKit / VRM / 特殊表情三套数据结构并提供互转功能,解决市面上常用协议不兼容问题。
背景
面捕数据协议本质上是通过变换 SkinnedMeshRenderer 的 BlendShape 值来驱动虚拟模型。
市面上常用两种协议:
- ARKit 协议(苹果)— 52 个 BlendShape,命名如
jawOpen、mouthSmileLeft - VRM 协议(日本)— 表情包方式,命名如
A、I、U、E、O
两者不兼容。美术在蒙皮阶段需要做两套 BlendShape——降本增效的压力下促使我自研一套通用协议。
问题
| 问题 | 影响 |
|---|---|
| ARKit 引擎 → VRM 模型:BS 名不匹配 | 面捕失败 |
| VRM 引擎 → ARKit 模型:同上 | 面捕失败 |
| 特殊表情(吐舌、嘟嘴等)无标准协议 | 各引擎各自实现 |
| 美术两套蒙皮 | 成本 x2 |
方案
CompatibleFaceData 数据结构
CompatibleFaceData
├── Base Expressions(基础表情)
│ ├── EyeBlink_L/R
│ ├── Mouth_A/I/U/E/O
│ ├── Brow_Up/Down_L/R
│ └── EyeLook_X/Y
├── Special Expressions(特殊表情)
│ ├── TongueOut
│ ├── CheekPuff
│ └── NoseSneer
├── ARKit Mapping(ARKit BS → 基础表情 映射表)
└── VRM Mapping(基础表情 → VRM BS 映射表)互转机制
ARKit Capture → 输出 ARKit BS
→ CompatibleFaceData.ARKitMapping → 转换为 基础表情
→ CompatibleFaceData.VRMMapping → 转换为 VRM BS
→ VRM Driver 驱动模型 ✅反向同理。ARKit 面捕引擎可以通过此协议驱动 VRM 协议的模型。
协议设计的核心思想
- 中间表示层:基础表情是"通用语",ARKit/VRM 各自映射到基础表情
- 可扩展:新增引擎/模型格式只需加一组 Mapping
- 降本:美术只用做一套蒙皮,面捕引擎随便换
成果
- 降低美术蒙皮成本
- 实现 ARKit ↔ VRM 互转
- 支撑 CaptureFramework + ModelDriverFramework 解耦
- 相关专利:CompatibleFaceBlendShape 面捕数据结构