我正在学习如何用 Java 编写一个 OpenGL 游戏引擎。我已经从文件中加载了模型,但接下来是高度图,我想知道使用高度图生成 3D 地形而不是 Z 轴值列表或 3D 模型有什么好处?它取决于地形的细节还是使用高度图更有效?
我能想到的一些:
高度图优点:
- 较小的文件,因为游戏会在运行时将其生成到内存中。
- 用于操作 n^2 图像的更优化算法?
- 更容易的程序生成。
高度图缺点:
- 陡角和悬垂的问题是不可能的。
- 似乎不如模型准确。
- 如果您不按程序生成地形,它们对制作地形有帮助吗?
我正在学习如何用 Java 编写一个 OpenGL 游戏引擎。我已经从文件中加载了模型,但接下来是高度图,我想知道使用高度图生成 3D 地形而不是 Z 轴值列表或 3D 模型有什么好处?它取决于地形的细节还是使用高度图更有效?
我能想到的一些:
高度图优点:
高度图缺点:
如果您将具有高度值的灰度/rgb/rgba 图像称为高度图,那么您基本上是对的。
Z 轴值列表
您可以随心所欲地存储您的值,甚至可以对它们进行序列化/去实化,唯一的区别是图像格式是通用的,并且在所有 3d 软件中都使用。因此,您可能希望根据图像高度图格式制作管道,因为您可能不会自己程序生成高度图,而是从某种 3d 软件中导入它们。
3D模型
只有当 f(x,z) 有一个值时,才能使用高度图。在这种情况下,我相信没有理由使用 3d 网格代替高度图。
它取决于地形的细节还是使用高度图更有效?
不,LOD 和其他内容仅取决于您的实现。只是在高度图中,每个顶点使用8 bits
(灰度)/ 24 bits
(RGB)/ 32 bits
(RGBA),并且每个顶点使用 3d 模型3x32 bits
。
因此,基本上,高度图仅用于节省一些内存/导入扩展。而且它们可能更容易生成,但我不是 3d 建模师,所以不能肯定地说。