Skip to content

ARKit 与 VRM 互转方案

实现苹果 ARKit 面捕数据与 VRM 模型驱动之间的双向转换,打通两个主流面捕生态。

为什么需要互转

ARKit(苹果)和 VRM(日本虚拟人标准)是虚拟人领域最主流的两个面捕协议:

  • ARKit 引擎(iOS 原生,精度高) → 通常只输出 ARKit 格式的 BS
  • VRM 模型(B 站大量使用) → 通常只接受 VRM 格式的 BS

如果不做互转:ARKit 引擎只能驱动 ARKit 模型,VRM 引擎只能驱动 VRM 模型。

映射关系

ARKit → CompatileFaceData → VRM

ARKit BS 名中文含义CompatibleFaceDataVRM BS 名
eyeBlinkLeft左眼眨EyeBlink_LBlink_L
eyeBlinkRight右眼眨EyeBlink_RBlink_R
jawOpen张嘴Mouth_AA
mouthFrownLeft左嘴角下Mouth_II
mouthPucker噘嘴Mouth_UU
mouthFunnel嘟嘴Mouth_OO
mouthSmileLeft左嘴角上Mouth_EE
............

难点:非一一对应

  • ARKit 有 52 个 BS,VRM 标准只有 ~15 个常用表情
  • 多对一映射:多个 ARKit BS 影响同一个 VRM 表情
  • 需要根据 BM(BlendShape 权重)做加权合成
VRM_Bink_L = clamp(
  0.7 * ARKit_eyeBlinkLeft + 
  0.3 * ARKit_eyeSquintLeft, 
  0, 1
)

实现

在 CompatibleFaceData 协议中:

csharp
public class ARKitToVRMConverter {
    public Dictionary<string, float> Convert(Dictionary<string, float> arkitBS) {
        var vrmBS = new Dictionary<string, float>();
        
        // 多对一映射
        vrmBS["Blink_L"] = Mathf.Clamp01(
            arkitBS.GetOrDefault("eyeBlinkLeft", 0) * 0.7f +
            arkitBS.GetOrDefault("eyeSquintLeft", 0) * 0.3f
        );
        
        vrmBS["A"] = Mathf.Clamp01(arkitBS.GetOrDefault("jawOpen", 0));
        // ... 更多映射
        return vrmBS;
    }
}

验证

  • PC 端 ARKit 面捕 + VRM 模型驱动验证通过
  • 移动端 ARKit(iOS 原生) + VRM 模型也验证通过

公开版深化

案例定位

ARKit 与 VRM 互转方案不是孤立笔记,而是虚拟人技术能力下的一个可复用案例。它服务于“虚拟人技术与实时渲染”这条主线,公开版重点保留问题抽象、工程取舍和可复用方法,不暴露内部系统细节。

关键问题

实现苹果 ARKit 面捕数据与 VRM 模型驱动之间的双向转换,打通两个主流面捕生态。

这篇文章已经覆盖 为什么需要互转、映射关系、实现、验证。后续阅读时应重点看三件事:问题如何被定义,方案如何在约束下落地,以及哪些经验可以迁移到下一次类似项目。

企业级产出

产出公开表达
问题定义用用户体验、性能、稳定性或交付效率描述影响
技术方案保留架构、流程、算法和工具链层面的抽象
指标证据只使用页面已有数字或经过脱敏审查的量级
复用方法沉淀为 SOP、检查清单、图谱关系或后续案例链接

指标与证据

  • ARKit 有 52 个 BS,VRM 标准只有 ~15 个常用表情

复盘结论

这个案例的核心价值,是把一次具体工程处理沉淀成可检索、可复盘、可继续扩展的技术资产。没有公开证据支撑的细节继续留在私有材料池,不进入线上页面。

公开版深化

案例定位

ARKit 与 VRM 互转方案不是孤立笔记,而是虚拟人技术能力下的一个可复用案例。它服务于“虚拟人技术与实时渲染”这条主线,公开版重点保留问题抽象、工程取舍和可复用方法,不暴露内部系统细节。

关键问题

实现苹果 ARKit 面捕数据与 VRM 模型驱动之间的双向转换,打通两个主流面捕生态。

这篇文章已经覆盖 为什么需要互转、映射关系、实现、验证。后续阅读时应重点看三件事:问题如何被定义,方案如何在约束下落地,以及哪些经验可以迁移到下一次类似项目。

企业级产出

产出公开表达
问题定义用用户体验、性能、稳定性或交付效率描述影响
技术方案保留架构、流程、算法和工具链层面的抽象
指标证据只使用页面已有数字或经过脱敏审查的量级
复用方法沉淀为 SOP、检查清单、图谱关系或后续案例链接

指标与证据

  • ARKit 有 52 个 BS,VRM 标准只有 ~15 个常用表情

复盘结论

这个案例的核心价值,是把一次具体工程处理沉淀成可检索、可复盘、可继续扩展的技术资产。没有公开证据支撑的细节继续留在私有材料池,不进入线上页面。

公开版深化

案例定位

ARKit 与 VRM 互转方案不是孤立笔记,而是虚拟人技术能力下的一个可复用案例。它服务于“虚拟人技术与实时渲染”这条主线,公开版重点保留问题抽象、工程取舍和可复用方法,不暴露内部系统细节。

关键问题

实现苹果 ARKit 面捕数据与 VRM 模型驱动之间的双向转换,打通两个主流面捕生态。

这篇文章已经覆盖 为什么需要互转、映射关系、实现、验证。后续阅读时应重点看三件事:问题如何被定义,方案如何在约束下落地,以及哪些经验可以迁移到下一次类似项目。

企业级产出

产出公开表达
问题定义用用户体验、性能、稳定性或交付效率描述影响
技术方案保留架构、流程、算法和工具链层面的抽象
指标证据只使用页面已有数字或经过脱敏审查的量级
复用方法沉淀为 SOP、检查清单、图谱关系或后续案例链接

指标与证据

  • ARKit 有 52 个 BS,VRM 标准只有 ~15 个常用表情

复盘结论

这个案例的核心价值,是把一次具体工程处理沉淀成可检索、可复盘、可继续扩展的技术资产。没有公开证据支撑的细节继续留在私有材料池,不进入线上页面。

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