シミュレーションノイズは、発散のないベクトル場を作成する関数です。この信号は、芸術的なシミュレーションにおいて、細部の知覚を高める目的で使用できます。
この関数は、空間を規則的な格子グリッドに分割することで3次元的に計算できます。各辺にはランダムな値が関連付けられており、これは辺の周りを回転する物質の回転成分を示します。回転する物質が面を出入りする様子を追うことで、格子の各面を通過する磁束を素早く合計できます。次に、格子面における磁束値を補間することで、すべての位置における磁束値が得られます。
パーリンノイズはラティスノイズの最も初期の形態であり、コンピュータグラフィックスで非常に人気を博しています。パーリンノイズは発散フリーではないため、シミュレーションには適していません。
シミュレーション ノイズやパーリン ノイズなどの格子に基づくノイズは、多くの場合、異なる周波数で計算され、合計されて帯域制限されたフラクタル信号を形成します。
その後、ベクトル計算恒等式を用いて発散自由場を生成する他のアプローチも開発されました。例えば、ロバート・ブリッドソンが提案した「カールノイズ」や、イヴァン・デウルフによる「発散自由ノイズ」などが挙げられます。これらのアプローチでは、格子ノイズの勾配の計算が必要になることが多く、この勾配は容易には得られない場合もあります。単純な実装では、格子ノイズ関数を勾配を計算するために複数回呼び出してしまうため、必要以上の計算量が発生します。これらのノイズとは異なり、シミュレーションノイズは数学的性質に加えて幾何学的な根拠も持ちます。シミュレーションノイズは空間に散らばる渦をシミュレートすることで、美しい景観を作り出します。
ベクトル場は次のように生成されます。空間内のあらゆる点 (x,y,z) に対してベクトル場Gが生成され、ベクトル場(Gx, Gy, Gz)のあらゆる成分 x, y, zは、x, y, z をパラメータとする3次元パーリン関数または単体ノイズ関数によって定義されます。Gx, Gy, Gz の x, y, z に関する偏微分は、パーリン関数または単体ノイズの勾配を用いて、単体ノイズ内部の暗黙的な差分計算によって得られます。
偏導関数は、Gの回転 角Fを計算するために使用され、
この方法は、スカラー場の勾配の回転がゼロであるという事実と、2 つのベクトルAとBの外積の発散を各ベクトルのドット積と他のベクトルの回転の差として展開する恒等式に基づいています。
これは、両方のベクトル場の回転がゼロであれば、スカラー場の勾配である2つのベクトルの積の発散もゼロになることを意味します。これにより、スカラー場を生成するために2つのノイズ関数を呼び出すだけで、発散のないベクトル場が構築されます。
ベクトル フィールドは次のように作成されます。2 つのスカラー フィールドが計算され、3D パーリンまたはシンプレックス ノイズ関数を使用して、各フィールドの勾配AとBが計算され、 AとBの外積によって発散のないベクトル フィールドが生成されます。
ベクトル場は、閉じた微分可能な暗黙曲面S = F (x,y,z) = 0 に基づいて作成されます。空間内の各点(多くの場合、曲面の外側または曲面付近)に対して、曲面に垂直なベクトルgが得られます。これは S の勾配、つまり x、y、z に関する偏微分です。このベクトルはユニタリではありませんが、点の各成分を勾配gの大きさで割ることで、ユニタリ法線nを得ることができます。曲面の外側では、これらの法線はすべて曲面から遠ざかる方向を向いています。
その後、3次元パーリン関数または単体ノイズ関数を用いて、空間内のその点のスカラー値 p を計算します。次に、表面の外側を指すベクトル場V = p nを作成します。このベクトル場の回転角によって、空間内の各点における粒子の移動方向が決まります。
構築により、このベクトル SDN は、元の表面までの符号付き距離のレベルで等値面の接線方向を指すようになり、その表面内にとどまるように粒子の動きを制限するために使用できます。