程序行星,高度图和纹理

时间:2010-11-02 22:53:01

标签: opengl texture-mapping fractals procedural-generation perlin-noise

我目前正在开发一个OpenGL程序行星发生器。我希望将它用于太空RPG,这将不允许玩家下到行星表面,所以我忽略了与ROAM相关的任何事情。在momement我正在绘制一个带有VBO的立方体并映射到球体上,如图here所示。

我熟悉大多数分形高度图生成技术,并且已经实现了我自己的中点位移版本(在我知道的情况下这不是很有用)。

我的问题是,在程序上生成高度图的最佳方法是什么。我看了libnoise,它允许我制作tilable高度图/纹理,但据我所知,我需要生成一个像:

this

留下明显的瓦片。

有人可以告诉我最佳路线吗?

非常感谢任何意见。

谢谢,

亨利。

2 个答案:

答案 0 :(得分:3)

看起来您了解生成平坦无缝表面然后尝试将其映射到球体上的问题。

如何使用3D噪音功能呢? 3D噪声函数需要3个坐标而不是2个坐标作为输入,因此想象一个充满生成数字的3D阵列(而不是2D数组)。因此,一旦您具有3D噪声功能,您就可以生成2D纹理,但不是对每个像素使用2D坐标,而是使用该像素在球体上的位置的3D坐标。 (我希望那句复杂的句子有道理!)

请看一下这页关于Perlin噪音的中途:https://web.archive.org/web/20120829114554/http://local.wasp.uwa.edu.au/~pbourke/texture_colour/perlin/

我认为它完全描述了你对球体的要求。

答案 1 :(得分:1)

您可能还想查看2004年的这篇文章,了解如何将球体“拆分”为可管理的部分。

http://www.gamedev.net/reference/articles/article2074.asp