5.7.1 ランチャー版でも再現。
<br/>
■症状
NiagaraのDynamicMaterialParametersモジュールで、Floatで使用している場合
エミッタが更新されると(DynamicMaterialParametersに関係ない更新でも反応します)
Index0Float0WriteなどのBool値がエミッタの初期値に必ず更新されてしまいます。(Float値は継続されます)
現状では勝手にBoolがリセットされてしまうため、エミッタが更新されるたびに既存データが壊れてしまいます。
<br/>
<br/>
ご確認の程よろしくお願い致します、
[Attachment Removed]
(下記リンクは、Epic Games のサポートが内部的に使用するリンクですので、ユーザーの方に下記リンクを利用していただく必要はございません。回答はこの日本語スレッドに日本語として表示されることになります。)
[The DynamicMaterialParameters Niagara module is reset to default when the emitter is [Content removed]
[Attachment Removed]
(以下は、サポート担当の Fabian Francisco によるコメントを翻訳したものです。)
お世話になっております。
回答が遅れており申し訳ございません。本件問題は私が担当することになりました。調査して、すぐに回答したいと思います。
[Attachment Removed]
[mention removed] 様
(以下は、サポート担当の Fabian Francisco によるコメントを翻訳したものです。)
本件問題を UE 5.6 および 5.7.2 (ランチャー版) にて再現を試みました。その際、Dynamic Material Parameter の write フラグ (Index0Float0Write、Index0Float1Write 等など) にカスタム値を設定したうえで、エミッターに対して無関係な変更を行い、再コンパイルしています。しかし、私の環境では、write フラグおよび float の値は維持されたままであり、デフォルト値にリセットされることはありませんでした。
そこで、本件問題について、もう少し詳しい情報を共有していただけませんでしょうか?可能でしたら、最小構成の再現用プロジェクトをご提供いただけますと、こちらの方でも再現することができるようになるかもしれません。よろしくお願いいたします。
[Attachment Removed]
[mention removed]
(以下は、サポート担当の Fabian Francisco によるコメントを翻訳したものです。)
詳しい再現手順およびサンプル プロジェクトをご提供いただきまして、ありがとうございます。とても助かりました。ご説明いただいた手順に従い、UE 5.7.2 環境で本件問題を再現することができました。
また、最新の UE5-Main のソース ビルド (CL 49899931) におきましても、同様の挙動を確認しましたので、本件問題は現在もなお発生しているようです。
この挙動につきまして引き続き調査を行い、追ってご連絡いたします。よろしくお願いいたします。
[Attachment Removed]
[mention removed] 様
(以下は、サポート担当の によるコメントを翻訳したものです。)
本件問題に関する続報ですが、この挙動は 5.7 で新たに発生したものではないことが分かりました。Dynamic Material Parameters モジュールに Vector2D や Vector + Float、追加の入力タイプのサポートが導入される以前の UE 5.5 でも同じ問題が確認できます。
本件問題は、Niagara モジュール スクリプトの バージョン 1.2 以降で導入されたように思われます。エンジン側のバグである可能性が非常に高いようです。そこで、本件問題に関連してこれからバグ レポートを提出することによって、エンジン チームが適切に確認および対応できるようするつもりです。
当面の回避策としましては、Dynamic Material Parameters モジュールを バージョン 1.1 に戻すことが考えられます。そうすることによって、エミッターを変更した際に write フラグがリセットされるのを防げるはずです。ただし、この回避策では、バージョン 1.2 以降で追加された新しいデータ型や改善点が利用できなくなる点に留意してください。
Dynamic Material Parameters モジュールのバージョンは、スタック内のモジュール名の横にある バージョン セレクターによって切り替えることができます。
[Image Removed]この回避策がそちらの環境でも有効かどうか教えてください。提出するバグ レポートに関する追加情報が分かり次第、改めてご連絡いたします。
[Attachment Removed]
5.7.1、5.7.2の(ランチャー版でも再現しました) 5.6では発生していない不具合でした
手順は非常に簡単です。
・なんでもよいので、NiagaraエミッタとNiagaraシステムを作成します
・エミッタにDynamic Material Parameterモジュールを追加します (パーティクルの更新でもスポーンでも構いません)
・エミッタ側のwriteフラグをすべてOFFにしておきます
・Naiagaraシステムを開き、今作成したエミッタを追加します
・システム側に継承さているエミッタのDynamic Material ParameterモジュールにFloatの値といくつかwriteフラグを入れオーバーライドします
状況
エミッタ側 Dynamic Material ParameterのすべてのwriteフラグがOFF
システム側 Dynamic Material ParameterのwriteフラグがいくつかON
・この状態で、エミッタ側を何でもいいので更新し保存します。
・その後システム側を見に行くとダーティーがついており、writeフラグが全てOFFに変わっていることを確認します
100%再現します
一応サンプルを添付しました。
①NewNiagaraSystem のDynamic Material Parameterのwrite フラグにチェックが入っているのを確認してください
②NewNiagaraEmitter を何でもいいので更新してください
③NewNiagaraSystem のwrite フラグのチェックが全て外れていることを確認してください。
(期待される結果チェックが外れていない状態)
[Attachment Removed]
調査ありがとうございます。
1.1に変更した場合ですが試してみました。
1.2→1.1に更新した際に、システム側でWrite Parameter Index をONにしている項目のwriteフラグが全て強制的にONになります
この時点で既存データ壊れてしまいます。
ただ、その後の1.1状態であれば、エミッタの更新によるwriteフラグの初期化は起こらないことは確認できました。
結論としては、1.1に変換時点でwriteフラグの情報が壊れるので
多数のNiagaraシステムに影響が出ます、そのため1.1へのワークアラウンドはプロジェクトとしての対応は難しいです。
よろしくお願い致します。
[Attachment Removed]
[mention removed] 様
(以下は、サポート担当の Fabian Francisco によるコメントを翻訳したものです。)
本件問題につきまして、私のほうでエンジン チームにバグとして登録しました。関連する情報もすべて共有することによって、エンジン チームが本件問題について調査、対応できるようにしました。公開のための手続きが完了後に、以下のリンクから、本件問題のステータスを確認していただけるようになります。
https://issues.unrealengine.com/issue/UE\-363742
なお、このように新しく作成されたチケットは、公開されるまでに少し時間がかかる場合がありますのでご了承ください。
バージョン 1.1 に戻す回避策についてですが、この方法を取るとアセットが破損し、今後問題を避けるために各アセットごとに write フラグを再設定する必要があることは理解できました。
代替の回避策としまして、以下のような方法も検証してみました。それは、エミッタから Dynamic Material Parameter モジュールを削除し、代わりにシステム側で直接設定する方法です。この方法を取っても、エミッタ更新時に write フラグのオーバーライドやリセットが発生しなくなります。この方法では 1.1 に戻す必要はありませんが、システム側でモジュールと write フラグを設定し直す必要があります。
上記情報がお役に立てたか教えていただければ幸いです。
[Attachment Removed]
ありがとうございます。
修正CLなどがわかりましたら、ご連絡いただければ幸いです。
よろしくお願い致します。
[Attachment Removed]
[mention removed] 様
(以下は、サポート担当の Fabian Francisco によるコメントを翻訳したものです。)
> 修正CLなどがわかりましたら、ご連絡いただければ幸いです。
近々バグレポートが公開されましたら、新たな情報が共有されることになります。ただし、公開されてご確認できるようになるまで時間がかかったり、正しい修正が導入されるまで時間がかかる可能性もあります。どうかご理解ください。最新の状況につきましては、前回コメントで共有しました公開されているイシュー トラッカーのリンクを直接ご確認いただくのが確実です。
修正が入るまでの暫定的な対応として、Dynamic Material Parameter モジュールをエミッタではなくシステム側で設定する方法は、お役に立ちそうでしょうか?なお、この回避策では、既存アセットの再設定も必要になる点にご留意ください。
本件問題につきまして他にもご不明点や必要なことがありましたら、お気軽にお知らせください。(特に問題がないようでしたら、こちら側で一旦本件をクローズさせていただきたいと思います。)
[Attachment Removed]
ありがとうございます。
クローズで問題ありません。
システム側で設定する方法ですが、Niagaraシステムの数が非常に多いため、修正を待ちたいと思います。
よろしくお願い致します。
[Attachment Removed]