アニメーションBPでのステート開始イベントの開始タイミングについて

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

アニメーションBPのステート遷移後のステート開始イベントでアニムモンタージュの再生を行っております。
通常のアニメシーケンスはステート遷移後のステート内で再生しております。

ステート開始イベントでの再生開始では、通常のステート内の再生開始より、1フレーム遅れて開始してしまいます。

ステート開始イベントはそういったものなのでしょうか?

その場合なのですが、ステート遷移でアニムモンタージュの再生したいのですが、他に何か手段はございますでしょうか?

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

お世話になっております。本件返信が遅くなり申し訳ございません。

こちらの件に関して検証を行っていたのですが、
モンタージュの再生が通常のアニメーションより1フレーム遅くなる、という状況を確認できていないため、
再現を行うことのできるサンプルプロジェクトをご提供していただくことは可能でしょうか?

こちらで行った検証方法は以下となります。
◆1. Montageを作成し、SlotにAddedAnimationとしてアニメーションを追加。

◆2. Animation Blueprintと、その中でStateを作成し、イベントを設定

◆3. 遷移したStateの中でAddedAnimationのSlotを指定してPoseへ繋げる

257709-2018-07-27-17h08-05.png

◆4. EventGraphからStateからのイベントでMontageを再生するように指定

お手数おかけしますが、確認のほどよろしくお願いいたします。

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

検証いただいた手法はその通りでございます。

サンプルを作るのは少し手間がかかってしまうので、ちょっと難しいかと思います。

なぜ、1フレ遅延するか?の大まかなフローの想像なのですが・・・

(A)通常アニメシーケンスの再生

①GameThread    :アクターのTickなどからAnimBPのAnimInstanceへAnimState遷移リクエスト

②アニメ処理スレッド:AnimInstanceのAnimState遷移処理→アニメシーケンスの再生リクエスト

(B)アニムモンタージュの再生

①GameThread    :アクターのTickなどからAnimBPのAnimInstanceへAnimState遷移リクエスト

②アニメ処理スレッド:AnimInstanceのAnimState遷移処理→AnimState遷移のAnimNotfyの発行

③GameThread    :AnimInstanceのEventGraphでAnimState遷移AnimNotifyの実行→アニムモンタージュの再生リクエスト

(EventGraphはGameThreadで動くということで間違っていないでしょうか?)

(A)の場合は①②が同フレーム内で処理されるので、次のフレームではアニメーションが表示される。

(B)の場合は①②が同フレーム内で処理されるが、③は次のフレームになってしまい、更にその次のフレームでアニメーションが表示される。

ということではないでしょうか?

(A)と同じようなタイミングで呼び出す方法はございませんでしょうか?

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

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

検証いただいた手法はその通りでございます。

サンプルを作るのは少し手間がかかってしまうので、ちょっと難しいかと思います。

なぜ、1フレ遅延するか?の大まかなフローの想像なのですが・・・

(A)通常アニメシーケンスの再生

①GameThread    :アクターのTickなどからAnimBPのAnimInstanceへAnimState遷移リクエスト

②アニメ処理スレッド:AnimInstanceのAnimState遷移処理→アニメシーケンスの再生リクエスト

(B)アニムモンタージュの再生

①GameThread    :アクターのTickなどからAnimBPのAnimInstanceへAnimState遷移リクエスト

②アニメ処理スレッド:AnimInstanceのAnimState遷移処理→AnimState遷移のAnimNotfyの発行

③GameThread    :AnimInstanceのEventGraphでAnimState遷移AnimNotifyの実行→アニムモンタージュの再生リクエスト

(EventGraphはGameThreadで動くということで間違っていないでしょうか?)

(A)の場合は①②が同フレーム内で処理されるので、次のフレームではアニメーションが表示される。

(B)の場合は①②が同フレーム内で処理されるが、③は次のフレームになってしまい、更にその次のフレームでアニメーションが表示される。

ということではないでしょうか?

(A)と同じようなタイミングで呼び出す方法はございませんでしょうか?

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

お世話になっております。
流れに関しまして承知いたしました。
こちらで現象の確認ができておらず推測になってしまいますが、ご指摘の問題はありそうです。

残念ながらMontageの再生はNotify経由のみとなっているのですが、タイミングを合わせる目的であれば、
AnimationSequenceの方もNotifyを元にBlueprintで再生することでズレを回避することは出来ないでしょうか?

お手数おかけしますが、よろしくお願いいたします。

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

通常のアニメシーケンスの再生はState遷移で制御しておりまして、一部のRootMotionだけAnimMontageを使用しております。ですので、state開始Notifyを使わずに、できる限りState遷移での制御の方に合わせたいと考えております。

試しに、state開始Notifyを使わずに、C+の方から、直接Montage_Play()を呼び出すようにしましたら、遅延なしに再生することができました。

この方法しか考えられませんでしょうか?

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

お世話になっております。
現状お調べした限り、Montageの再生はStateからNotify経由で呼び出すという方法になってしまうため、
Stateの遷移で呼び出したい場合、C++で呼び出すことが必要になりそうです。
お手数おかけしますが、C++での対応をご検討いただければと思います。
よろしくお願いいたします。

お世話になっております。
それでは、C++で直接呼び出す方法で検討したいと思います。
ご対応ありがとうございました。