Expression(表情) 的设置
旧BLENDSHAPE
VRM-0.X 中的 BlendShape 已经在 VRM-1.0中更名为 Expression。
Expression(表情) 分配设置
在 VrmObject 的 Expression GUI 分配表情。
个别的 Expression(表情) 设置
每个表情都是独立的资产。
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个组:Blink
、LookAt
、Mouth
。
组 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
同时触发 => 眼睛穿过眼睑。
为避免组合问题,对自动生成的Blink
、LookAt
和Mouth
权重值进行“加工”。当设置了 Override 后,如果 Expression(表情) 的权重值大于0,该功能就会生效。
选项 | 作用 |
---|---|
None | procedual.weight = procedual.weight 什么也不做 |
Block(阻断) | procedual.weight = 0 将目标的权重设置为0。 例如,当“happy”表情的 overrideBlink 属性被设置为 block 时,如果happy.weight的值大于0,那么就会将 blink、blinkLeft、blinkRight 的权重 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 |
No Comments