Skip to content

Capture 与 ModelDriver 双框架 ​

设计 CaptureFramework 和 ModelDriverFramework 架构,将面捕采集与模型驱动解耦,实现引擎可插拔、驱动可迭代。

背景 ​

B 站虚拟直播涉及多个面捕引擎(Mediapipe、小K、伏羲、ARKit、商汤)和多种模型格式(VRM、Live2D、AR 头套)。每个项目都在代码里硬编码面捕接入和模型驱动逻辑,不同项目间无法复用。我和踏浪一起设计了 CaptureFramework + ModelDriverFramework 双框架方案。

问题 ​

  1. 面捕引擎紧耦合:切换面捕引擎需要改业务代码
  2. 模型驱动重复造轮子:VRM 驱动在 3D 虚拟开播和 Z-star 中各写一遍
  3. 无法扩展:新增一种模型格式就需要一个项目全部重新接入面捕

方案 ​

CaptureFramework(面捕采集层) ​

CaptureInterface(抽象接口)
  ├── MediapipeCapture    → 自研引擎
  ├── XiaokCapture        → 小K SDK
  ├── ARKitCapture        → iOS 面捕
  └── ShangtangCapture    → 商汤引擎

每个 Capture 实现统一接口:

  • StartCapture() → 启动面捕
  • GetFaceData() → 返回标准化的面部数据(CompatibleFaceData 协议)
  • StopCapture() → 停止面捕

ModelDriverFramework(模型驱动层) ​

DriverInterface(抽象接口)
  ├── VRMDriver           → VRM 模型驱动
  ├── Live2DDriver        → Live2D 模型驱动
  ├── ARHeadsetDriver     → AR 头套驱动
  └── GenericDriver       → 通用 BS 驱动

每个 Driver 消费 CompatibleFaceData,将面捕数据映射到具体模型上。

关键设计 ​

  • 数据协议标准化:Capture 和 Driver 之间通过 CompatibleFaceData 通信,彻底解耦
  • 统一 BS 命名:ARKit 的 jawOpen 和 VRM 的 A 通过协议层互转
  • 项目接入成本:新项目只需选择 Capture + Driver 组合,不写面捕/驱动代码

成果 ​

  • 支撑 3D 虚拟开播、Z-star、小K 等多个项目
  • 新增模型格式只要实现 DriverInterface
  • 相关专利:CaptureFramework / ModelDriverFramework 已申请

架构图说明 ​

Capture 侧(数据采集与标准化) ​

NativeARkitAdaptorUPM 和 NativeMediapipeAdaptorUPM 分别通过 ARkitMgr::ICapturerMgr、MediapipeMgr::ICapturerMgr 接入原生采集能力,再通过 ARkitFaceDataAdaptor::IFaceCapturer、MediapipeFaceDataAdaptor::IFaceCapturer 把原始面捕数据转成框架可用的数据结构。

Driver 侧(标准化数据消费与模型驱动) ​

ModelDriverFrameWork 提供核心接口 IModelDriver:Init、SetCompatibleBSData、SetCaptureSettings、SetCaptureModelSettings、HandleCalibrate、Drive、LateDrive。Live2DDriverUPM 和 VRMDriverUPM 分别实现 Live2D 和 VRM 的具体驱动——表情参数、眼睛、嘴巴、头部/身体摆动、自动眨眼、校准参数。

协作方式 ​

Capture 输出 CompatibleBS / 面捕结构和设置数据 → Driver 根据 InstanceID、ClassID/ClassGUID 找到目标模型 → 映射到 Live2D 或 VRM 的驱动函数。

移动端整体五层架构 ​

  1. 采集适配层:封装 ARKit 和 Mediapipe 原生采集能力
  2. Capture 框架层:统一采集生命周期(Init、Update、LateUpdate、SetModel 等)
  3. 标准数据层:IFaceCapturer、IMotionCapturer、CompatibleBS、ModelInfo 等,打通不同采集源和驱动模型
  4. Driver 框架层:抽象模型驱动流程,统一初始化、校准、驱动步骤
  5. 具体驱动层:Live2DDriverUPM 和 VRMDriverUPM

罗子初 · AI 座舱专家 · 8年端侧研发

Lv.1