【问题标题】:C++ OpenGL Cube Map Perlin Noise to SphereC++ OpenGL Cube Map Perlin Noise to Sphere
【发布时间】:2013-01-10 00:28:40
【问题描述】:

我目前正在制作一些行星生成,主要是为了好玩,并希望最终能制作出一些令人讨厌的行星。我正在使用已通过标准化映射到球体的 Cube。

这张图片中的地形尚未正确纹理化。这只是高度图的渲染。然而,这不是我的问题。从立方体创建球体时,您会留下 6 个弯曲成球体形状的面。因此,我没有可用于将球形高度图包裹在地形周围的纬度和经度。目前我正在使用立方体映射。但是,这会导致几个问题,如您所见: ——我的问题变得很明显。问题是由于球体仍然具有立方体的拓扑结构。我必须为每个面生成一个高度图。我目前使用 Libnoise 作为高度图,这就是大问题的开始。我可以将它导出为球形高度图(如果我有一个球体,这将很有用),或者我可以使用必须映射到所有 6 个面的平面高度图。但是,由于映射的工作方式。我可以让 3 个面在中间排列并且无缝,但最后一个高度图不会加入第一个高度图,因为 Lib 噪声使用边界并创建坐标网格。

球体是这样创建的——

for(int i = 0; i < vertices.size(); i++)
{

    glm::vec3 oldVec = vertices[i];
    glm::vec3 newVec = glm::normalize(oldVec);
    vertices[i] = newVec * glm::vec3(500, 500, 500);
}

这背后的原因可以看here

但是,球体的结构将使稍后以 Quad-Ttee 的形式实现 lod 变得更加容易。无论如何我可以用 LibNoise 生成立方体贴图高度图吗?或者我可以做些什么来使球体能够使用球形高度图?

我想出了如何使用 Sphere Maps 进行渲染,但是当我开始使用四叉树时,这将不起作用。但是,它会产生一些不错的结果,例如:

所以,我非常需要知道如何将噪声平铺到立方体贴图中。使用 Libnoise 或在顶点着色器中。

【问题讨论】:

    标签: opengl geometry mapping perlin-noise heightmap


    【解决方案1】:

    我终于让它按我的预期工作了。为此,我通常在没有立方体贴图或球体贴图的情况下展开立方体。我以立方体贴图的形式应用具有 3D Perlin 噪声的高度,但我没有使用 UV 坐标,因此我没有将其展开为立方体贴图并不重要。然后我根据顶点的高度应用纹理,它似乎产生了很好的效果。也许我以后会遇到问题,谁知道呢。这是我现在得到的图片:

    PS:那不是月亮,而是太阳。出于测试目的,它更近了,我目前还没有太阳纹理,所以我只使用了旧的灰度高度图纹理,这样我可以更好地看到它。这颗星球现在开始看起来很棒了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-21
      • 2018-07-28
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      相关资源
      最近更新 更多