お世話になっております。
アニメーションカーブを利用してテクスチャのUVのアニメーションを行っていますが。Editorでは正しく動くのですがpackage化を行うとアニメーションが再生されなくなります。
前提としてこちらで
UAnimInstance::ParallelEvaluateAnimation()内で
Proxy.GetRequiredBones().SetDisableRetargeting(true);
と記述を追加しています。
UAnimSequence::EvaluateCurveData()内のif (bUseRawDataOnly || bForceUseRawData)でtrueと判定されUAnimSequenceBase::EvaluateCurveData()が呼ばれるのですが、Editorだとこの関数内でよばれるRawCurveDataには正しく値が入っていますがPackageだとEmptyになっており、アニメーションが再生されていないようです。
UAnimSequenceのCompressedCurveDataにはEditor、Packageともに正しい値が入っています。
こちらの挙動ですが、Packageのバグとなりますでしょうか?
もしくはSetDisableRetargeting(true)を行うのが間違っていますでしょうか?
ご確認よろしくお願いします。
お世話になっております。
現在、こちらでも現象の確認を行っております。
一点質問なのですが、こちらの処理を追加した意図はどういったものでしょうか?
UAnimInstance::ParallelEvaluateAnimation()内で Proxy.GetRequiredBones().SetDisableRetargeting(true); と記述を追加しています。
対象の不具合がpackage固有の問題なのか、追記したコードに起因したものなか切り分けたいと考えています。
引き続きよろしくおねがいします。
お世話になっております。
こちらの手元でアニメーションカーブを用いてマテリアルの色を変更する簡易なプロジェクトを作成し確認しました。
結果、コードの改変を行わずパッケージ化した際は問題の症状は発生しませんでしたが、
UAnimInstance::ParallelEvaluateAnimation()内で Proxy.GetRequiredBones().SetDisableRetargeting(true); の記述を行ったエンジンでパッケージを作成して確認したところ問題の症状が発生しました。
ですので問題はSetDisableRetargeting(true);を記述した場合のパッケージ版でのみ起こるようです。
シーケンサーの再生後にSetDisableRetargeting(false); を行うことで回避できるかと思いますので現在具体的な修正箇所を検証中です。
引き続きよろしくおねがいします。
お世話になっております。
現在、SetDisableRetargeting(false);を実行するコードの箇所をまとめております。
お時間を頂いてしまい恐縮ですが、少々お待ちください。
お世話になっております。
こちら、CompressedCurveDataには正しいデータが格納されているようなのでこちらの処理を行うように該当のコードを変更することで回避できるかと思います。
以下のコードを編集して、パッケージの動作を確認いただいてもよろしいでしょうか
AnimSequence.cpp
// extract curve data . Even if no track, it can contain curve data
EvaluateCurveData(OutCurve, ExtractionContext.CurrentTime, false);//bUseRawDataForPoseExtraction);
よろしくおねがいします。
お世話になっております。
追記した処理の意図についてですが、リターゲットをシーケンサーを再生するときだけDisableにするためです。
シーケンサーでは登場人物が完全に決まっていて、その登場人物専用のアニメーションとして制作します。
リターゲットのSkeleton, AnimationScaledの部分で少しでも誤差を出したくないのでリターゲットを一時的にDisableにいています。
ご確認よろしくお願いします。
対応ありがとうございます。
こちらでもパッケージ動作を確認してみます。
パッケージ化を行い、一通り動作確認をしたところ問題がなさそうなので、この変更で対応することにしました。
ご対応ありがとうございました。