UE5 オーシャンウェーブ wave water 波の表現 Niagara
何人かの人々が私に#UE5で私のセットアップを共有するように頼んだ#Niagaraの使い方について高速フーリエ変換を使用してタイリング海洋波を生成します。このスレッドは、うまくいけば、プロセスに光を当て、同じことをしたい人へのガイドとして役立つでしょう。#gamedev #realtimevfx
UE5ナイアガラオーシャンウェーブ– @OverdrawXYZ経由Twitter– DarknessFX GameDev – DFX.lv
FFTを使用してタイリング海洋波を生成する方法は、これらのステップで要約できます。
1.各テクセルに波を表すために必要なエンコードされた値が含まれているh0ルックアップテーブルを事前に計算します。これは、テッセンドルフが元の論文で与えた変数であるため、h0と呼ばれます。
シムに必要なものはすべてこのテクスチャに保存されます。そこから、テクセルの位置とそこに保存されているデータに基づいて、波の速度、大きさ、方向、周波数を導き出すことができます。暗い領域は、現実的な海の波を生成するために乗算される「スペクトル」からのものです。
2.「バタフライテクスチャ」を事前計算します。これは、基本的に、GPUでのIFFTアルゴリズムの高速計算用に設計されたルックアップテーブルです。テクスチャのサイズはlog2(N)xNです。したがって、512×512グリッドは9×512テクスチャになります。以下は視覚化のために引き伸ばされています。
3.ここで、すべてのフレームでフーリエ成分を更新して、時間とともにアニメーション化してから、水平方向、次に垂直方向のIFFT操作を実行します。この一連の操作により、法線を導出してジオメトリをオフセットするために使用する3Dディスプレイスメントマップが作成されます。
これがTessendorfによる論文です
https://people.cs.clemson.edu/~jtessen/reports/papers_files/coursenotes2004.pdf
そして、GPUでIFFT操作を行う方法について私が頻繁に参照した論文があります。