opengl纹理高度图

时间:2013-10-24 19:22:45

标签: c++ opengl texture-mapping heightmap

我似乎无法找到有关如何正确构建从高度贴图生成的地形的任何教程或信息。

纹理映射不是问题,我想知道的是如何使用不同纹理的不同高程对整个地形进行纹理化。

我想出的是具有如下纹理:

enter image description here

根据三角形的高程,为其指定了不同的纹理。

结果: enter image description here

我正在努力创造一个像天际一样的环境,纹理不需要经常重复,一个令人信服的景观!

问题是如何创建这样的东西: enter image description here

纹理在不同高度无缝融合!这是怎么做到的?使用的技术是什么?

视频示例:http://www.youtube.com/watch?v=qzkBnCBpQAM

1 个答案:

答案 0 :(得分:3)

一种方法是为地形使用3D纹理。纹理的每一层都是不同的材质(例如 sand rock grass )。每个顶点都有第三个uv组件,用于指定两个相邻纹理之间的混合,您也可以在此处使用顶点的高度。请注意,在这个示例中,草和沙之间的混合是不可能的,因为 rock '位于'之间',但它肯定是最简单和最快的方法。另一种方法是使用单独的二维纹理而不是单个3D纹理。然后,您将绑定纹理 sand grass ,并绘制需要在两者之间进行混合的所有顶点。绑定另外两个纹理并重复。这当然更复杂,更慢,但允许在任何两个纹理之间进行混合。 可能有更多的方法,但这两个是我现在可以想到的方法。

专业游戏引擎通常使用更高级的方法,我见过设计师在像Photoshop一样的地形上绘制多种材质,但这是一个不同的故事。