UE5.7で利用できなくなったシーケンサーのミラーリング手法について

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

UE5.7へのアップグレードに伴い、Level Sequenceの運用方法についてご相談があります。

これまで、TransformOrigin.Scale = (1, -1, 1) を利用して、カメラ専用のLevel Sequenceをランタイムで左右反転し、1つのシーケンスを左右両方のゲームプレイ状況で再利用していました。

調査したところ、UE5.7では FGatherTransformOrigin 内で TransformOrigin のScaleが (1,1,1) に正規化されるようになっており、従来利用していたミラーリング手法が機能しなくなっています。

​​

TransformOrigin.SetScale3D(FVector::OneVector);

※Unreal Engine Issues and Bug Tracker (UE-275153)

​

​

その後調査したところ、この変更は回帰ではなく、本来ScaleをサポートしていなかったTransformOriginの挙動を正常化するための修正であると理解しています。

​

今まで使用していたカメラのシーケンサーデータは以下の通りです。

  • Sequencerにはカメラのみが含まれている
  • カメラの子階層や複雑なTransform階層は存在しない
  • 左右反転は Scale=(1,-1,1) のみを利用
  • 同一のシネマティックを左右両方で共有するために使用

従来はこの方法により、左右反転版のシーケンスを別途管理することなく運用できていました。

そこで以下についてお伺いしたいです。

​

<質問>

UE5.7以降において、

「カメラのみのLevel Sequenceをランタイムで左右反転して再利用する」

ための推奨ワークフローは存在しますでしょうか。

TransformOriginの負スケールがサポート対象外となった現在、Epic Gamesとして推奨される実装方法や代替ソリューションがあればご教示いただけますと幸いです。

こちらではカメラ演出を左右両方向で再利用するケースが多く、ミラーリング機能があることでシーケンスの重複管理を避けることができます。

​

​

[Attachment Removed]

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

ご指摘、誠にありがとうございます。

確かに、ご指摘の通り、TransformOriginの負スケールを反転として利用することがUE5.7でできなくなっておりました。Epic側でTransformOriginをミラーリングに応用するユースケースを必ずしも認識できておらず、ご迷惑をおかけしております。

ご質問の「カメラのみのLevel Sequenceをランタイムで左右反転して再利用する」ためのワークフローについては、レベル上にミラーリングを行うためのダミーアクタを配置してそのScaleを(1, -1, 1)に設定し、レベルシーケンス側のカメラのトラックからAttachトラックを利用してアタッチする(親にする)アプローチが考えられます。

この方法であればUE5.7でも動作し、かつ、レベルシーケンスのデータはそのままにアタッチ先のScale値で反転の有無の切り替えが可能です。これは、推奨とまでは言い切れないものの、社内のシーケンサー関係者でディスカッションした際に最初に出た実装アイデアとなります。

また、本件はMovieSceneTransformOriginSystem.cpp:59付近を

- TransformOrigin.SetScale3D(FVector::OneVector);
+ TransformOrigin.SetScale3D(TransformOrigin.GetScale3D().GetSignVector());

に変更していただくことでも修正が可能です。ただし、これをエンジン側で採用するかどうかは現在協議中という状況です。

ご迷惑をおかけしておりますが、現在までの状況を一旦お報告申し上げます。

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

[Attachment Removed]