問題タブ [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.

0 投票する
3 に答える
1172 参照

c# - Libnoise XNA 変換パーリンが歪みを引き起こす

XNAでノイズを生成するためのライブラリを見てきました。Libnoise は、最も論理的な選択のように思えました。ライブラリは非常に使いやすく、素晴らしい結果をもたらします。ただし、追加のセクションを生成するのに問題があります。C++ のドキュメントには、このための非常に優れた機能があります。

XNA バージョンはこのようには機能せず、代わりに変換関数を使用して、生成された高さマップを "移動" します。

Translate.cs

使用法

ここで問題が発生します。ハイトマップは変換されますが、歪みも生じます。パーリンは変更されていないため、これは奇妙に思えます。Z を変更すると高さマップが変更されると想像できましたが、変更しているのは X 軸だけです。

ここに画像の説明を入力

これについて何か考えはありますか?

0 投票する
2 に答える
753 参照

2d - パーリン ノイズ アシスタンス

わかりましたので、これを見つけまし記事と私はその一部に混乱しています。誰かがこのプロセスをもっと詳しく説明してくれたら、とても感謝しています。なぜなら、私はこれを 2 か月間コード化しようとしてきましたが、まだ正しいバージョンが機能していないからです。私は記事の持続性部分について特に混乱しています。著者がそれについて説明しようとしていることをほとんど理解していないためです。記事の最後で、これの 2D 擬似コード実装について話していますが、PerlinNoise_2D 関数は作成しません。ランダム値が平滑化され補間された後、それは整数値ですが、関数は浮動小数点値を取るので、私には意味がありますか? 持続部分の下にはオ​​クターブ部分があります。彼は平滑化された関数を一緒に「追加」してPerlin関数を取得するため、よくわかりません。あなたは明らかに値を一緒に追加しないので、彼は「追加する」とはどういう意味ですか. 誰かが私にこれらの部分を説明できるなら、私はとても幸せです. ありがとう。

これが私のコードです:

また、スムージング部分は含めませんでした。これは、チャンク間をスムージングするための約 400 行のコードだったからです。

0 投票する
1 に答える
172 参照

random - パーリン ノイズ: 少しの支援が必要です

パーリン ノイズに関するこの記事を読んで、いくつか問題を抱えているように見えるので、誰かが答えを持っているかどうかいくつか質問があります。下部にある疑似コードの 2D セクションでは、彼がランダムに数値を生成することを示していますが、1D コードのパラメーターとして 1 つの変数の代わりに、'x' と 'y' を使用しています。これは 2 次元ノイズで必要ですか、それとも必要ありませんか? また、彼の PerlinNoise_2D 関数は、1 次元の例のように 1 つではなく、2 つの float パラメーターを取ります。これらの float 値は何であるべきで、どこから来たのですか? 誰かが私の質問に対する答えを知っていれば、助けていただければ幸いです。ありがとう。

編集:より簡単な質問ですが、PerlinNoise_2D 関数のパラメーターとして使用される 2 つの float 値はどこで取得できますか?

0 投票する
0 に答える
855 参照

java - Java Perlin ノイズ実装の問題

ちょっとstackoverflowコミュニティ!過去 2 週間、パーリン ノイズについて読んでいて、最も基本的な方法で自分で実装してみました。それでも、私のプログラムは動作しません。常にほぼ同じような結果を出力し、持続性は何も変わらないようです。これが私のコードです:

この記事の疑似コードとまったく同じなので、なぜ機能しないのかわかりません。これを理解するのを手伝ってくれる人はいますか?ありがとう。

編集:わかりました、誰かがこれを行うために必要なプロセスを説明してください。私はこれを理解しようとして夢中になっています。私は過去2週間それを理解しようとしてきましたが、誰も助けてくれません. これを行う方法を知っている場合は、私に説明してください。よろしくお願いします。ありがとう。

0 投票する
2 に答える
4147 参照

c# - C#のフラクタルパーリンノイズ関数からの一様分布

私のパーリンノイズ関数(0.75の永続性で6オクターブの3Dシンプレックスを合計する)は、doublesの2D配列配列を生成します。

これらの数値はそれぞれ[-1、1]に正規化され、平均は0になります。例外を回避するためにクランプします。これは浮動小数点の精度の問題によるものと思いますが、スケーリング係数は十分に適切であると確信しています。理想的なケースでは、ノイズ出力をまさにこの近傍に制限します。

とにかく、それがすべての詳細です。重要なのは、ここに256x256のノイズの配列があります。

ここに画像の説明を入力してください

通常の近似のヒストグラムは次のようになります。

ここに画像の説明を入力してください

Matlablillietestは、Lillieforsテストを適用して、一連の数値が正規分布に由来するかどうかを判断する関数です。私の結果は繰り返し1でした。これは、これらの数値が正規分布していないことを意味します。

f(x)ノイズ関数の値のリストに適用すると、結果が均一に分布しているように見える関数が必要です。

この関数をC#で実装可能にし、実行に数分もかからないようにしたいと思います。

繰り返しになりますが、数値がどこから来ているかは問題ではありません(問題は、ある分布を別の分布に変換すること、具体的には通常のような分布を均一に変換することです)。それにもかかわらず、私のノイズ関数の実装はこれこれに基づいています。上記の値の配列はここにあります。

0 投票する
1 に答える
1493 参照

java - 異なる入力に対して同じ結果を返すパーリン ノイズ関数

作成中のゲームのデータを生成するためにパーリン ノイズ関数を使用していますが、何らかの理由で、異なる入力に対してまったく同じ結果が返され続けます。FBM 関数でこれをデバッグしようとして 4 時間ほど費やしましたが、理解できなかったので、Ken Perlin の改善されたノイズ関数を試してみましたが、同じことが起こりました。

これがなぜなのか誰か知っていますか?それを修正する良い方法は何ですか?私ができた唯一のことは、x 座標と y 座標に .6473 のような 10 進数の値を追加することだけでした。

ここにいくつかのテストコードがあります。ノイズ値で満たされた 2 つの異なる 2D 配列を作成しようとしています。x と y の入力は、私のゲームの座標です。それらの後に ' * * 'がある行では、これらの値を増やさないと、両方の配列がすべてゼロで埋められます。この例では、座標 (0.0, -768.0) と (-1024.0, -768.0) はまったく同じノイズ値を返します。私のゲームでは、9 つ​​の異なる座標が同じ値を返します。

このテストに使用しているパーリン ノイズ関数はこちら

0 投票する
1 に答える
258 参照

c++ - 配列へのポインターを配列自体に変換する

C++ で柔軟な菱形の地形ジェネレーターを作成しています。私の地形の高さの値のタイルのグリッドは、int の巨大な配列として定義されています。これで、このグリッドを別の関数として操作するダイヤモンド スクエア アルゴリズム全体ができましたstdroutine。ユーザーがそのサイズを定義できるようにする必要があるため、グリッドをグローバル変数として宣言することはできません (理由の範囲内で、サイズ チェックはまだ実装されていません)。あまり手間をかけずに連続して複数回呼び出すことができるようにしたいので、 の内容を単に貼り付けたくはありません (最終的には、一部のプリセット ルーチンを実行するために必要になりますstdroutine) 。mainそのため、配列へのポインターを指定しようとしましstdroutineた。これを指定すると、配列が実際にどこにあるかを把握できることを期待しています。stdroutine実際に呼び出す別の関数 、meanこれもグリッドが機能する必要があります。これが私のコードです(ひどく間違っていますが、まあ、よくわかりません):

main.cpp:

ダイヤモンド-square.h:

(mt.h には、メルセンヌ ツイスター PRNG をそれぞれ初期化して実行するmt_initとの 2 つのルーチンが含まれているだけです。)mt_random

グリッドへのポインターを、それらを呼び出すすべての関数とうまく連携させるにはどうすればよいですか? 現時点では、Xcode 4.3 から 4 つのエラー、diamond-square.h に 3 つ、「'mean' の呼び出しに一致する関数がありません」、main.cpp に 1 つ、「'stdroutine' の呼び出しに一致する関数がありません」というエラーが発生します。 .

編集:うーん、思ったよりも簡単です。まだ問題がありますが、コメントを参照してください。関連するコード (main.cpp は同じですが、への呼び出しで grid の前のアンパサンドを省略しましたstdroutine):

0 投票する
2 に答える
2704 参照

java - 2D 地形生成のための Java Perlin ノイズ

更新: 質問の正式なリスト:

  1. 2D ノイズ実装の float 値 (入力パラメーターと出力の両方) は何を表していますか? -部分的に回答しました。入力は座標です。アウトプットはどうですか?また、整数を座標の浮動小数点数として使用できますか? 1.0、122.0など?
  2. 2D ノイズ ジェネレーターにシードを実装する良い方法は何ですか? 3rd パラメータをシードとして使用する 3D ノイズ ジェネレータにする必要がありますか? それは、各シードが固有の 2D ノイズを生成できることを意味しますか?
  3. 2D マップに沿って、ビットマップの生成も同じように見えます。出力からビットマップを生成するにはどうすればよいですか? 浮いていると考えられます。

私の質問は、カット アンド ペースト パーリン ノイズ 2D 実装の float 値 (入力パラメーターと出力の両方) は何を表しているのですか? それらからビットマップを生成するにはどうすればよいですか? 何らかのデータ型の 2 次元配列を取得できれば、それを使用して地形をシミュレートする方法を理解できるはずです。

そして、それらの値を確実にシードできるのであれば、カット アンド ペーストの実装を使用します。それは質問の他の部分です。ここで見つけた未回答のものです。- ノイズ ジェネレーターにシードを実装する良い方法は何ですか?

わかりました、この質問が何度も聞かれていることを理解していますので、私が調査して発見したことを説明させてください.

まず、こちらのサイトを見つけまし。これは、私に説明してくれた勝者のようです。しかし、その後、別の質問を思いつきましたが、ここでは完全には答えられませんでした。

それから私は自分の手を汚して、私が選んだ言語である Java でコーディングしようとしました。これを見つけたので、答えとして与えられたハッシュ関数をノイズ関数として試してみました。そこでシードを使用できるからです。その後、チュートリアルの残りのプロセスに従うためにフロートを返さないという問題に遭遇しました。ふりだしに戻る。その過程で、パーリン ノイズに関する質問があるサイトをさらに多く見つけました。

ここで、実装が機能していないため、まだ考えもしていなかった未回答の質問を見つけました。リンクはもう見つかりませんが、コピーして貼り付けた実装があったとしても、関数に入力する浮動小数点数は何ですか?マップ上の x と y である INTEGERS を渡す必要があると言われました。カット アンド ペーストの実装からも float 出力を取得します。それらはどういう意味ですか?それらの2Dはどうですか?物事を整数のままにしておくことができれば、それは私の脳では理にかなっていますが、ある意味では、それらを整数のままにしておくことは、連続曲線の値を補間および平滑化するのに妥当ではないことがわかります。

0 投票する
2 に答える
1430 参照

random - パーリン ノイズ アルゴリズムが乱数にルックアップ テーブルを使用する理由

私は構築したいライブラリのノイズ アルゴリズムを研究しており、パーリン ノイズ (より正確にはシンプレックス ノイズ、任意の次元、または少なくとも 6 までの次元で作業したい) から始めました。Simplex noise demystifiedを読んで助けられましたが、最後に実装を調べたところ、 という名前の大きなルックアップ テーブルがありましpermた。

コード例では、一連のグラデーションにインデックスを生成するために使用されているようですが、その方法は奇妙に思えます。このテーブルは、1) 決定論と 2) 速度向上を提供するためだけにあると思います。

私の質問は、permルックアップ テーブルには何らかの補助的な意味や目的があるのでしょうか、それとも上記の理由でそこにあるのでしょうか? または別の方法で、パフォーマンス以外に、疑似乱数ジェネレーターが使用されていない特定の理由がありますか?

0 投票する
1 に答える
6525 参照

c# - パーリン ノイズを使用して C# で地形を生成する

私は C# と XNA で文明ゲームに取り組んでいます。私はタイルを生成するために、ループが取り込まれた 2 次元の整数配列を使用します。大量の調査を行いましたが、地形のような地球を生成する方法を見つけることができませんでした。誰かがこれを行う方法を説明できますか、少なくともそれを実行できるコードを教えてください。ありがとうございました。