soumc
(soumc)
1
UE5.7.4を使用しています。
何かが増殖するような表現として、
パーティクルが移動->一定時間経過後その位置に新しく複数パーティクルがスポーン->以降指数関数的に増加
という処理をNiagaraで作りたいのですが、spawn particle/update particleではほかのパーティクルの情報を取得できず、困っています。GPUCompute Simを使う想定です。
simulation stageで条件を満たしたパーティクルのみを対象としてその位置を初期化した空の配列System.Arrayに格納し、次のスポーンでその配列の長さの分だけ新しくスポーンし、順に位置を割り当てていくような処理も考えましたが、外部定数を設定できないとのことで配列に書き込むことができません。システム属性は任意の場所で読み取れると書いてあるのですが書き込みはできないのでしょうか?
他のパーティクルの位置から新しくパーティクルをスポーンさせる方法について、何か解決策があれば教えてください。
解決の助けになるかわかりませんが、
他のパーティクルの位置から新しくパーティクルを発生させる方法ですが、Niagara Data Channelを使う方法があります。
EmitterA で、渡したい情報を書き込み EmitterB で読み込んでスポーンさせることができます。
次のような感じで、ある時点の位置をNiagara Data Channelに書き込んで、そこにスポーンさせることができます。

使い方は、EPIC DEV COMMUNITYのLearning「Niagara Data Channels Intro」が学習の参考になると思います。
また、全然違う原因かもしれませんが、
GPUCompute SimでもエミッターのSim Targetが同じであれば、[Spawn Particles from Other Emitter]モジュールで読めるはずですので、Sim Targetが揃っているか確認してみると良いかも知れません…。