FaceNinja

参考 · ARKit · 面部追踪

52 个 ARKit 混合变形,展示在真实头部上。

ARKit 用 52 个混合变形(blendshape)描述一张脸:每个都是 0 到 1 的权重,对应 jawOpen 或 eyeBlinkLeft 这样的动作。iPhone 的面部追踪发送这些权重,Live Link Face、VTuber 应用和游戏引擎会在任何拥有同样 52 个形状的头部上回放它们。这里列出每个名称、它控制的动作,以及一个拥有全部 52 个的头部。

免费 免费创建账号,即可下载 20 个高质量的 MetaHuman 示例头部:4K 皮肤、52 个 ARKit 混合变形、GLB/FBX/MetaHuman ZIP。

全部 52 个,按面部部位分组

名称与 Apple 的写法完全一致。Left 和 Right 指的是这张脸自己的左右,而不是观看者的左右。

眼睛14 个混合变形

  1. eyeBlinkLeft
    eyeBlinkRight
    闭上眼睑。
  2. eyeLookDownLeft
    eyeLookDownRight
    眼睑跟随向下的视线。
  3. eyeLookInLeft
    eyeLookInRight
    眼睑跟随朝向鼻子的视线。
  4. eyeLookOutLeft
    eyeLookOutRight
    眼睑跟随远离鼻子的视线。
  5. eyeLookUpLeft
    eyeLookUpRight
    眼睑跟随向上的视线。
  6. eyeSquintLeft
    eyeSquintRight
    眯眼:下眼睑和脸颊上抬。
  7. eyeWideLeft
    eyeWideRight
    睁大眼睛:上眼睑上抬。

下颌4 个混合变形

  1. jawForward下颌前推。
  2. jawLeft下颌移向这张脸的左侧。
  3. jawRight下颌移向这张脸的右侧。
  4. jawOpen张开下颌。

嘴23 个混合变形

  1. mouthClose下颌保持张开时闭合嘴唇;与 jawOpen 配合使用。
  2. mouthFunnel张开的嘴唇收圆成漏斗状,像发“oo”音时那样。
  3. mouthPucker闭合的嘴唇向前噘起,像亲吻时那样。
  4. mouthLeft两片嘴唇一起移向这张脸的左侧。
  5. mouthRight两片嘴唇一起移向这张脸的右侧。
  6. mouthSmileLeft
    mouthSmileRight
    嘴角上扬。
  7. mouthFrownLeft
    mouthFrownRight
    嘴角下垂。
  8. mouthDimpleLeft
    mouthDimpleRight
    嘴角向后拉,朝酒窝的方向。
  9. mouthStretchLeft
    mouthStretchRight
    嘴角向两侧和下方拉伸。
  10. mouthRollLower下唇向内卷,盖住牙齿。
  11. mouthRollUpper上唇向内卷,盖住牙齿。
  12. mouthShrugLower下唇向上、向外推。
  13. mouthShrugUpper上唇向上、向外推。
  14. mouthPressLeft
    mouthPressRight
    该侧下唇向上压紧上唇。
  15. mouthLowerDownLeft
    mouthLowerDownRight
    该侧下唇向下拉。
  16. mouthUpperUpLeft
    mouthUpperUpRight
    该侧上唇上抬。

眉毛5 个混合变形

  1. browDownLeft
    browDownRight
    眉毛外侧下压。
  2. browInnerUp两侧眉毛的内端上抬。
  3. browOuterUpLeft
    browOuterUpRight
    眉毛外侧上抬。

脸颊3 个混合变形

  1. cheekPuff两颊鼓起。
  2. cheekSquintLeft
    cheekSquintRight
    下眼睑周围的脸颊上抬。

鼻子2 个混合变形

  1. noseSneerLeft
    noseSneerRight
    鼻翼一侧上抬,像冷笑时那样。

舌头1 个混合变形

  1. tongueOut舌头伸出嘴外。

名称来源:Apple 的 ARKit 文档。

在真实头部上调节这些形状

这些是示例头部,每个都是 FaceNinja 用一张照片生成的原样结果。加载一个并拖动滑块:每个滑块对应这张脸上的一个 ARKit 形状,表情则由多个形状混合而成。

检查台静态图

示例头部

FaceNinja 根据照片 S-07 生成的 3D MetaHuman 头部

方向键转动头部,加号和减号缩放,数字 0 重置视图,Esc 退出查看器。

表情
视角
灯光

ARKit 读数

数值随表情变化。拖动滑块可单独设定一个混合变形。

合成人物预览已为网页压缩。下载文件里是完整的 4K 贴图。

六种表情,以及组成它们的形状

一个表情是多个形状的混合。下面每张静态图都是样本 S-16,调高了图下列出的形状;中性脸不含任何形状。

  • 样本 S-16,一位合成人物,表情:中性中性
    —
  • 样本 S-16,一位合成人物,表情:mouthSmileLeft, mouthSmileRight微笑
    mouthSmileLeft mouthSmileRight
  • 样本 S-16,一位合成人物,表情:jawOpen, browInnerUp惊讶
    jawOpen browInnerUp
  • 样本 S-16,一位合成人物,表情:browDownLeft, mouthFrownLeft皱眉
    browDownLeft mouthFrownLeft
  • 样本 S-16,一位合成人物,表情:mouthPuckermouthPucker
  • 样本 S-16,一位合成人物,表情:eyeBlinkLefteyeBlinkLeft

为什么 tongueOut 需要舌头

tongueOut 只有在带舌头、嘴巴又能张得足够大的头部上才会显示。FaceNinja 的头部两者都有,所以 GLB 和 FBX 带有全部 52 个形状,含 tongueOut。

Perfect Sync:虚拟主播中的 52 个形状

在虚拟主播圈,拥有全部 52 个 ARKit 形状的形象被称为 Perfect Sync(完美同步):iPhone 的追踪会直接驱动每一个形状,而不是几个预设。基于 VRM 的应用需要 VRM 文件,而 FaceNinja 不生成 VRM。我们免费的创作者套件走另一条路线:你的头部在 Unreal Engine 中成为 MetaHuman,由 Live Link Face 或摄像头驱动。

52 个形状在各引擎中的位置

四个引擎中的同样 52 个名称
引擎形状所在位置说明
Unreal EngineSkeletal Mesh 上的变形目标(Morph Target);Live Link Face 按名称驱动它们。导入时打开变形目标,并在头部的材质上勾选 Used with Morph Targets(文档 EN)。
UnitySkinned Mesh Renderer 上的 Blend Shape,来自 FBX。模型导入设置中的 Import BlendShapes 默认是打开的。
Godot 4MeshInstance3D 上的 Blend Shape,来自 GLB。find_blend_shape_by_name() 给出 set_blend_shape_value() 所需的索引。
three.jsmesh.morphTargetDictionary 把每个名称映射到它在 mesh.morphTargetInfluences 中的索引。用 GLTFLoader 加载 GLB。

关于 ARKit 混合变形的问题

01什么是 ARKit 混合变形?
Apple 为 iPhone 和 iPad 上的面部追踪定义的 52 个具名面部动作。每个都是 0 到 1 的权重,任何表情都是它们的混合。
02ARKit 混合变形一共有多少个?
52 个:眼睛 14 个、下颌 4 个、嘴 23 个、眉毛 5 个、脸颊 3 个、鼻子 2 个、舌头 1 个。
03我需要 iPhone 吗?
要实时捕捉全部 52 个,你需要一台带 Apple 面部追踪的设备,例如带 Face ID 的 iPhone;Live Link Face 用的就是它。要回放它们,任何能读取混合变形的引擎都可以,不需要 iPhone。
04FaceNinja 的头部包含 tongueOut 吗?
包含。GLB 和 FBX 带有全部 52 个形状,含 tongueOut,都是为每张脸量身制作的。
05什么是 Perfect Sync?
虚拟主播圈的术语,指拥有全部 52 个 ARKit 形状的形象,面部追踪可以直接驱动每一个形状。
06能试试带全部 52 个形状的头部吗?
能。免费创建账号,下载 20 个示例头部:每个 GLB 和 FBX 都带有全部 52 个。

能试试带全部 52 个形状的头部吗?

能。免费创建账号,下载 20 个示例头部:每个 GLB 和 FBX 都带有全部 52 个。