まず、ここで見ているのはパーリン ノイズではないことに注意することが重要です。値ノイズと呼ばれるものに関する Hugo Elias の説明を見ています。このリンクは、この問題に関する混乱の 90% 以上の原因である可能性があります。値ノイズは間違いなくいくつかの同様の効果を作成できますが、かなり遅くなります (特に、ほとんどの効果に必要な 3 次補間を使用する場合)。さらに、見ている関数は、実際の補間値のノイズ関数ではなく、単なるランダム ベースです。
次に、正直なところ、Perlin Noise は飛ばして、OpenSimplex Noise と呼ばれるものを見てみたいと思います。パーリン ノイズは古いアルゴリズムで、基本軸と 45 度の対角線に沿ってすべての機能を並べることで、重大なグリッド アーティファクトを示す傾向があります。OpenSimplex ノイズは、基本的にパーリン ノイズと同じすべてのものに役立ちます。ノイズは入力ポイント (2D、3D、または 4D) を取り、-1 と 1 の間の値を返し、出力値は入力座標によって滑らかに変化します。変化します。
OpenSimplex Noise は、実際には、ゲーム開発プロジェクトの一環として私が独自に開発したアルゴリズムであり、3D+ 実装用に特許を取得している Simplex Noise アルゴリズムの代替として機能します。
「公式」リポジトリ: https://gist.github.com/KdotJPG/b1270127455a94ac5d19 (Java)
他の誰かによる Javascript ポート: https://gist.github.com/KdotJPG/b1270127455a94ac5d19 (注: これまでのところ 2D 実装のみですが、それ以上は必要ないかもしれません)
3D Perlin と 3D OpenSimplex、2D スライス:
(左は生のノイズ (x,y,0)、次はネガ/ポジの白黒、次はゼロに近い黒、次はノイズ (x,y,0.5))
2D OpenSimplex:
(比較のため、2D パーリン ノイズは z=0 で 3D とほぼ同じに見えることに注意してください)