開始時間0.0秒に配置されたアニメーション通知ステートのTriggerTimeOffsetの値について

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

開始時間0.0秒に配置されたアニメーション通知ステートのTriggerTimeOffsetの値について質問です。

開始時間0.0秒にアニメーション通知ステートを配置する際、以下のどちらの操作で開始時間を0.0秒に設定したかによって、TriggerTimeOffsetの値が変わります。

  • NotifyFrameかNotifyBeginTimeに直接0.0秒を指定する(またはアニメーション通知ステート全体をドラッグして0.0秒に設定する)
  • アニメーション通知ステートの左端の境界をドラッグして開始位置を0.0秒まで伸ばす

前者の場合はTriggerTimeOffsetの値は0.0001、後者の場合はTriggerTimeOffsetの値は0.0になります。

TriggerTimeOffsetの値が0.0001だと、スロー再生などで再生レートを小さくした際に再生時間が0.0001まで進まず1フレームだけアニメーション通知ステートが実行されない、という問題が発生します。

これが致命的な問題となる具体例として、連続した複数のアニメーションシーケンス(例えばBegin、Loop、Endの3つに分かれている)の全体を範囲としたい同一アニメーション通知ステートをそれぞれのアニメーションシーケンスに配置した場合に、切れ目部分(BeginからLoopに遷移した瞬間、LoopからEndに遷移した瞬間)でスロー再生などで再生レートが小さくなると、1フレームだけ抜けが生じてしまいます。

厄介なことに同じ再生レートでもFPSが低い時は問題は起きず、FPSが高い時は問題が起きます。(DeltaTimeが0.0001を下回りやすくなるため)

この問題の解決策として、以下の質問で、アニメーション通知ステートがトリガーされる条件処理部分を変更する方法が提案されています。

[Content removed]

[Content removed]

しかし、アニメーション通知ステートがトリガーされる条件処理部分を変更するのはエンジン改造が必須なのと全体として影響が大きいため、開始時間0.0秒に配置されたアニメーション通知ステートのTriggerTimeOffsetを全て0.0にするツールを作ってこの問題を回避しようと考えています。

そこで質問ですが、開始時間0.0秒に配置されたアニメーション通知ステートのTriggerTimeOffsetの値を0.0にすることは問題ないでしょうか?

逆に0.0001になっていないと何か別の問題が起きたりすることは無いでしょうか?

(現状でも操作手順によって0.0か0.0001かが変わるので、0.0001じゃないと何か問題があるということはおそらく無いと思いますが念のため確認させていただきます)

よろしくお願いいたします。

[Attachment Removed]

お世話になっております。ご質問ありがとうございます。

ご指摘いただいた「TriggerTimeOffsetに0.0を入力しても0.0001が入る」という挙動は、Unreal Engine 3時代から伝統的に引き継がれてきた安全策のひとつです。シーケンスの0秒目や最終秒目と同じ位置にある通知の拾い漏れが起こらないよう、意図的に内側へ寄せる処理が追加されたものです。

「通知ステートの左端をドラッグして開始位置を0.0秒まで伸ばす」操作の際にこの補正が行われないのは 、一種の実装漏れでして、実際、UE5.0の頃にこの操作方法で設定された AnimNotifyが特定の条件下でトリガーされないという不具合が報告されたことがありました。

このように、エンジンの実装やテストはこのオフセットの存在を前提に積み重ねられており、TriggerTimeOffsetを0.0ぴったりに設定した際に、(具体的な不具合を列挙することはできませんが)副作用が発生しないとは言い切れない状況です。

このように当方は、0.0揃えのアプローチを問題ないやり方として推すことが難しい立場なのですが、エンジンの改造にも特有のリスクと継続保守コストがかかりますので、データ対応で進めたいとする方向性もよく理解できます。0.0揃えで発生する副作用(起こるとすればトリガー漏れ)も察知しやすいため、エンジン改造と比較して、こちらのほうが問題が少ないという判断も当然ありえると思います。

曖昧な回答で申し訳ございませんが、いったんご回答申し上げます。

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

[Attachment Removed]

ご回答ありがとうございます。

アニメーションシーケンスの開始時間0.0秒に配置された場合、アニメーション通知のTriggerTimeOffsetは0.0001が正しくて、アニメーション通知ステートのTriggerTimeOffsetは0.0が正しい、と推測してましたがそうでもないということなのですね…。

頂いご回答内容を踏まえた上で、それぞれの方法のリスク等を考慮して、どのように対処するかを検討しようと思います。

[Attachment Removed]

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

回答のご確認ありがとうございました。

それでは、あいまいな回答状況で恐縮ですが、対応済みということでチケットは一旦Closeさせていただこうと思います。

また何か疑問点や問題が生じた場合は、いつでもご相談ください。

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

[Attachment Removed]