Skip to main content

Expression(表情) 的设置

旧BLENDSHAPE
VRM-0.X 中的 BlendShape 已经在 VRM-1.0中更名为 Expression。

Expression(表情) 分配设置

VrmObject 的 Expression GUI 分配表情。

vrm_expression_settings.jpg

个别的 Expression(表情) 设置

每个表情都是独立的资产。

expression_asset.jpg

expression.jpg

MorphTarget(变换目标)

具有 blendshape 的 SkinnedMeshRenderer 将被列出。

SkinnedMeshRenderer:带蒙皮的 网格 渲染器/着色器

List(列表)

MorphTarget(变换目标)
  • 显示 MorphTarget 的列表
MaterialColor(纹理颜色)

可以使用[0-1]的权重值来动画化Material颜色。

  • Color(颜色)
  • EmissionColor(自发光颜色)
  • ShadeColor(阴影颜色)
  • RimColor
  • OutlineColor(轮廓线颜色)
TextureTransform(纹理变换)

可以使用[0-1]的权重值来动画化纹理的偏移和缩放。

Option(选项)

除了 MorphTarget 之外的详细设置项。

IsBinary(二值化)

为了更具有动漫感,你可能希望表情切换时没有变化过程。激活该选项,表情将不会有过渡动画。

Override(覆盖)​

控制 程序化表情 的值。

程序化 Expression(表情)
考虑到应用程序通常会自动生成权重值,我们为其定义了一种程序化表情。并且设置了3个组:BlinkLookAtMouth

weight(权重) 生成示例 包含的 Expression preset(表情预设)
Blink 随机(自动眨眼功能) Blink, BlinkLeft, BlinkRight
LookAt 由Vrm组件的LookAt功能生成 LookUp, LookDown, LookLeft, LookRight
Mouth 由声音或文本分析生成 Aa, Ih, Ou, Ee, Oh

程序化Expression(表情) 的 Weight(权重) 是由系统自动生成的,这种情况下,与现有的 Expression Weight(表情权重) 结合时可能会出现问题。

Expression(表情) 的组合导致问题的例子

  • 激活happy 的同时,触发 aa  => 两个表情都会让嘴巴张开,同时触发导致嘴巴张开的过大,显得很奇怪。
  • 激活 sad 的同时,触发 blink  => 两个表情都会移动眼睑,导致眼睑最终传过脸颊。
  • blink 与 lookRight 同时触发 => 眼睛穿过眼睑。

为避免组合问题,对自动生成的BlinkLookAtMouth权重值进行“加工”。当设置了 Override 后,如果 Expression(表情) 的权重值大于0,该功能就会生效。

选项 作用
None procedual.weight = procedual.weight
什么也不做
Block(阻断) procedual.weight = 0   
将目标的权重设置为0。
例如,当“happy”表情的 overrideBlink 属性被设置为 block 时,如果happy.weight的值大于0,那么就会将 blinkblinkLeftblinkRight 的权重 override(覆盖) 为0。
Blend(混合) procedual.weight = (1 - expression.weight)
减少目标权重。
例如,当为'happy'设置'overrideBlink=blend'时,将'blink'、'blinkLeft'、'blinkRight'与'happy.weight' 进行混合并衰减(下面详述)

blend
例如,如果将 happy 设置为 overrideBlink = blend,那么随着 happy 的值从 0 变化到 1,blink 将线性地衰减。权重在 0 到 1 之间的中间值的行为与 block 不同。

如果此处的内容不太好懂,可以参考GitHub的文件规范。参考规范(GitHub)

预览

Expression 资产的检查器下方的预览窗口会显示头部的画面。它显示了应用 Expression 设置后的结果。

  • 预览 Prefab
  • 预览权重:通过移动滑块,您可以预览在[0-1]范围内的变化。您可以测试 Advanced(高级选项) 中的 IsBinary 复选框的影响。

 

示例

asset morphtarget
aa head.lip_a => 100