9

この質問は、ここで提起された質問と非常によく似ています。

私の問題は、次のようなマップがあることです。

メインマップ

このマップは、2Dパーリンノイズを使用して作成され、作成された高さマップを実行して、対応する要素の高さまたは勾配に基づいて、地形内の各要素にタイプと色の値を割り当てます。これはかなり標準的です。マップ配列は2次元であり、画面サイズの正確な寸法(ピクセル/ピクセル)であるため、1200 x 800の生成では、リグで約2秒かかります。

次に、強調表示された長方形を拡大します。

http://i.stack.imgur.com/hrZnM.png

明らかに、サイズが大きくなると、ディテールが失われます。そしてここに問題があります。その場で追加の詳細を作成し、プレーヤーが動き回るときにそれをディスクに書き込みたいと思います(プレーヤーは、グリッドに沿った動きに制限されたドットになります)。これを行うための2つのアプローチがあり、最初に頭に浮かんだのはすぐに実装したものです。

http://i.stack.imgur.com/bbLia.png

これは、前の画像の黄色のグリッドスペース(中央の左側)で強調表示されている、古い地形のサンプリングされた要素から作成された新しいバイアスされたローカル地形の拡大図です。ただし、このシステムでは大幅な変更が必要になります。たとえば、黄色のグリッドスペースの1つ上にあるユニットをビーチタイルに移動すると、地形が完全に変化します。

http://i.stack.imgur.com/6shKz.png

したがって、それが正しく機能するためには、過度の量を実行する必要があります。プレーヤーが次の場所に到達するために必要なローカル世界の40ほどのグリッドスペースを移動したときにスムーズな遷移を作成するために、単語は補間になると思います。世界中でタイル張り。それは複雑で非常にエレガントではないようです。

2番目のアプローチは、元のマップのグリッドを小さなビットに分割し、各正方形を4で割ることです。私はこれを実装しておらず、実際に詳細を増やす方法がわかりませんが、おそらくそれが最善の解決策になると思います。

これにどのようにアプローチできるかについてのアイデアはありますか?ローカルでオンザフライである必要があることに注意してください。地図の解像度を上げるだけでは、絶対に避けたいと思います。

4

1 に答える 1

10

パーリン ノイズを位置の関数に書き換えます。次に、オクターブ (したがって詳細レベル) を上げて、より高い解像度で領域をリサンプリングできます。

于 2011-06-11T19:43:04.170 に答える