web-dev-qa-db-ja.com

シンプレックスノイズとパーリンノイズ

シンプレックスがリリースされた後も、なぜパーリンノイズが今日でもそれほど人気が​​あるのか​​知りたい。シンプレックスノイズはケンパーリン自身が作成したもので、古いアルゴリズムを引き継ぐものと想定されていました。これは、高次元で低速であり、品質が高い(アーティファクトが見えない)ものでした。

シンプレックスノイズは2001年に発表されました。テレインのハイトマップの生成、手続き型テクスチャの作成などに関して、パーリンノイズについて話しているのはこの10年間だけです。

誰かが私を助けてくれますか?シンプレックスノイズのいくつかの欠点はありますか? 1Dと2Dのノイズに関しては、Perlinノイズの方が速いという噂を聞きましたが、それが本当かどうかはわかりません。

ありがとう!

39
raRaRa

「壊れていない場合は、修正しないでください。」

シンプレックスが優れている理由を教えてくれる人を見つけることができるかどうかを確認してください。 「それはより高速で多次元に拡張されます」と「シンプレックスノイズは高次元のノイズ関数の複雑さを軽減しようとします」と私は見つけました。私たちのほとんどは2次元または3次元で作業します。時間をかけて何かを行うのに十分幸運であれば、おそらく4次元です。

処理するには遅すぎる、Perlinのリアルタイムの使用がほとんどなく、ほとんどの場合、標準のPerlinノイズで十分であると言っても差し支えないと思います。プレレンダリング(映画業界で使用されるような)では、レンダリングがとにかく遅いため、時間はそれほど重要ではありません。リアルタイムシミュレーションでは、進行中の処理の範囲を減らすのに十分な方法があるため、数ナノ/ミリ秒ごとに大量のノイズマップを生成することはほとんどありません。これは、基本的なリアルタイムの最適化です。

24
Engineer

単に名前のせいだとしても、私はまったく驚かないでしょう。パーリンノイズとシンプレックスノイズのどちらかを選択する必要があります。後者はより新しく、いくつかの利点があります。しかし、ご存知のように、2つの「シンプル」バージョンのように聞こえます。複雑なものを使用します。ノイズは複雑だと思いませんか?

人々はむしろ不合理な傾向があります。

25
Confusion

シンプレックスノイズを使用して同等の出力を取得するために必要な入力パラメーターを見つけるのに必要な時間を費やすのではなく、既知の値を使用して既知の視覚特性をもたらすことができるため、クラシックパーリンノイズが優先される場合があります。

[シンプレックスノイズ]は視覚的特徴が少し異なるため、クラシックノイズを直接プラグインで置き換えるとは限りません。正確なフィーチャサイズ、正確な値の範囲、高次統計など、クラシックノイズの詳細な特性に依存するアプリケーションでは、シンプレックスノイズを使用する場合に見栄えをよくするために、いくつかの変更が必要になる場合があります。
ステファングスタフソンの シンプレックスノイズを解明

7
Pikalek

ケン・パーリンは彼のシンプレックスノイズアルゴリズムの特許を取得しました。彼の古典的なアルゴリズムは私の知る限り特許を取得していません。

7
Kelvin M

ちょっとした逸話的な経験ですが、私がクラシックパーリンノイズを使用した理由は、ケンパーリンに C実装 クラシックパーリンノイズがあり、改良されたパーリンノイズ Java実装 が提供されていたためです。ばかげて聞こえるかもしれませんが、古典的なパーリンノイズはプログラムにコピーアンドペーストする方が簡単だったので、それを使用しました。私は常にJava実装を移植することを回避するつもりでしたが、クラシックPerlinは十分に機能するように見えたので、追加する気になりませんでした。

Stefan Gustavsonには、シンプレックスノイズの非常に優れたC実装がいくつかあります

4
bobobobo

私はまだシンプレックスノイズを処理していませんが、いくつかの理由を考えることができます。

  • おそらく、正方形と90度の角度に慣れているためでしょうか?正方形、立方体、...は、三角形、四面体、または超四面体よりもはるかに自然です。
  • Perlinノイズの各レイヤーは、単純なビットマップです。
  • Perlinノイズの出力は、簡単にタイル化できる四角形です。また、テクスチャはタイルの四角形であることがよくあります。
  • 通常、低次元のノイズを使用します。私の経験では、2Dと3Dが最も一般的です。
  • シンプレックスノイズは機械を理解するのが難しい
  • おそらく、グラフィックカードのサンプラーは、パーリンノイズで使用される直交ビットマップの補間を実行できますが、シンプレックスノイズで使用される60度の角度のビットマップの補間は実行できません。 (この点は間違っているかもしれません、私は数年グラフィックスカードを使っていません)
1
CodesInChaos

私は率直に質問に答えます、それはパーリンノイズがあなたの頭を動かすのにとても簡単だからです。一方、シンプレックスノイズは、非常に複雑で毛深い獣です。 Perlinの実装を稼働させることは、シンプレックスよりもはるかに簡単なので、より多くの使用法を得られます。シンプレックスの場合、両方がビジュアルで非常に似ている(特に、ノイズを少し操作した後)場合には役立ちません。

ケネス・パーリン自身がハードウェアベースの実装のために simplex アルゴリズムを設計し、これをより簡単にする設計決定を行いました。この一例は、特許からこの定理に見ることができます。

テーブルメモリの必要性:オリジナルのノイズアルゴリズムは、多数のテーブルルックアップに依存していましたが、これはソフトウェア実装ではかなり合理的ですが、ハードウェア実装ではコストが高く、特にノイズ関数の複数のインスタンスが必要な場合はコストのボトルネックになります。並行して。理想的には、Noiseの実装は、サイズの大きなテーブルの存在に依存するべきではありません。

1
Entalpi

シンプレックスノイズは見た目が悪く、多くの人々は、より高い次元では「ますます悪くなる」と考えています。ほとんどのアプリケーションでパーリンよりもお勧めします。ほとんどのアプリケーションは生のシンプレックスだけを使用するのではなく、そのオクターブはパーリンのオクターブとほぼ同じに見え、オクターブの方が大幅に高速であるためです。

1
Bad Radish