3

プロシージャルに生成された地形が無限にあるゲームがあります。高さに 1/f ノイズを使用しています (これはパーリン ノイズだと思いますか?)。とにかく見栄えはいいのですが、平らな部分がないのであまりプレイしにくいです。私はまだ高さの大きな変化が欲しいので、振幅を減らすだけではうまくいきません。広い範囲の高さを維持しながら平坦な領域を促進するために高さマップに適用できるフィルターを知っている人はいますか?

C# で書かれています

編集:私が望むのは、急な勾配がより急になり、平らな勾配がより平らになることであることに気付きました。地形は現実的である必要はありません。FPS にとって「楽しい」ものであればよいのです。

4

7 に答える 7

2

それが問題であると思われる場合は、地形のギザギザを取り除くためにスムージング機能を使用する必要があると思います。

私はこのページをざっと見ただけですが、まともなガイドかもしれません: http://www.float4x4.net/index.php/2010/06/generating-realistic-and-playable-terrain-height-maps/

于 2010-10-25T18:19:02.140 に答える
2

これが役立つかどうかはわかりませんが、関数の範囲が高い確率で平面に変換されるようにすることができます。たとえば、0.1 と 0.3 の間のすべての結果は、80% の確率で 0.1 サーフェスとして終了します。このようにして、平らな表面を奨励しながら、必要な高い変動性を維持します。

于 2010-10-25T18:17:18.667 に答える
2

見栄えの良い地形を生成するには、単純なノイズだけでは不十分です。これは、より複雑なプロセスの中間ステップの 1 つにすぎません。現実世界の現象をシミュレートする必要があります: 気温、浸食、降水量などです。通常、これは CPU を大量に消費するプロセスですが、努力する価値は十分にあります。ここにいくつかの興味深いリンクがあります:

ダンジョンリーグ - すべて読んでください。素晴らしいもの。

The Chronicles of Doryen に関する世界世代の記事:

(ジェネレーターもダウンロードできますが、C++ で記述されています)

于 2010-10-25T18:35:37.303 に答える
1

新しいエリアがどのように見えるかを、選択した頻度で決定する「マスターランダムジェネレーター」が必要です。山の場合は、すでに持っているものを選択してください。フラットの場合は、ノイズを少なくしてください。

于 2010-10-25T18:43:04.070 に答える
0

その後、メディアンフィルターでフィルタリングできます。それはあなたの表面を平らにします。しかし、それは山を破壊します。これは、くぼみや台地などの比較的平坦な領域では問題ありません。鋭い山 (高速で高低差のあるもの) が必要な場合は、このフィルターを選択的に適用する必要があります。

于 2010-10-25T18:15:03.640 に答える
0

特にプロシージャル テクスチャとノイズに関しては、より多くのマテリアルを探す必要があります。この3つが大きく関係しています。異なるパラメーターを持つ複数のノイズ関数を使用することを検討し、異なる関数または演算子を使用してそれらを組み合わせる必要があります。

ケースを支援するために、1 つの関数を使用して高周波ノイズを生成し、それを低周波ノイズで乗算することができます。これにより、低周波ノイズが 1 に近いピークと 0 に近いフラットが得られます。ある種のスムージング/浸食アルゴリズムもクールです。ただし、少なくとも使用可能な結果を​​得るには、多くの試行錯誤とパラメータの微調整が必​​要です。

一部のより複雑な地形では、アルファブレンディングやスムージングなどを使用して 10 を超えるノイズ関数が必要になる場合があります。単純なフィルターを適用するだけで見栄えの良い地形が得られるとは思わないでください。

于 2010-10-25T18:24:09.610 に答える