Skip to content

CompatibleFaceData 通用面捕数据协议

自研通用面捕数据协议,涵盖 ARKit / VRM / 特殊表情三套数据结构并提供互转功能,解决市面上常用协议不兼容问题。

背景

面捕数据协议本质上是通过变换 SkinnedMeshRenderer 的 BlendShape 值来驱动虚拟模型。

市面上常用两种协议:

  • ARKit 协议(苹果)— 52 个 BlendShape,命名如 jawOpenmouthSmileLeft
  • VRM 协议(日本)— 表情包方式,命名如 AIUEO

两者不兼容。美术在蒙皮阶段需要做两套 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 面捕数据结构

企业级技术案例库 · 内容先审计再发布