关于表情动作

[最近更新时间:2019/11/07]

 

什么是表情动作?

面部表情动作是 SDK 的一项功能,可设定相对于当前状态的面部表情值,与正常动作分开。
您可以利用 Motion Manager 的淡入淡出功能从当前的面部表情更改为随着时间的推移重新播放的新面部表情设定。
运动不具备的另一个功能是您可以指定计算方法。

由于它继承自 ACubismMotion 类,因此可以像常规运动一样由 CubismMotionManager 类管理。
要创建面部表情数据(.exp3.json 文件),需要将 .motion3.json 文件作为面部表情动作加载到 Cubism Viewer (for OW)中,将其转换并输出。
加载.motion3.json文件时,将动作的初始值设定为面部表情的目标值。
“使用 Animator 创建面部表情”
“设定和导出面部表情”

 

与运动相比,面部表情具有以下差异。

  • 随着时间的推移,价值没有变化。
  • 它不能影响部件。
  • 您可以指定计算方法(加法、正片叠底、覆盖)。

 

创建实例(加载 .exp3.json)

面部表情使用派生自 ACubismMotion 类的 CubismExpressionMotion 类播放。
创建 CubismExpressionMotion 实例
使用本机 (C ++) CubismExpressionMotion :: Create 函数或 Web (TypeScript) CubismExpressionMotion.create 函数。

 

 

创建面部表情管理实例

使用 CubismMotionManager 类来应用面部表情。
但是,为了结合正常运动和效果,必须将其创建为单独的实例。

 

 

面部表情再现及其机制

与动作播放类似,面部表情播放命令管理类播放。

 

可以为每个面部表情参数指定计算方法。
共有三种计算方法:加法、正片叠底和覆盖。

 

加算

当计算方法指定为“添加”或未指定计算方法时,选择此方法。
.exp3.json 文件中显示的值会添加到应用时的参数值中。
对于运动中不经常操纵的参数,
当您想要滑动它时使用它来影响它。
使用 Cubism Viewer (for OW)导出值时,设定参数初始值与设定值的差值。

正片叠底

当计算方法显示为“乘”时选择。
申请时的参数值直接乘以.exp3.json文件中显示的值。
请注意,此正片叠底不影响应用后的加法和覆盖。
当您想按原样放大或减少运动的运动时,这很有用。
使用 Cubism Viewer (for OW)导出值时,设定值按原样设定。
如果将 -30 到30 的运动乘以30,则运动将为 -900 到 900。
设定动作和面部表情值的组合时要小心。

覆盖

无法在 Cubism Viewer (for OW)中设定,但可以通过将计算方法指定为“覆盖”来使用。
应用时的参数值被忽略,该值被原样覆盖。
当您想忽略运动等运动时,这很有效。

 

由于计算方法的不同而导致的表达差异

这是将双眼的开度和闭上度设定为 0.4 并分别应用 Add、Multiply 和 Overwrite 表达式的示例。
由于每次画图Add为-0.6,立即达到开合下限并覆盖下限值,所以暂时保持闭眼状态。
在正片叠底中,该值乘以整个波形,因此眨眼效果很好。
覆盖忽略眨眼并且不眨眼。

结合运动时,您只需一次面部表情计算即可改变细微差别。

 

应用面部表情

适用于模型的是管理类Native(C++)的CubismMotionManager::UpdateMotion函数,或者Web(TypeScript)的CubismMotionManager.updateMotion函数。
使用本机 (C++) MotionQueueManager :: DoUpdateMotion 函数或 Web (TypeScript) CubismMotionQueueManager.doUpdateMotion 函数。

运动、面部表情和其他参数操作元素的计算顺序极大地影响了表情。

“关于参数:参数计算顺序的重要性"

请注意申请顺序。

© 2010 - 2022 Live2D Inc.