3

高さマップを使用した、大きなオープンワールド(200×200キロメートル)がある3Dゲームを作成しています。ハイトマップを1000×1000メートルの200×200=40,000の領域に分割し、それらを再び20×20=50×50メートルの400チャンクに分割します。ハイトマップはPNGファイルから生成されます。

地形を保存する方法を考えています。試してみましたが、リージョンあたり約16MBのファイルが生成されます。これは全世界(40,000リージョン)で640GBです。

リージョンファイルの例はここにあります:http: //updo.nl/file/e10ce974.umap

私の質問:リージョンファイルにこれほど多くの情報をコンパクトに保存し、後で読むにはどうすればよいですか?

4

2 に答える 2

3

高さマップは、値が通常各座標で異なり、方法の違いが予測できない場合に、情報を格納するための効率的な方法です。つまり、ランダムデータを操作する場合、ハイトマップは効率的です。データにパターンがある場合は、通常、より良い解決策があります。

で記述された行を考えてみましょうy = x。この勾配は、解像度1のハイトマップで記述できます。これはのようになります[(1, 1), (2, 2), (3, 3), ...]。ハイトマップの解像度が高い場合、そのリストは非常に大きくなります。または、その勾配を、点(1、1)と(2、2)を通る線として説明することもできます。この場合、特定のポイント/頂点を介してライン/ボリュームを定義する方がはるかに効率的です。

地形のようなデータの場合、通常はランダムではないため、ポリゴンメッシュを介した2番目のアプローチをお勧めします。JMeshのようなライブラリが見つかるかもしれません。

さらに読むために、このトピックに関連するゲーム開発スタック交換に関する素晴らしい答えがあります(率直に言って、私のものよりもはるかに優れています)

于 2012-01-29T16:58:00.880 に答える
0

2D FFTはどうですか?

http://fourier.eng.hmc.edu/e101/lectures/image_processing/node6.html

http://paulbourke.net/miscellaneous/dft/

于 2012-01-29T17:08:13.623 に答える