参考 · ARKit · 面部追踪
52 个 ARKit 混合变形,展示在真实头部上。
ARKit 用 52 个混合变形(blendshape)描述一张脸:每个都是 0 到 1 的权重,对应 jawOpen 或 eyeBlinkLeft 这样的动作。iPhone 的面部追踪发送这些权重,Live Link Face、VTuber 应用和游戏引擎会在任何拥有同样 52 个形状的头部上回放它们。这里列出每个名称、它控制的动作,以及一个拥有全部 52 个的头部。
全部 52 个,按面部部位分组
名称与 Apple 的写法完全一致。Left 和 Right 指的是这张脸自己的左右,而不是观看者的左右。
眼睛14 个混合变形
eyeBlinkLeft闭上眼睑。
eyeBlinkRighteyeLookDownLeft眼睑跟随向下的视线。
eyeLookDownRighteyeLookInLeft眼睑跟随朝向鼻子的视线。
eyeLookInRighteyeLookOutLeft眼睑跟随远离鼻子的视线。
eyeLookOutRighteyeLookUpLeft眼睑跟随向上的视线。
eyeLookUpRighteyeSquintLeft眯眼:下眼睑和脸颊上抬。
eyeSquintRighteyeWideLeft睁大眼睛:上眼睑上抬。
eyeWideRight
下颌4 个混合变形
jawForward下颌前推。jawLeft下颌移向这张脸的左侧。jawRight下颌移向这张脸的右侧。jawOpen张开下颌。
嘴23 个混合变形
mouthClose下颌保持张开时闭合嘴唇;与jawOpen配合使用。mouthFunnel张开的嘴唇收圆成漏斗状,像发“oo”音时那样。mouthPucker闭合的嘴唇向前噘起,像亲吻时那样。mouthLeft两片嘴唇一起移向这张脸的左侧。mouthRight两片嘴唇一起移向这张脸的右侧。mouthSmileLeft嘴角上扬。
mouthSmileRightmouthFrownLeft嘴角下垂。
mouthFrownRightmouthDimpleLeft嘴角向后拉,朝酒窝的方向。
mouthDimpleRightmouthStretchLeft嘴角向两侧和下方拉伸。
mouthStretchRightmouthRollLower下唇向内卷,盖住牙齿。mouthRollUpper上唇向内卷,盖住牙齿。mouthShrugLower下唇向上、向外推。mouthShrugUpper上唇向上、向外推。mouthPressLeft该侧下唇向上压紧上唇。
mouthPressRightmouthLowerDownLeft该侧下唇向下拉。
mouthLowerDownRightmouthUpperUpLeft该侧上唇上抬。
mouthUpperUpRight
眉毛5 个混合变形
browDownLeft眉毛外侧下压。
browDownRightbrowInnerUp两侧眉毛的内端上抬。browOuterUpLeft眉毛外侧上抬。
browOuterUpRight
脸颊3 个混合变形
cheekPuff两颊鼓起。cheekSquintLeft下眼睑周围的脸颊上抬。
cheekSquintRight
鼻子2 个混合变形
noseSneerLeft鼻翼一侧上抬,像冷笑时那样。
noseSneerRight
舌头1 个混合变形
tongueOut舌头伸出嘴外。
名称来源:Apple 的 ARKit 文档。
在真实头部上调节这些形状
这些是示例头部,每个都是 FaceNinja 用一张照片生成的原样结果。加载一个并拖动滑块:每个滑块对应这张脸上的一个 ARKit 形状,表情则由多个形状混合而成。
示例头部

方向键转动头部,加号和减号缩放,数字 0 重置视图,Esc 退出查看器。
ARKit 读数
数值随表情变化。拖动滑块可单独设定一个混合变形。
六种表情,以及组成它们的形状
一个表情是多个形状的混合。下面每张静态图都是样本 S-16,调高了图下列出的形状;中性脸不含任何形状。
中性—
微笑mouthSmileLeft mouthSmileRight
惊讶jawOpen browInnerUp
皱眉browDownLeft mouthFrownLeft
mouthPucker
eyeBlinkLeft
为什么 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 个形状在各引擎中的位置
| 引擎 | 形状所在位置 | 说明 |
|---|---|---|
| Unreal Engine | Skeletal Mesh 上的变形目标(Morph Target);Live Link Face 按名称驱动它们。 | 导入时打开变形目标,并在头部的材质上勾选 Used with Morph Targets(文档 EN)。 |
| Unity | Skinned Mesh Renderer 上的 Blend Shape,来自 FBX。 | 模型导入设置中的 Import BlendShapes 默认是打开的。 |
| Godot 4 | MeshInstance3D 上的 Blend Shape,来自 GLB。 | find_blend_shape_by_name() 给出 set_blend_shape_value() 所需的索引。 |
| three.js | mesh.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 个。