2017-04-05 10 views
0

現実感を地形ジェネレータに追加する最善の方法を見つけることができません。この時点で私は完璧に機能する洪水の詰め物を持っていますが、あらゆる種類のリアリズムを追加したい場合は、高さ変数を追加する必要があります。私は、次のメソッドは、ハイトマップを作成しようと見ている:今、私は私の塗りつぶしてプレートを生成しています現実的な高さマップによる地形の生成

しかし、そこからどこに行くのかは分かりません。

私は大陸の中で生態系を現実的に見えるようにするために、雑音関数を使用するかどうかはわかりません(山のみの大陸は非現実的です)。ダイヤモンドの四角形のアルゴリズムは、おそらくサイズ調整に柔軟性を持たせたいので、私のニーズにはうまくいかないでしょう。

正方形のタイルを使用して現実感を与えたり、リソースを大量に消費したり、コードを保持したりする場合、高さマップを生成するための最良の選択肢は何ですか?ここ

は世代の画像であり、生成コードはGitHubのプロジェクトである:

https://github.com/Hunterb9101/TileWorkspace/blob/59fe1f28f019d7128c970772d1ef6bd30d63072c/Generation.png

答えて

0

tldr:私はバイオームにタックいくつかとパーリンノイズの発生を使用します。

このarticle/tutorialは、コードスニペットとその実装方法を引き継ぎます。 ベストアルゴリズムをあなたのタスクに提案することは、あなたのスキルと最終結果の目標に完全に依存します。ほとんどの地形生成と同様に

しかし簡単なパーリンノイズの説明と心の中で現実的な目標とそれを使用して...

、ノイズ関数はあなたの友達です - パーリンおよび/または特にシンプレックスノイズ。私はいくつかの 惑星地形生成アルゴリズムを実装しましたが、それらは2次元ではありますが、 高さ/「テクスチャ」マップは球に投影することができます。 私は16進形式への変換は問題ではないと仮定します のどちらかです。

私の技術では、複数のノイズ層が作成されています。温度 および湿度。赤道をより暑く、極寒にするために、温度は の順に緯度座標と融合されていますが、ノイズ は単純な勾配ではありません。最終的な地形のタイプは、 "暑くて湿気がない場合は砂漠を選ぶ"のようなルールで選択された です。ノイズ関数は、一定の平均を持っている傾向があるようあなただけの水位 高さを調整することができ、水の割合については https://github.com/tapio/infiniverse/blob/master/js/universe/planet-aerial.js

:あなた は、ここでは、この私のJavaScript実装を見ることができます。もう1つの オプションは、指数フィルタを適用することです( 雲を生成する場合にも便利です、私の実装はこちらを参照してください)。

心に入って来た球状地形を生成する別の方法は、( をテストしていない)、その時点で地上高として得られた値を使用して3Dノイズを使用して、球体の表面からそれをサンプリング、 することです。 それから惑星上の水の量と緯度座標 の重量に従う重量。

私は三次元の惑星 地形生成の1実用化へのリンクを終了します:あなたはいくつかの種類のノイズを使用する必要があるとしている現実的な地形の任意のランダムなスタイルを生成するには http://libnoise.sourceforge.net/tutorials/tutorial8.html

。過去のプロジェクトでは、私自身がダイヤモンドスクエアアルゴリズムを使用しました。しかし、それは単純に高さマップを生成することでした。

もう少し明るい読書については、現実的な地形のテクニックについてはthisの記事をチェックします。

+0

こんにちは、お越しいただき、ありがとうございます!私はperlinノイズ関数を作成しようとしています(シンプレックスより実装が簡単だったため)が、私はいくつかの問題を抱えています。私は別の質問のためにそれを保存しますが、助けてくれてありがとう! – Nerd9101

関連する問題