Motion(UE)

最終更新: 2024年9月5日

このページにはアルファ版に関する記述が含まれます。

概要

Motionを使用することで、Unreal EngineのAnimationブループリントでステートマシンを組まずにスクリプトからアニメーションを再生することが出来ます。

モーション機能の設定ファイルは.motion3.json 形式で書き出されます。

モーションの設定方法などの詳細につきましては こちら をご覧ください。Motionを使用するにはCubismFadeControllerコンポーネントとUnreal EngineのAnimationブループリントが必要です。
AnimatorコンポーネントにAnimatorControllerを設定した場合、Motionは再生されずにAnimatorControllerのアニメーションが再生されます。

該当のチュートリアル記事は こちら をご覧ください。

コンポーネントの扱い方

Cubism SDK for Unreal Engine における Motion は CubismMotionComponent を CubismModel アクタの子コンポーネントに追加することで使用することができます。

.model3.json に .motion3.json のパスが設定されている場合は、インポートの際に自動的に CubismModel アクタに CubismMotionComponent が子コンポーネントとして追加されるため、ユーザー側での設定は不要です。

モーションの再生方法

モデルをインポートすると、 .motion3.json がUnreal Editor用の .uasset に変換され、CubismMotionComponent の Jsons 配列に追加されます。
Unreal Editor上では、 Jsons に登録されている再生したいモーションのインデックスを Index として指定することで、モーションを適用することができます。Index が配列のインデックスの範囲外にある場合は適用されません。
モーションの登録順はエディタ上で任意に変更可能なほか、通常は不要ですが、ユーザーが任意にモーションを追加・削除することも可能です。

モーションの再生・停止を制御する場合は CubismMotionComponent に用意されている以下の関数を使用します。

UFUNCTION(BlueprintCallable, Category = "Live2D Cubism")
void PlayMotion(const int32 InIndex, const float OffsetTime=0.0f, const ECubismMotionPriority Priority=ECubismMotionPriority::Normal);

UFUNCTION(BlueprintCallable, Category = "Live2D Cubism")
void StopAllMotions(const bool bForce = false);
  • PlayMotion
    • InIndex
      再生したいモーションの Jsons におけるインデックスを指定します。
    • OffsetTime
      関数を呼び出したタイミングからモーションのフェードインが始まるまでの時間差を指定します。
    • Priority
      再生しようとしているモーションの優先度を指定します。
      現在再生されているモーションが存在する場合、その優先度よりも大きいか、Forceが指定された場合のみ再生されます。
  • StopAllMotions
    • bForce
      true を指定した場合、フェードを適用せずに強制的に停止します。
      false を指定した場合、フェードを適用する方法で停止します。

更新順について

CubismMotionComponent はモーションの更新処理を担いますが、その更新は CubismParameterStoreComponent の更新の後に適用されます。
これは CubismMotionComponent が行う更新が次のフレームに影響を与えないようにするためです。
CubismMotionComponent の更新の後に CubismParameterStoreComponent::LoadParameters() を呼び出すと、意図しない動作になる恐れがあります。

この記事はお役に立ちましたか?
はいいいえ
この記事に関するご意見・
ご要望をお聞かせください。