不同工作流程的运动创建差异

[最近更新时间 : 2019/09/03]

每个 SDK 的运动功能

  Workflow for Unity Original Workflow(Native, Web, Unity)
使用机制 Mecanim CubismMotionManager (Native, Web),
CubismMotionController (Unity),
Mecanim (Unity)
运动结束后未指定元素的行为 重置为初始值 议案结束时的价值
保护部件之间的完整性
运动切换 使用线性插值进行切换
Mecanim 指定的运动单元
参数是缓动插值
部件不透明度为线性插值
可以在3个病房帧中注册淡化值

 

Unity 和 Mecanim 的特点

Workflow for Unity 中的运动控制由 Unity 的内置功能 Mecanim 完成。
使用的组件是 Animator,它在图形环境中以状态转换的形式创建运动控制。
Animator中可以设定的参数用于状态转换切换控制。
要控制此参数,请为 AnimationClip 使用脚本或 Animator 控制曲线。

 

BrendTree 可以相互混合运动,这是 OW SDK 所没有的。
当用于面部表情融合时,此功能非常强大。

有关 Mecanim 的更多信息,请参阅 Unity 官方手册中的动画

 

使用 Unity SDK 创建动画时的注意事项

部件完整性

最需要注意的是开关部件的完整性。
即使在 Unity 上,原来的工作流方法通过暂停功能自动保持一致性,但是
在 Workflow for Unity 中,需要注意 Animator 上从运动到状态的转换,以保持部件的完整性。

 

・为所有开关部件输入一致的值。

如果设定了 Write Defaults,未指定的参数和部件的值将返回到初始值,这可能会导致意外行为。

 

另外,在使用图层功能时,可能会受到其他图层的影响。

・不要在 BlendTree 中进行切换动作。

该部件的值可能会影响到一半,显示可能会失真。

 

切换运动时的线性插补

而 Native SDK 在切换动作时使用 EaseInOutSine 插值作为插值方式,
Unity中Mecanim提供的插值方法是线性插值。
这种插值方法在透明度方面看起来并不陌生,但在旋转变形器等线性插值中却给人一种机械的印象。

 

原始工作流程的特点

在原始工作流程中,通过使用 Cubism Viewer (for OW)在 .model3.json 中注册并通过代码调用来控制运动。
暂停功能不是非图形环境,而是自动实时地保持切换部件的一致性。
最终运动也可以用作状态转换,因为它具有在运动结束后保持该值的属性。
还可以使用允许您单独指定构图方法的面部表情动作。

 

程序修改

所有作为 Original Workflow 特性列出的项目都是在直接使用 SDK 中包含的 Framework 和示例时的特性。
如果您直接使用框架或基于示例创建程序,将继承上述特性。
但是,由于 Cubism SDK 中除 Core 之外的所有程序都对公众开放,因此可以根据应用程序的规范变更 SDK 端的实现
最后,遵循使用 Live2D 模型的程序的规范。

 

使暂停功能正常工作

暂停功能是一种从运动到相应部件的规范监控,并将最先找到非零操作的部件识别为显示部件的方法。
与使用 Workflow for Unity 操作时一样,需要为所有切换部件设置一个值。
确保将隐藏设定为 0 也很重要,因为即使是很小的值也会在它们保留时做出反应。

 

除了运动中的暂停功能外,无法操作部件不透明度

由于部件的不透明度是通过暂停功能进行操作的,
如果没有指定部件操作,即使在动作中指定了操作也不会反映。
操作单个部件的显示/不显示时,需要准备一对空部件。

 

运动呼叫特性

优先

使用 CubismMotionManager 播放动作时,有一个项目可以设定播放优先级。
您还可以为将来的播放保留优先级。
可以通过将播放和预约的优先级与运动播放请求的优先级进行比较来选择播放。

 

 

淡出指定优先级

在 Original Workflow 方法中,您可以在三个 ward 帧中注册淡入淡出时间规范。

优先 1 2 3 4
指定 参数单位 运动注册到模型 运动标准 未指定的标准值(1秒)
设定方法 “淡化值设定” “运动设定” “淡化值设定”  

 

循环设定

目前,Cubism Animator 不允许您设定循环,因此读取 Motion 文件时的循环设定固定为 Basic False。

要从运动文件中读取设定,请将上面注释掉的部分变更为以下内容并恢复它。

[注意] 由于 ret-> _loop 不是正确的变量名,取消注释并将描述变更为 ret-> _isLoop。

另外,由于编辑器中的设定当前不可用,您需要直接在文本编辑器中处理 .motion3.json 以变更运动文件中的设定。

此外,如果您在循环时将淡入设定指定为 false,它的行为将类似于编辑器。
要在循环时变更淡入设定,请将以下内容追加到之前指定的循环设定中。

 

请注意,目前在动画文件中没有设定循环时的淡入设定。

当您想使用淡入淡出进行切换时,循环设定有效,但您不希望淡入淡出在空闲时工作。

不使用 Loop 设定的样本的空闲动作被设计为仅在没有运动时才开始播放空闲动作。
因此,当创建一个从样本派生的程序时,
有必要考虑使空转运动的切换不明显。

 

© 2010 - 2022 Live2D Inc.