2

我在徘徊如何在opengl中创建一个大地形。我的第一个想法是使用搅拌机并创建一个平面,对其进行细分,创建地形并将其导出为 .obj。在查看搅拌机后,我认为这应该是可能的,但很快我意识到我的 hexacore + 8GB RAM 无法跟上细分以支持非常大的地形所需的精度。

所以我的问题是,最好的方法是什么?

  • 也许尝试其他 3D 渲染软件,如cinema4d?
  • 在搅拌机中逐步创建地形并稍后将其组合在一起?(可能难以保持段之间的比例)
  • 一些我不知道的方法?

我可以使用随机生成算法创建一个大景观,但我不想要一个随机景观,我需要一个包含许多细节的定制景观。(高度、深度、路径)

编辑

我要做的是:

  • 创建 3 个不同的高度图(1. 洞穴地面(可能是墙高的一半),2. 洞穴天花板的倒置高度图,3. 标准表面高度图)
  • 结合所有三个高度图
  • 将它们保存在 obj 文件或所需的任何格式中
  • 在 3D 编辑工具中进行一些微调(如果它太大而无法处理,我将使用 LOD 算法创建一个应用程序,我可以在其中编辑一些小东西)
  • 根据需要再次保存(也许做一些优化)
  • 要开心

Edit2 我正在创建的地图太大了,以至于 Photoshop 使用了我所有的 8GB 内存,所以我必须将所有 3 个高度图拆分成更小的部分,并在移动地图时即时组装它们。

4

2 回答 2

1

我相信您只想制作高度图。您制作的图像越大,它可以拉伸得越远。也许如果你让接缝匹配,你可以平铺它,但如果你想要一个无尽的地形,那么生成一个地形可能是值得的。

要制作高度图,您将制作一个图像,其中每个像素代表一个设定的高度(您实际上不必将其表示为图像,但它可以很容易地可视化),该高度变成灰度颜色。然后,您可以将此值缩放到所需的最大高度(精度由图像的位深度决定)。

如果您想使用 OpenGL 执行此操作,您可以创建一个界面,您可以在其中单击点以提高特定点或区域的高度。

一旦你有了这个图像,渲染它就不会太难,因为 X 和 Y 坐标是为你的空间设置的,图像会给你 Z 坐标。

这样做的缺点是不允许洞穴和类似的特征(因为一个点只有一个高度)。如果您需要这些功能,可能会添加网格或第二个

于 2012-04-21T23:12:21.643 回答
0

如果您尝试存储的数据多于内存,则需要将大部分数据保存在磁盘上。将地图划分为段,根据需要加载较近的段,是一种技术。许多组通过四叉树访问地图段,通常不需要太多遍历即可到达“附近”部分。

变化包括创建较大地图块的低分辨率版本以用于渲染长视图,因此您保留了整个地图的真正低分辨率版本、This Valley Here 的中等分辨率版本和高分辨率我正在看的这片树林的副本。

这是复杂的东西,这就是为什么直到 GTA:San Andreas 或 Oblivion 之前没有人真正把整个事情放在一起。

于 2012-04-22T00:29:30.930 回答