シーケンサのマスターシーケンスとサブシーケンスの処理の優先度について

症状:

ACharacterにトランスフォームトラックと「ルートボーンアクタを交換」設定したアニメーショントラックのあるシーケンサーの処理結果が、マスターシーケンスのみの場合と、サブシーケンスを併用した場合で異なる。

<br/>

目的:

シーケンサーでインゲーム中のACharacterに動的バインドして、シーケンサー内でルートモーションで移動した結果をそのままインゲームのACharacterの位置にしたい

<br/>

やったこと:

1.ACharacterに動的バインド

2.ACharacterのルートモーション付きアニメーションを「ルートボーンアクタを交換」で再生

3.ACharacterの座標がアニメーションのルート位置になってしまい、半分地面に潜ってしまうのでACharacterにトランスフォームトラックをAbsolute、KeepStateで追加し、ACharacterのカプセルのハーフハイト分上げる

<br/>

上記の手順をマスターシーケンスのみで行った場合はシーケンサー終了時の位置がインゲームのACharacterの位置に反映されました。

<br/>

次に以下のようにサブシーケンスと併用してみました。

<br/>

1.マスターシーケンスでACharacterに動的バインド

2.サブシーケンスでマスターシーケンスのACharacterにプロキシバインド

3.サブシーケンスでACharacterのルートモーション付きアニメーションを「ルートボーンアクタを交換」で再生

4.ACharacterの座標がアニメーションのルート位置になってしまい、半分地面に潜ってしまうのでマスターシーケンスでACharacterにトランスフォームトラックをAbsolute、KeepStateで追加し、ACharacterのカプセルのハーフハイト分上げる

<br/>

この場合はシーケンサー終了後にACharacterは4.のアニメーショントラックで指定された座標に移動してしまいました。

<br/>

質問:

マスターシーケンスとサブシーケンスで同じアクターに対してトラックを設定する場合、どちらが優先度が高いのか、組み合わせを想定していないトラックはあるのか、情報がありましたら教えていただきたいと思います。

<br/>

以上、よろしくお願いいたします。

[Attachment Removed]

再現手順
問題の説明に含みます。

[Attachment Removed]

お世話になっております。

ご質問ありがとうございます。

> マスターシーケンスとサブシーケンスで同じアクターに対してトラックを設定する場合、どちらが優先度が高いのか

この優先度は「階層バイアス」という仕組みで解決され、デフォルトではサブシーケンスが優先され、マスターシーケンスのトラックは無視されます。詳細は公式ドキュメント『サブシーケンス トラック』の「階層バイアス」のセクションをご覧ください。」

https://dev.epicgames.com/documentation/unreal\-engine/cinematic\-subscequences\-track\-in\-unreal\-engine?lang\=ja

非常に気になる点として、ご提供いただいた下記の手順を試してみましたが、

> 1.ACharacterに動的バインド

> 2.ACharacterのルートモーション付きアニメーションを「ルートボーンアクタを交換」で再生

> 3.ACharacterの座標がアニメーションのルート位置になってしまい、半分地面に潜ってしまうのでACharacterにトランスフォームトラックをAbsolute、KeepStateで追加し、ACharacterのカプセルのハーフハイト分上げる

>

> 上記の手順をマスターシーケンスのみで行った場合はシーケンサー終了時の位置がインゲームのACharacterの位置に反映されました。

実は当方ではこちらの再現ができておりません。

つまり、このセットアップでは、マスターシーケンス一本でもシーケンサー終了時にキャラクターの位置はSwap Root Motion Actorで移動した移動後の位置を引き継げず、「3」で設定したトランスフォームトラックの位置に引き戻されました。ただし、この挙動(ルートモーションの位置を素直に引き継げない、不便な挙動)が、本来のエンジンの挙動であるはずです。

たいへん恥ずかしながら、どのようにしてお手元でルートモーション位置の引き継ぎを実現されているのか、当方では見当がついていないというのが正直なところです。お手数ですが、Thirdpersonテンプレートを使用し、MM_Walk_FwdなどのアニメーションをRoot Motionに変更したもので再現プロジェクトを作成し、ご提供いただけますと助かります。

> 組み合わせを想定していないトラックはあるのか

基本的にはどのようなトラックも組み合わせてご利用いただけます。

ただし、すでにお試していただいておりますように、TransformトラックとAnimationトラックは、「トラックとしては別物」ながら、同じアクタの座標に影響を与えてしまうため、挙動をよく理解したうえで組み合わせていただく必要があります。これはマスターシーケンスとサブシーケンスで組み合わせる場合に限らず、同一シーケンス上で組み合わせる場合も注意が必要な点です。

特徴的なのは、AnimationトラックのSwap Root Bone Actorはポストプロセスでアクタの位置を変更する仕組みとなっており、Transformトラックが座標を変更するコードパスとは異なっているという点です。そのため、仕様上は、

・AnimationトラックをKeep Stateに設定しても、ルートモーションで動かしたアクタ位置は温存されない(Animationトラックは座標を管理するトラックではないため)

・TransformトラックをKeep Stateに設定しても、Animation トラックのSwap Root Bone Actorで動かしたアクタ位置は温存されない

(Transformトラックが行う方法とは異なる方法で座標が変更されているため)

という挙動になります。

> 目的:

> シーケンサーでインゲーム中のACharacterに動的バインドして、シーケンサー内でルートモーションで移動した結果をそのままインゲームのACharacterの位置にしたい

お手元では「ルートモーションで移動した結果をそのままインゲームのACharacterの位置にする」方法があるようですが、本来のエンジンの挙動では上記要件は非常に実現が難しいとされています。これを補うため、Animation Mixer プラグインが現在実験的に開発されておりますが、標準機能でインゲームキャラクターとSwap Root Bone Actorを組み合わせる際に社内でノウハウとされておりますのは、

・Swap Root Bone Actorを適用した際にキャラクターが地面に埋まってしまう症状は Transform ではなく、AnimationトラックのProperty > Root Motions > Start Location Offset でZ値を入れることで行う。ただし、この方法ではルートモーション後の位置をKeep Stateでインゲームに引き継げない。

・インゲーム引継ぎを行う場合はTransformトラックを追加し、アクタの最終位置をTransformトラックにConstraint補間で打つ。このとき Start Location Offset と制御が干渉するため、Start Location Offsetはリセットする。

(つまり、厳密にはルートモーションの位置を引き継げておらず、ルートモーションの結果をTransformトラックにベイクするような形です)

といったものとなります。

ご質問に必ずしも回答できておらず誠に恐縮ですが、一旦お返事申し上げます。

以上、よろしくお願いいたします。

[Attachment Removed]

返答が遅くなり申し訳ございません。

ご教授いただいた方法を確認したところ、問題なさそうでした。

ありがとうございます。

> 実は当方ではこちらの再現ができておりません。

申し上げにくいのですが、改めて確認してみたところ、こちらの環境でもうまく行っていた状況が

再現できなくなってしまいました。再現できないかはもう少し調査いたしますが、

問題自体は解決しましたので、このスレッドは閉じさせていただきます。

[Attachment Removed]

ご返信ありがとうございます。

状況が再現不可となってしまったこと、承知いたしました。

​問題が解決できた(制作上困っていたことが、何はともあれ解消された)ということであれば、当方としても幸いです。もし、そうでないようであれば、別スレッドで構いませんので、いつでもお気軽にご相談ください。

それではお言葉に甘えてまして、本スレッドは一旦Closeとさせていただきます。

以上、よろしくお願いいたします。​

[Attachment Removed]