Appearance
ARKit 与 VRM 互转方案
实现苹果 ARKit 面捕数据与 VRM 模型驱动之间的双向转换,打通两个主流面捕生态。
为什么需要互转
ARKit(苹果)和 VRM(日本虚拟人标准)是虚拟人领域最主流的两个面捕协议:
- ARKit 引擎(iOS 原生,精度高) → 通常只输出 ARKit 格式的 BS
- VRM 模型(B 站大量使用) → 通常只接受 VRM 格式的 BS
如果不做互转:ARKit 引擎只能驱动 ARKit 模型,VRM 引擎只能驱动 VRM 模型。
映射关系
ARKit → CompatileFaceData → VRM
| ARKit BS 名 | 中文含义 | CompatibleFaceData | VRM BS 名 |
|---|---|---|---|
eyeBlinkLeft | 左眼眨 | EyeBlink_L | Blink_L |
eyeBlinkRight | 右眼眨 | EyeBlink_R | Blink_R |
jawOpen | 张嘴 | Mouth_A | A |
mouthFrownLeft | 左嘴角下 | Mouth_I | I |
mouthPucker | 噘嘴 | Mouth_U | U |
mouthFunnel | 嘟嘴 | Mouth_O | O |
mouthSmileLeft | 左嘴角上 | Mouth_E | E |
| ... | ... | ... | ... |
难点:非一一对应
- 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 个常用表情
复盘结论
这个案例的核心价值,是把一次具体工程处理沉淀成可检索、可复盘、可继续扩展的技术资产。没有公开证据支撑的细节继续留在私有材料池,不进入线上页面。