ねこでじ(Nekodigi)

Nekodigi’s diary

学習中の気づきをまとめています。応援よろしくお願いします

【Processing】Curl Noiseを実装する。

成果物

Houdiniを使っていてCurl Noiseというものが気になったので調べてみると、3次元ベクトル場の回転を求めるだけで実装できることが分かったので、やってみました。吸い込みや巻き込みなく、一か所に集まったりしないというのが特徴で、実際に上手く動作しているようでした。障害物を避けることが出来るようなのですが、方法が分からないのでまた見つかったらやってみたいと思います。
f:id:Nekodigi:20200706200428p:plain
これはCurl Noiseの入力に使ったSimplexノイズに従ってパーティクルを動かしてみた様子です。こちらは固まって動いていて、ムラがあります。
f:id:Nekodigi:20200706200213p:plain
これはCurl Noiseに従ってパーティクルを動かしてみた様子です。長時間動かしても固まることなく均一に分布しました。

仕組み

三次元ベクトルのrotAを∇×Aで求めているだけです。また、SimplexノイズやPerlinノイズの出力は一次元なのですが、異なるオフセットを加えた3種類のデータを三次元ベクトルとみなしています。こちらの解説がわかりやすいです。
Curl Noise書いてみた - Qiita
また、今回は、三次元場とオフセットを加えた計四次元が必要だったので、OpenSimplexノイズを利用しました。
gist.github.com

コード

Curl Noiseという名前で追加しています。
github.com