3Dパーリンノイズで生成されたときにフローティングテレインを削除する方法


10

私は現在3Dパーリンノイズを使用して、マーチングキューブと組み合わせてランダ​​ムな地形を生成しています。

私の問題は、地形の適度な高さを得るためにノイズ関数をスケーリングすることにあるようです。1オクターブのみを使用する場合、ノイズに関連するすべてのポイントが明らかに補間され、その結果、かなり滑らかなデータになります。ただし、オーバーハング/キャビティ/ギザギザの地形を取得するには、さまざまな振幅を持つ複数のオクターブを使用するか、結果の値をマップに必要な「最大」の高さにスケーリングする必要があります。

何かが足りないかもしれませんが、3Dパーリンノイズのあるマーチングキューブを使用することで、定期的にテレインのフローティングビットを取得します。

これをどのように修正できるか、または説明しているような結果を得るために使用できる他のノイズ関数があるかどうかについてのアイデアはありますか?丘、谷、山、湖などが欲しいのですが。マップの他の部分から分離された浮動ビットは必要ありません。これは、Minecraftが生成時に時折空に浮かぶだけの地形がある場合と同じ問題であると思います。

助けてくれてありがとう、神話

回答:


9

おそらく、浮動地形を完全に取り除く唯一の方法は、接続性をテストすることです。マップのサイズによっては、オプションになる場合があります。あなたの世界の最底部のように、基点を選択することでそれを行うことができます。次に、すべてのボクセルが次のいずれかであることを確認します。

  1. ベースに接続されています。
  2. ベースに接続されているボクセルに接続されています。

おそらく、接続された既知の点(世界の底など)から始めて、接続されたボクセルの最初の横走査を行うと、かなりうまくいきます。移動中にボクセルに接続済みのフラグを付けていることを確認してください。これはチャンクごとに実行できます。

さらに、フローティングテレインを完全に削除するわけではありませんが、最小化するためのより安価な方法があります。

  • グラデーションバイアスグラデーションでソリッドボクセルの配置にバイアスをかけることができます。グラディエント関数は、「地上レベル」を超えると、やや急激に落ちます。この記事では、グラデーションの使用について説明し、その他のヒントをいくつか紹介します。

  • 高さマップノイズ:代わりに高さマップとしてノイズを生成できます。これはオーバーハングと洞窟を削除しますが、追加の減算ノイズレイヤーを使用してそれらをシミュレートできます。

  • ノイズの少ないノイズ:地形ノイズのオクターブを減らし、減算ノイズを生成してオーバーハングや洞窟を作成します。


テレインは、そこからオーバーハングしている場合に、隣接するチャンクを介してのみ接続される可能性があります。
Loren Pechtel 2013

@ローレン:でも、それで問題ありません。エンジンがチャンクを完全なインデックスでアドレス指定できる限り、問題なく動作します。
Phil

@LorenPechtelチャンクごとに行うことができると思いますが、チャンクの端にいるときは隣接するチャンクをチェックする必要があります。これは、新しい地形を生成し、隣接するチャンクを生成していない場合に問題になる可能性があります。潜在的な浮動地形があるこの状況になったら、隣接するチャンクを生成するか、ノイズアルゴリズムを使用して、「岩盤」または現在のチャンクへの既知の接続が見つかるまでボクセルを解析します。
MichaelHouse

0

答えるのは遅すぎるかもしれませんが、私はこのボクセル地形生成のものから始めて、Perlin Noiseを使用していたので、これらの浮動部分なしで地形を作成する方法を見つけました。これが役立つと思います。したがって、テレインを作成するには、最初にハイトマップを生成してから、そのハイトマップからピクセルを読み取ります。興味深い部分が来ました。そのハイトマップの各ピクセルの「明るさ」(実際はグレースケール)値を読み取り、マップのその特定の部分の高さを取得します。次に、地形を作成するために、このハイトマップは私の地形を上から見た場合、その高さマップ上のピクセル(私の地形 "maxHeight"にマップされた後)のグレースケール値が30であるとしましょう。つまり、地形の特定のポイントでは、y軸に30ボクセルのみを生成します。これにより、フローティングパーツのない地形が得られます。洞窟などが必要な場合は、オリジナル(表面の下)に別のノイズを適用して、洞窟を作成できます。これがうまくいくことを願っています。


1
これは上記の私の回答の2番目の箇条書きに似ていると思いますか?
MichaelHouse
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.