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が指定された場合のみ再生されます。
- InIndex
- StopAllMotions
- bForce
true を指定した場合、フェードを適用せずに強制的に停止します。
false を指定した場合、フェードを適用する方法で停止します。
- bForce
更新順について
CubismMotionComponent はモーションの更新処理を担いますが、その更新は CubismParameterStoreComponent の更新の後に適用されます。
これは CubismMotionComponent が行う更新が次のフレームに影響を与えないようにするためです。
CubismMotionComponent の更新の後に CubismParameterStoreComponent::LoadParameters() を呼び出すと、意図しない動作になる恐れがあります。