无论是用Threejs还是UE中驱动3D数字人模型的声音同步嘴形变化,目前最好的方案还是用的iPhone 脸部跟踪的ARKit 52个形态键。前面很多文章介绍过如何快速制作这52个形态键,但很多时候因为模型的不同,制作微调的时候都无法准确完成。正好今天看到一个动画教程,应该是目前应对52个形态键最准确的一个标准。
- https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928264-browinnerup
. - - browDownLeft / browDownRight
- - browOuterUpLeft / browOuterUpRight
- - noseSneerLeft / noseSneerRight
- - eyeBlinkLeft / eyeBlinkRight
- - eyeSquintLeft / eyeSquintRight
- - eyeWideLeft / eyeWideRight
同时移动多种形状的眉毛时,请注意不要将眉毛埋入面部网格中。当 browInnerUp 和 browOuterUpLeft/browOuterUpRight 各自以 100% 组合时,创建“自然抬起的眉毛(=惊讶眉毛)”的形状。(browInnerUp+browOuterUp)https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928223-browdownleft将上眼睑稍微向下推,上眼睑的动作应该是这样,当它与眨眼重叠时,眼睛不会被埋没并消失。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928254-browdownrighthttps://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928274-browouterupleft在browOuterUp中,保持眉顶部的位置,将外眼角处的上眼睑轻轻抬起。当 browInnerUp 和 browOuterUpLeft/browOuterUpRight 各自以 创建“自然抬起的眉毛(=惊讶眉毛)”的形状。(browInnerUp+browOuterUp)https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928255-browouteruprighthttps://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928250-eyelookupleft复合惊讶的眼睛形状关键,使变化量随着顶点向中心移动而增加。通过聚焦在眼睛的中心,当观察眼球周围时,眼睛可以平滑地移动。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928258-eyelookuprighthttps://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928234-eyelookdownleft
解释说明:
复合惊讶的眼睛形状关键,使变化量随着顶点向中心移动而增加。通过聚焦在眼睛的中心,当观察眼球周围时,眼睛可以平滑地移动。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928272-eyelookdownrighthttps://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928260-eyelookinleft合成惊讶的眼睛形状关键点,以便随着顶点向眼睛顶部移动而增加变化量。通过在变化量上添加斜率,眼睛在观察眼球周围时可以平滑地移动。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928258-eyelookuprighthttps://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928269-eyelookoutleft合成惊讶的眼睛形状关键点,使变化量随着顶点向外眼角移动而增加。通过在变化量上添加斜率,眼睛在环视眼睛时可以平滑地移动。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928265-eyelookoutright闭上左眼在跟踪过程中,iPhone 传感器会检测到因眼睑下降而导致的瞳孔遮挡(即瞳孔向下旋转),这可能会导致瞳孔在眨眼的同时发生弹跳运动。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928261-eyeblinkleft解释说明:
正常闭眼。如果您在此处设置“Joy Eye”关闭而不是眨眼,则可以通过面部跟踪轻松关闭笑眼(无法正常闭眼)。在跟踪动画中,即使眼睛即将闭上,瞳孔也会继续旋转,因此,根据模型的不同,眨眼时瞳孔网格可能会突出,这可以通过在闭眼形状中添加瞳孔比例来防止。在跟踪过程中,iPhone 传感器会检测到因眼睑下降而导致的瞳孔遮挡(即瞳孔向下旋转),
这可能会导致瞳孔在眨眼的同时发生弹跳运动。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928262-eyeblinkrighthttps://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928252-eyesquintleft注意,ARKit参考中的瞳孔并不是关闭的,也不是所谓的“Joy Eye”关闭,眼睛是与闭眼结合在一起的,所以如果单纯设置Joy Eyes Closed会失败。如何仅使用面部跟踪来创建“Joy Eyes Closed” (1) 减去100%的“闭眼”形状。
(2) 添加100%的“Joy eyes”闭眼形状。 然而,由于弧形的“Joy闭着眼睛”是虚构的,所以当从正常的眼睛转换时,它在中间看起来不自然 ,因为它是主要焦点。使用可即时切换的按键输入更安全。仅抬起下眼睑会改变大眼睛角色的脸部印象(使脸部更长)。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928237-eyesquintrighthttps://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928233-eyewideleft对于大眼睛的角色,睁开眼睑可能不足以看到眼白,
缩小瞳孔并进行调整,使眼白足够可见。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928267-eyewiderighthttps://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928232-cheekpuff浮肿脸颊的形状关键你应该把它们鼓起来,这样从前面就能看到嘴唇。尖尖的嘴唇很可爱,小心不要把它们收得太窄,否则在移动时它们会塌陷。嘴巴撅起。表情很容易瞄准和激活,脸部与除了嘴巴以外的其他形状不能很好地融合,因此很容易创建一个姿势脸。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928226-cheeksquintleft在类似卡通的模型中,移动嘴角和下眼睑等部位的破坏性比移动整个脸颊的干扰要小。向侧面拉伸使微笑时嘴巴张开,
如果嘴角不拉伸,则可以保持嘴部的印象。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928238-cheeksquintrighthttps://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928263-nosesneerleft左眉毛皱起作为鼻子皱眉的伴随动作
眉毛降低并靠拢,整个眉毛位置保持不变。注意眉毛不要降得太低,因为它是与 browDown 结合在一起的。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928239-nosesneerrighthttps://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928236-jawopen 与“mouthClose”配对,当两者都为 100% 时,嘴巴闭合,下巴张开。当两者都为 100% 时,嘴巴闭合,下巴张开,只有下巴移动进行咀嚼。 将jawOpen 和mouthUpperUp/mouthLowerDown 组合的形状是垂直张口的最大值,将jawOpen 分别与southDimple、southStretch 等组合的形状是水平方向张口的最大值。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928229-jawforwardhttps://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928273-jawleft整个下颌向左移动下颌、舌头和下颌牙齿同时移动。因为是平时动作不大、容易有意识控制的动作,所以可以有意地激活特定的表情。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928248-jawrighthttps://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928253-mouthfunnel*如果您不想像角色表情那样尽可能多地显示牙齿,请添加一个动作以在此形状键中隐藏它们。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928257-mouthpucker缩小嘴唇的宽度
嘴唇越窄,嘴唇就会显得越丰满、越前倾,
与漏斗形结合,形成接吻嘴。(mouthFunnel+mouthPucker)与JawOpen结合时,注意不要使窄嘴太长太窄。同时收紧舌头和嘴唇(以防止渗透到嘴角)。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928228-mouthlefthttps://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928246-mouthrighthttps://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928227-mouthrollupper当纹理填充时,嘴巴本身就会消失,尤其是在卡通模型上,创建咬唇形状,同时保持上唇边缘可见。与mouthRollLower配合使用,在嘴部周围创建蠕动的表情。
实际移动时,jawOpen会稍微混合,因此移动比创建的形状更浅。(mouthRollUpper+mouthRollLower)https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928224-mouthrolllower与mouthRollLower 配合使用,在嘴部周围创建蠕动的表情https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928276-mouthshrugupper提升上唇的形状
与“mouthShrugLower”配合使用,形成闭合的、皱眉的嘴。 还可以与mouthPress一起使用来创建紧闭的嘴巴表情。 向下拉嘴角的动作应该放在上唇或下唇上,因为将其均匀地分布在上唇和下唇之间会导致嘴角发出嘎嘎声。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928230-mouthshruglower提升下唇的形状
与“mouthShrugUpper”结合使用,可打造皱眉、不平衡的形状。通过在闭嘴的情况下打开和关闭下颌,就形成了咀嚼下颌的运动。
(jawOpen+mouthClose)https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928266-mouthclose与jawOpen 配对,当两者都为100% 时,下巴完全张开,但嘴完全闭合。 从下巴张开的脸上,选择嘴巴周围的区域,并逐渐缩小选择范围,以便只有嘴巴闭合,从而形成“下巴完全张开,嘴巴完全闭合”的形状,从这个状态,我们可以进一步创建嘴巴闭合的形状。减小下颌张开度。 由于女模特的下巴张开后显得不太漂亮,因此样本模型女模特的下巴张开度被做得适中。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928249-mouthsmileleft配置微笑时的嘴部形状(例如,使嘴角呈锐角或钝角)
与张开的嘴结合时,嘴部应看起来像自然的微笑。 嘴角上扬可能会导致整个嘴部向上移动,从而改变脸部作为角色的印象,*如果您不想像角色表情那样尽可能多地显示牙齿,请在此形状键中添加一个隐藏牙齿的动作。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928244-mouthsmileright完全不要移动牙齿*如果您不想像角色表情那样尽可能多地显示牙齿,请在此形状键中添加一个隐藏牙齿的动作。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928277-mouthfrownleft降低左嘴角
主要在闭嘴时起作用。
与张开的下颌融合时,嘴形应自然。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928270-mouthfrownrighthttps://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928231-mouthdimpleleft为了在与“微笑”等构图时不改变嘴角的形状,请拉伸“嘴唇的中间部分”而不是嘴角。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928259-mouthdimpleright牙齿在嘴里露出 漏斗位置,下巴不移动,当嘴向侧面伸展时,牙齿最明显(mouthFunnel+mouthUpperUp
https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928240-mouthupperupleft与下唇相比,人的上唇角会更高一些,整个上唇会呈花生形状。渐变变化量使得左右形状加起来为100%,看起来会很不自然。jawOpen 和mouthUpperUp/mouthLowerDown 的形状是垂直张口的最大值。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928247-mouthupperuprighthttps://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928242-mouthlowerdownleft如果我们简单地将其从中心向左和右分割,则渐变的变化量会导致左右形状加起来为 100%。结合jawOpen 和mouthUpperUp/mouthLowerDown 的形状是嘴巴垂直张开的最大值。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928275-mouthlowerdownrighthttps://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928241-mouthpressleft向上推左嘴角并挤压它
仅在挤压嘴时起作用,因此很容易有意识地控制
可用于添加细微差别,例如猫嘴或鸭嘴。嘴必须是对称的,否则看起来会变形。您可以通过将预先准备好的猫嘴形状均匀地添加到左右嘴压机上来使其对称。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928245-mouthpressrighthttps://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928235-mouthstretchleft当你张大嘴时,嘴角会上升,而嘴角会下降以平衡动作。当嘴巴闭合时,很难通过降低嘴角来创造出优美的动作。从 100% 下颌打开的形状开始,向下拉嘴角以获得理想的形状,然后将下颌打开设置为 -100% 以获得正确的运动。https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928268-mouthstretchrighthttps://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2968190-tongueout 张嘴时舌头向下弯曲的变形是通过jawOpen 来完成的,与jawOpen 合成来调整牙弓的宽度,以便当舌头弯曲时,牙弓穿过下唇。术语表
苹果ARKit:
适用于iPhone和iPad等iOS设备的开发套件提供的功能之一是高级面部跟踪,需要具有 52 个相应混合形状的 3D 模型。
VRM:
由VRM联盟开发的人形 3D 模型格式,用户可以通过使用 Clip 组合现有的表情混合形状来自由添加新表情。
Perfect-Synk (a.k.a.):
如何结合VRM规范使用iPhone进行面部跟踪我们在模型中添加了 52 个 Clip,并将它们视为可以在 ARKit 中跟踪的 52 个不同形状,用户可以调整表情剪辑。
1. https://hinzka.hatenablog.com/entry/2021/12/21/222635https://github.com/hinzka/52blendshapes-for-VRoid-face有相同兴趣爱好的可通过加星球的方式添加作者微信。加入后查看置顶评论可加微信交流。做一只爬的最久的乌龟,保持学习保持好奇,即使慢一点,遇到一点困难,只要最后能到达终点,又有什么关系呢。