問題タブ [perlin-noise]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
opengl - C++ OpenGL キューブ パーリン ノイズを球体にマップする
私は現在、主に楽しみのためにいくつかのプラネットジェネレーションに取り組んでおり、いくつかのキックアスプラネットで終わることを望んでいます. 正規化によって球にマップされたキューブを使用しています。
この写真では、地形はまだ適切にテクスチャリングされていません。これは、Heightmap からの単なるレンダリングです。しかし、これは私の問題ではありません。立方体から球を作成すると、6 つの面が球の形に曲げられたままになります。したがって、地形の周りに球状の高さマップをラップするために使用できる緯度と経度がありません。現在、キューブ マッピングを使用しています。ただし、ご覧のとおり、これによりいくつかの問題が発生しました。
—私の問題が明らかになる場所。問題は、球体がまだ立方体のトポロジーを持っているという事実によるものです。顔ごとに高さマップを生成する必要があります。現在、ハイトマップに Libnoise を使用していますが、ここから大きな問題が発生します。球体の高さマップとしてエクスポートするか (球体があれば便利です)、6 つの面すべてにマップする必要がある平面の高さマップを使用できます。ただし、マッピングの仕組みによります。3 つの面を中央に並べてシームレスにすることはできますが、Lib ノイズが境界を使用して座標のグリッドを作成するため、最後のハイトマップは最初のハイトマップに結合しません。
球はこのように作成されます—
この背後にある理由は、ここで見ることができます。
ただし、球体の構造により、後で Quad-Ttee の形で lod を実装しやすくなります。LibNoise を使用してキューブ マップの高さマップを生成できる方法はありますか? または、球が球状の高さマップを使用できるようにするためにできることはありますか?
Sphere Maps を使用してレンダリングする方法を見つけましたが、クアッド ツリーを使用するとうまくいきません。ただし、次のような素晴らしい結果が得られます。
そのため、ノイズをキューブ マップにタイル表示する方法を知る必要があります。Libnoise または頂点シェーダーのいずれかで。
python - 座標に Python の Noise 1.1.1 をどのように使用しますか?
私は周りを見回しましたが、ほとんどがテクスチャに使用されているようで、Perlin/Simplex Noise を 2 次元座標 x と y のセットに実装する方法を見つけようとして立ち往生していることに気付きました。
私がやろうとしているのは、2 つのランダムな座標 x & y を入力してから、変更された x & y を返すことだけですか、それとも不可能ですか?
pythonsノイズを使用して座標を作成できるようにしていますが、パーリン ノイズを理解するのは非常に複雑であり、その仕組みを完全に理解することはできません。
r - R / パーリン ノイズでの現実的なシミュレートされた標高データ
Rでシミュレーションラスター標高データセット、つまり現実的な標高値の2次元マトリックスを作成する方法を知っている人はいますか? Rjitter
は適切ではないようです。Java/Processing では、noise()
関数はPerlin ノイズアルゴリズムを使用してこれを実現します。
しかし、R の文献に Perlin ノイズへの言及は見つかりませんでした。前もって感謝します。
java - 加重パーリン ノイズを使用したマップ ジェネレーター
任意の数のパーリン ノイズ マップとそれぞれの重みを取得しました。すべての重みの合計は 1 ですが、違いはありません。
重みに関して最高値でそのノイズを取得したい。
私の最初のアプローチは、各パーリン ノイズから数値を取得し、これらをパーセンテージに変換し (そのためのループアップ テーブルがあります)、重みを掛けて、最も高い値を選択することでした。しかし、このアプローチには大きな欠点があります。小さな重みを識別し、大きな重みを優先するため、分布が台無しになります。20% に 0.2 の重みが表示されるようにします。
これをマップ ジェネレーターでタイル タイプを選択するために使用したいと考えています。複数のパーリン ノイズを使用します。これは、多くの異なるタイル タイプを使用して互いに境界線を引きたいため、グラデーションを使用できないためです。
この欠陥を修正する方法、またはタイルベースのマップを生成する別の方法を知っている人はいますか?
編集:その間、私はほぼ受け入れられる解決策を見つけました:
唯一の欠点は不正確であることです。重みが 0f の場合でも、約 6% の時間でノイズが返されます。
haskell - Haskell でのパーリン ノイズの最適化
(このプログラムの依存関係:vector --any
およびJuicyPixels >= 2
。コードはGistとして入手できます。)
Ken Perlin の改善されたノイズを Haskellに移植しようとしまし たが、私の方法が正しいかどうかは完全にはわかりません。主要部分は、高次元と低次元にうまく一般化する必要があるものですが、それは後で説明します。
もちろん、これには関数で言及されているいくつかの関数が伴いperlin3
ますが、それらが可能な限り効率的であることを願っています。
順列グループについては、Perlin が彼の Web サイトで使用したものをコピーしました。
そして、これらすべてが JuicyPixels と結びついています:
私の問題は、それが私perlin3
には非常に遅いように見えることです。私pixelRenderer
がそれをプロファイリングすると、同様に多くの時間がかかっていますが、今は無視します。最適化の仕方がわかりませんperlin3
。強打パターンで GHC をほのめかそうとしましたが、これにより実行時間が半分になりました。明示的な特殊化とインライン化は、ほとんど役に立ちませんghc -O
。これはperlin3
遅いはずですか?
更新: この質問の以前のバージョンでは、コードのバグについて言及されていました。この問題は解決されました。私の古いバージョンのactuallyProperFraction
はバグが多かったことがわかりました。浮動小数点数の整数部分を に暗黙的に丸め、それを浮動小数点数からWord8
減算して小数部分を取得していました。とWord8
の間の値しかとれないため、負の数を含むその範囲外の数値に対しては正しく機能しません。0
255
c# - 異種タイルとパーリン ノイズ
異種タイルでタイル ゲームを実装しようとしています。大小さまざまなタイル。すべてのタイルサイズは、簡単にするために (メートル単位で) サイズが丸められています。もちろん、すべてをタイル化する必要があるという要件で、疑似乱数の順序でタイルに適合するアルゴリズムを探しています。
以下は私が書いた数行ですが、必要に応じて機能しません。どういうわけか、タイル間の間隔が考慮されていません。
最初に、外出先で作成されるパーリン ノイズのマップを生成します。タイルマップに辞書を使用しています。
タイルのオブジェクト メーター変数は、正方形のタイルの幅と奥行き (メートル単位) です。tiles 配列の最初のタイルは、スキップを指定するための空のタイルです。
編集: Unity にスケーリングの問題があることがわかりました。ゲーム内の平面にスケール 1 を適用すると、サイズが 10 になります。誰かがその説明を提供できますか?
directx - シンプレックス ノイズ シェーダ?
シンプレックス ノイズについていくつか質問があります。Directx でシンプレックス ノイズを使用して地形を生成していますが、現在はクラスなどを使用して実行しています。多分これもテクスチャに使うと思うので、シェーダー実装に変更する必要はありますか?もしそうなら、これは簡単にできますか?
また、テクスチャには 3D ノイズと 2D ノイズのどちらを使用するのが良いですか?