フェードを有効にしてモーションをループ再生させる (Animator)
最終更新: 2020年2月7日
概要
Cubism Viewer for OWでモーションをループ再生する際、「ループ再生時のフェードイン」にチェックが入っていた場合、モーションが終端から先頭に戻る際にCubismのモーションフェード、パラメータフェードが発生します。
参考:「モーションの設定」
しかし、UnityのAnimatorで一つのステートマシン内でモーションをループ再生する場合、MotionFadeを使用しても終端から先頭に戻る際にフェードは発生しません。
AnimationClipをループ再生させる場合、2つのステートマシンを往復するように組むことでループ時にフェードを発生させることができます。
以下は[SDKのインポート]をおこなったプロジェクトに対して行うことを前提とした手順の説明です。
- モデルにCubismFadeControllerをアタッチ
- AnimationClipのLoop Timeのチェックを外す
- AnimatorControllerを構築
1. モデルにCubismFadeControllerをアタッチ
Sceneに配置したCubismのPrefabのルートとなるGameObjectに、CubismFadeControllerをアタッチします。
既にアタッチされていれば新たにアタッチする必要がありません。
CubismFadeController.CubismFadeMotionに、ループ再生させるAnimationClipのIDが登録された.fadeMotionListを設定します。
2. AnimationClipのLoop Timeのチェックを外す
ループ再生させるAnimationClipを選択状態にし、Inspectorウィンドウから「Loop Time」のチェックを外します。
3. AnimatorControllerを構築
AnimatorControllerを作成し、モデルのAnimatorコンポーネントにセットします。
AnimatorウィンドウでAnimatorControllerを開き、グラフの空欄をクリックしてInspectorウィンドウからCubismFadeStateObserverをアタッチします。
次に、同一のレイヤーにステートマシンを2つ作成します。
作成したステートマシンは、いずれも2で「Loop Time」のチェックを外したAnimationClipを設定します。
最後に、ステートマシンを右クリックから「Make Transition」をクリックし、それぞれをTransitionで繋ぎます。
ここではTransitionの設定は、Exit Timeを1、Transition Durationを0に設定します。
以上で設定は完了です。
この状態でシーンを再生すると、モーションがフェードしながらループ再生されます。