LoginSignup
11
5

More than 3 years have passed since last update.

UE4 ルートモーションについてのメモ

Last updated at Posted at 2020-01-25

概要

UnrealEngine のアニメ―ションのルートモーションについてのメモです。

更新履歴

日付 内容
2020/10/23 URO時の問題について追記

環境

Windows10
Visual Studio 2017
UnrealEngine 4.22

参考

以下を参考にさせて頂きました、ありがとうございます。

UnrealEngine:ルートモーション

ルートモーションについて

アニメ―ションのルートの移動値であり、移動するようなアニメ―ションの移動した値をアクターへ適用するための仕組みです。
UEではスケルトンツリーのトップにあるボーンから取得するようです。(Rootという名前ではなくても良いらしい)

関連ソース

"Engine\Source\Runtime\Engine\Classes\GameFramework\RootMotionSource.h"
"Engine\Source\Runtime\Engine\Private\GameFramework\RootMotionSource.cpp"

ルートモーション処理

キャラクターへの適用方法です。

適用方法

アニメ―ションシーケンスの[アセット詳細] -> [RootMotion] の [EnableRootMotion] にチェックを入れます。

AS_EnableRootMotion.jpg

アニメ―ションBPの[詳細] -> [RootMotion] にて、[Root Motion from Everthing] か [Root Motion from Montage Only]を選択します。
AnimBP_RootMotion.jpg

#[Root Motion from Montage Only]はアニメーションモンタージュで再生した時のみとなります。

適用されない場合のトラブルシューティング

アニメ―ションデータが対応していない場合

ルートのボーンが動かないと適用されません。
トップのボーンを指定してプレビューした場合、オレンジの線がでます。
RootBone.jpg

この状態で、[EnableRootMotion]にチェックを入れてプレビューすると、移動が書き出されるため、プレビュー上では移動しなくなります。(オレンジの線がでなくなります)
EnableRootMotion.jpg

MovementComponentが対応していない場合

デフォルトでは移動コンポーネントにCharacterMovementComponentを使用していないと適用されません。
その場合はアニメーションインスタンスから移動値を取得して自前でアクターに適用しないとなりません。

以下コード例:

AMyActor.cpp
void AMyActor::Tick(float DeltaTime){

    // アクターのアニメ―ションインスタンスクラスから移動値を取得
    FRootMotionMovementParams _Params = GetAnimInstance()->ConsumeExtractedRootMotion(1.0f);
    if( _Params.bHasRootMotion){
        // アクターのローカルトランスフォームへ適用
        AddActorLocalTransform(_Params.GetRootMotionTransform());
    }

}

sweep処理が必要な場合は、AddActorLocalTransform の第2引数を true にすればOKです。

その他

URO(Update Rate Optimizations)などを使ってアニメ―ションフレームを飛ばす処理をした場合、当然ながらトランスフォーム値が意図したものとずれてきます。(飛ばされたフレームのデータが取得できません)
この場合、ルートモーションを使うのは避けるしかないと思われます。

まとめ

ルートモーションが上手く動かなかったため、原因をメモ書きとして残しました。

11
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
5