タグ付けされた質問 「perlin-noise」

10
タイル化可能なパーリンノイズはどのように生成しますか?
関連する: 単純なノイズ生成 パーリンノイズについて タイル化可能なパーリンノイズを生成したいと思います。私は次のようなポール・バークの PerlinNoise*()機能で働いています: // alpha is the "division factor" (how much to damp subsequent octaves with (usually 2)) // beta is the factor that multiplies your "jump" into the noise (usually 2) // n is the number of "octaves" to add in double PerlinNoise2D(double x,double y,double alpha,double beta,int …

3
ワームスタイルの地形を生成するにはどうすればよいですか?
私はワームスタイルのゲームに取り組んでおり、いくつかの地形を手続き的に生成したいと考えています。以前はパーリンノイズを使用して多くの地形生成を行ってきましたが、これがこのゲームで使用し始めたものです。唯一の問題は、単純すぎて退屈で、丘ができてしまうことですが、私が望む複雑さではありません。洞窟やぶら下がった山などの機能が欲しいのですが、浮島などは気にしません。次のようになりますが、もっとクレイジーでも構いません 最初に古典的なパーリンノイズを使用して地形を生成し、次にパーツを削除して洞窟を作成するかどうかを考えましたが、それらのパーツの削除をガイドするのに苦労しています。そのような地形を生成する代替手段はありますか?

4
単純なノイズ生成
私は次のようなノイズを生成しようとしています: (Perlin Noiseを理解するための画像提供) 基本的に、小さな「リップル」がたくさんあるノイズを探しています。以下は望ましくありません: これを行う簡単な方法はありますか?私は今、perlinとsimplexを1週間見てきましたが、JavaScriptで動作させることができないようです。スロー。 私が投稿した3つの画像は、おそらく同じアルゴリズムで異なるスケールで実現できることを理解していますが、そのアルゴリズムは必要ありません。最初の画像のようなものを理想的に実現するには、非常に単純なアルゴリズムが必要です。何らかのぼかしが仕事をするかもしれませんが、結果を得ることができません。 私はこれをJavaScriptで開発していますが、どんな種類のコードでも、簡単で詳細な説明でも機能します。

4
アイランドマップマスクを作成する簡単な方法
私は、C#を使用して島のマップのマスクを生成するための素敵で簡単な方法を探しています。 基本的には、地形が水に囲まれていないパーリンノイズで生成されたランダムハイトマップを使用しています。 次のステップは、マスクを生成して、角と境界がただの水であることを確認することです。 その後、perlinノイズ画像からマスクを差し引くだけで島を取得できます。 コントラストをいじって 勾配曲線を使用すると、希望どおりに島の高さマップを取得できます。 (これらはもちろん単なる例です) ご覧のとおり、島の「エッジ」は切り取られていますが、カラー値が白すぎない場合は大きな問題ではありません。グレースケールを4つのレイヤー(水、砂、草、岩)。 私の質問は、2番目の画像のように見栄えの良いマスクをどのように生成できますか? 更新 私はこの手法を見つけましたが、それは私にとって良い出発点のようですが、目的の出力を得るためにどの程度正確に実装できるかわかりません。 http://mrl.nyu.edu/~perlin/experiments/puff/ 更新2 これが私の最終的な解決策です。 makeMask()このように正規化ループ内に関数を実装しました。 //normalisation for( int i = 0; i < width; i++ ) { for( int j = 0; j < height; j++ ) { perlinNoise[ i ][ j ] /= totalAmplitude; perlinNoise[ i ][ j ] …

3
ゲーム内でランダムに湖や川を生成するにはどうすればよいですか?
2Dブロックビルディングゲームがあり、ランダムに生成された湖や川を作ろうとしています。Perlinノイズアルゴリズムを調べましたが、ランダムで素晴らしい結果を生成することができませんでした。 私はpythonノイズライブラリを使用しようとしましたが、マップをあまりランダムに作成しませんでした。 よりランダムにするために、そのライブラリに欠けているシード関数がありますか?よりランダムにしたい場合、どの変数を変更しますか?可能であれば、数学とPythonの用語を減らして、技術的な答えを減らしてください。 マップは2Dタイルマップです。他のアルゴリズムの非ランダム性の例を次に示します。次のコードは3回連続で出力されました。私は次のようなものでオクターブと周波数をランダム化していました:freq = 16.0 * random.randint(1, 500000) * 0.000001 + 0.5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 …

2
プロシージャルテクスチャ生成の高速化
最近、手続き的に生成された太陽系で行われるゲームに取り組み始めました。少し習熟した後(Scala、OpenGL 2 ES、Libgdxのいずれとも動作していなかった)、基本的な技術デモを行って、プロシージャルにテクスチャリングされた単一の惑星を回ります。 私が直面している問題は、テクスチャ生成のパフォーマンスです。私がやっていることの簡単な概要:惑星は球体に変形された立方体です。各側にanxn(たとえば256 x 256)テクスチャが適用され、フラグメントシェーダーに送信される1つの8n xnテクスチャにバンドルされます。最後の2つのスペースは使用されず、幅が2の累乗であることを確認するためにのみ存在します。テクスチャは現在、ペーパー「Simplex」にリンクされた2012年版のシンプレックスノイズアルゴリズムの更新を使用してCPU上で生成されていますノイズを分かりやすくする。アルゴリズムのテストに使用しているシーンには、惑星と背景の2つの球体が含まれています。どちらも6オクターブの3Dシンプレックスノイズで構成されるグレースケールテクスチャを使用するため、たとえばテクスチャサイズとして128x128を選択した場合、ノイズ関数の呼び出しは128 x 128 x 6 x 2 x 6 =約120万回になります。 地球に最も近いのは、スクリーンショットに表示されているものです。ゲームの目標解像度は1280x720であるため、512x512のテクスチャを使用することを好みます。もちろん、実際のテクスチャは基本的なノイズよりも複雑になります(日光に基づいたフラグメントシェーダとスペキュラマスクにブレンドされた昼と夜のテクスチャがあります。大陸のノイズ、地形の色の変化が必要です。 、雲、街の明かりなど)そして、我々は512 x 512 x 6 x 3 x 15 = 7000万のノイズが惑星だけを呼び出すようなものを見ている。最後のゲームでは、惑星間を移動するときにアクティビティが発生するため、移動中にバックグラウンドでテクスチャを計算できるため、5秒または10秒、場合によっては20秒の待機が許容されます。 テストシーンに戻ると、PCのパフォーマンスはそれほど悪くはありませんが、最終結果が約60倍悪化することを考えると、依然として遅すぎます。 128x128 : 0.1s 256x256 : 0.4s 512x512 : 1.7s これは、パフォーマンスに重要なすべてのコードをJavaに移動した後です。Scalaでそうするのはずっと悪かったからです。ただし、携帯電話(Samsung Galaxy S3)でこれを実行すると、より問題のある結果が生成されます。 128x128 : 2s 256x256 : 7s 512x512 : 29s …

1
滑らかなボクセル地形
個人的なプロジェクトとして、私はCastle Storyの滑らかな地形のような地形を作成する地形ジェネレーターを作成しようとしています。 あなたがそれを見たことがないなら、ここに: ご覧のとおり、ブロックと「スムーズ」ブロックの組み合わせです。 この外観をエミュレートするために私が試みたのは、各サーフェスブロックにミニハイトマップを与えることです。これは通常は機能しますが、いくつかの問題があり、次のような地形が生じます。 問題は、各ブロックが1x1x1であるが、特定の場所の高さがマイナスまたは> 1である場合があることです。その場合、クリップして、高さを0または1に設定します。 私が意味することをよりよく説明するために、図を示します。 高さを生成するために、基本的に次のことを行います。 genColumn(int x, int z) { int highestBlockY = (int)noise2d(x, z); bool is_surface = true; for(int y = max_height - 1; y >= 0; y--) { Block b; if(is_surface) { b = Block.Grass; b.HasHeightMap = true; // generate heightmap for(int ix = …

2
Perlinワームによる洞窟生成
私は現在、3Dシンプレックスノイズでボクセル地形のようなMinecraftを生成しようとしています。また、洞窟を実装したいと考えています。 このスレッドでPerlin Wormsのメソッドを見つけました。これは本当に素晴らしい結果を生成します。ただし、チャンクごとにそれを生成する方法についての手がかりはありません。これは可能ですか、それともチャンクごとに洞窟のような類似のワームを生成する代替策はありますか? 編集:これは私が解決する方法がわからない問題です。 Edit2:これは、2Dリッジマルチフラクタルノイズとシンプレックスノイズハイトマップを組み合わせた結果です。まだ少し調整が必要ですが、これはほとんど私が望んでいた結果です。Byte56に感謝します。

2
3Dパーリンノイズで生成されたときにフローティングテレインを削除する方法
私は現在3Dパーリンノイズを使用して、マーチングキューブと組み合わせてランダ​​ムな地形を生成しています。 私の問題は、地形の適度な高さを得るためにノイズ関数をスケーリングすることにあるようです。1オクターブのみを使用する場合、ノイズに関連するすべてのポイントが明らかに補間され、その結果、かなり滑らかなデータになります。ただし、オーバーハング/キャビティ/ギザギザの地形を取得するには、さまざまな振幅を持つ複数のオクターブを使用するか、結果の値をマップに必要な「最大」の高さにスケーリングする必要があります。 何かが足りないかもしれませんが、3Dパーリンノイズのあるマーチングキューブを使用することで、定期的にテレインのフローティングビットを取得します。 これをどのように修正できるか、または説明しているような結果を得るために使用できる他のノイズ関数があるかどうかについてのアイデアはありますか?丘、谷、山、湖などが欲しいのですが。マップの他の部分から分離された浮動ビットは必要ありません。これは、Minecraftが生成時に時折空に浮かぶだけの地形がある場合と同じ問題であると思います。 助けてくれてありがとう、神話

3
地平線を作成するにはどうすればよいですか?
レイトレーサーに空を追加しました。これは、レイがオブジェクトを完全に見落としたときにサンプリングされます。 ここで私がしていることは、レイがシーン内のすべてを完全に見逃した場合、(ray.direction.x、ray.direction.y、ray.direction.z)でパーリンノイズ関数を返します。つまり、「サンプリング原点の周りの球」 しかし、それは「間違っているように見えます」(空があなたに面しているように見えるため)。 空を改善して、地球の地平線のように見せるにはどうすればよいですか? または、これは多かれ少なかれそれがどのように見えるべきか、そして私は単に床により多くのジオメトリを追加する必要がありますか?

2
C#パーリンノイズ-「エンドレス」テレインチャンクの生成?
私は現在、C#の学習と楽しみの両方のために、C#で小さなサイドスクローラーを作成しています。現在、私は世界を生成する単純な乱数ジェネレーターを持っていますが、それはそれほど優れているわけではありません。そのため、いくつかの調査により、Perlin Noise生成がかなり役立つことを発見しました。問題は、いくつかのチャンクで構成された「無限の」風景が欲しいということです。 基本的に私の質問/懸念は: 例としてminecraft(3次元を無視)を使用して、Notchはどのように各チャンクを互いに完全に接続するのですか?トンネル、洞窟、鉱脈、山、平坦な土地、バイオームなどは、各チャンクが個別に生成される場合でも、場合によっては後日生成される場合でも、すべて相互に接続されています。これは私にとって重要です。プレイヤーが右に歩くことができるようにして、彼らが歩いているときに、地下のトンネルや洞窟システムなど、以前の風景に接続するより多くの風景を生成します。 #1から離れると、各チャンクが正方形であり、世界の高さが10正方形で、幅が無限の正方形であるという仮定の下で、これはどのように達成されますか?つまり、各「チャンク」は128x128タイルであり、世界は合計で1,280タイルです。(これは、選択した場合に無限に深いマップを作成できるようにするためです。また、チャンク/スクエアの4辺すべてを接続して、前のスクエア/チャンクが行っていた処理を続行できる必要があることを示すためです)。
7 xna  c#  2d  perlin-noise 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.