3

我正在创建一个使用高度图的大型开放世界(200×200 公里)的 3D 游戏。我将高度图划分为 200×200 = 40,000 个 1000×1000 米的区域,然后再次划分为 20×20 = 400 个 50×50 米的块。高度图是从 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) 的线。在这种情况下,通过特定点/顶点定义线/体积会更有效。

对于类似地形的数据,因为它通常是非随机的,所以我建议通过多边形网格使用第二种方法。您可能会发现使用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 回答