「Live2D Unity 文档翻译」实现自动眨眼

本文翻译自:https://docs.live2d.com/cubism-sdk-tutorials/eyeblink/

译者注:注意!这并不是一篇严谨的翻译,本人并不是翻译行业从业者,也根本不会日文。官网的中文翻译会连带代码一起翻译,而且还不如机翻日文,官网的英语翻译版本有的语法很奇怪,看起来也是机翻。本文主要来自日文机翻,然后再结合实际开发经验调整到通顺,修改不该翻译的东西并润色。

[最后更新日期: 2020/01/08] 译者注:这是这个日文原文的更新日期

在这里,我们将说明如何实现模型的自动眨眼。

[ 导入 SDK-放置模型 ] 假设模型已经放置到项目中。

摘要

在模型中设置了标准眨眼参数 [左眼张开/关闭(ParamEyeLOpen)] 和 [右眼张开/关闭(ParamEyeROpen)] 的情况下,

在导入模型时会自动为预制件自动设置为自动眨眼相关参数。

如果希望在没有以上设置的模型上实现自动眨眼,则可以按照本文中描述的步骤进行部署。

Cubism SDK 使用一个名为 EyeBlink 的组件来实现自动眨眼。

要在 Cubism 模型上部署 EyeBlink,需要以下三步:

  1. 附加管理眨眼的组件
  2. 设置用于眨眼的参数
  3. 设置用于自动处理眨眼参数值的组件

附加管理眨眼的组件

附加一个名为 CubismEyeBlinkController 的组件来实现眨眼。

img

img

CubismEyeBlinkController 有两个设置项。

  • Blend Mode : 指定如何计算当前眼睛睁开的大小。
    • Mutiply : 将当前值乘以 “Eye Opening” 值。
    • Additive : 将当前值乘以 “Eye Opening” 值
    • Override : 用 “Eye Opening” 值覆盖当前值。

译者注:不管你加不加这个 CubismEyeBlinkController ,要是模型里面做了眨眼这个功能,他都会眨眼。但是这样就是有了两个能控制眨眼的方式,于是就有了「Blend Mode」。其中:「当前值」就是模型自带的动画里的值,「Eye Opening」就是 CubismEyeBlinkController 的值。最后结果如何混合就是「Blend Mode」决定的了。

  • Eye Opening :

    睁开眼睛和闭上眼睛的幅度。1 视为睁眼,0 视为闭眼。当从外部操纵该值时,将会自动应用修改(译者注:眼皮就会自己跟着变化)。

这次,将 [Blend Mode(混合模式)] 设置为 [Override (覆盖)]。

设置用于眨眼的参数

管理模型参数的 GameObject 放置在 [模型]/Parameters/ 下。

此外,他们的名称是参数的 ID。

他们都可以通过 CubismModel.Parameters() 获得。

将一个名为 CubismEyeBlinkParameter 的组件附加到表示眨眼的参数 ID 所在组件上。

译者注:就是在两个代表眼睛的 GameObject 上面附加个 CubismEyeBlinkParameter ,当然你要附在例如呆毛或者某些奇怪的地方也没人管你🤔。

如果将 CubismEyeBlinkParameter 附加到该参数的 GameObject ,则运行场景时,CubismEyeBlinkController 将引用该参数并实现眨眼。

img

使用以上设置,您将能够通过脚本等做到眨眼,但是仅此一项还不能自动执行眨眼。

为了使其自动眨眼,还需要设置一个定期操纵值的组件。

设置用于自动处理眨眼参数值的组件

CubismEyeBlinkController 一样,将名为 CubismAutoEyeBlinkInput 的组件附加到模型所依附的 GameObject 上面。

img

img

CubismAutoEyeBlinkInput 具有以下三个设置项目。

  • Mean : 每次眨眼之间的间隔。单位是秒。实际上的时间是该值与最大值共同决定的。

  • Maximum Deviation : 设置要在眨眼间隔中添加的波动最大值。这个值应该大于或者等于 0

    • 如果按照上述 “Mean” 中设置的时间眨眼,则周期是均匀的,那样看起来很不自然。

    • 因此,通过添加随机波动的值到设置的时间周期中就会使运动自然。

    • 实际计算如下:

      • 下一次眨眼的时间 = Mean + (从 -Maximum Deviation 到 +Maximum Deviation 之间的随机值)
  • Timescale : 设置眼睛睁开和闭合的速度。设置的值越大,速度越快。

这次,将 Mean 设置为 2.5,将 Maximum Deviation 设置为 2,并将 Timescale 设置为 10。

这样就完成了自动眨眼的配置。

如果现在运行场景,则可以让模型自动眨眼。

img