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 侧(数据采集与标准化)

NativeARkitAdaptorUPMNativeMediapipeAdaptorUPM 分别通过 ARkitMgr::ICapturerMgrMediapipeMgr::ICapturerMgr 接入原生采集能力,再通过 ARkitFaceDataAdaptor::IFaceCapturerMediapipeFaceDataAdaptor::IFaceCapturer 把原始面捕数据转成框架可用的数据结构。

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

ModelDriverFrameWork 提供核心接口 IModelDriverInitSetCompatibleBSDataSetCaptureSettingsSetCaptureModelSettingsHandleCalibrateDriveLateDriveLive2DDriverUPMVRMDriverUPM 分别实现 Live2D 和 VRM 的具体驱动——表情参数、眼睛、嘴巴、头部/身体摆动、自动眨眼、校准参数。

协作方式

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

移动端整体五层架构

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

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