C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了C OpenGL立方体将Perlin噪声映射到球体大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前正在研究一些行星生成,主要是为了好玩,并希望最终得到一些踢屁股行星.我正在使用一个已通过规范化映射到球体的立方体.

在这张照片中,地形没有正确纹理.这只是Heightmap的渲染.但这不是我的问题.从立方体创建球体时,您将留下6个弯曲成球体形状的面.因此,我没有可用于在地形周围包裹球形高度图的纬度和经度.目前我正在使用Cube Mapping.但是,这会导致一些问题,您可以看到:

– 我的问题变得明显了.问题是由于球体仍然具有立方体的拓扑结构.我必须为每张脸生成一个高度图.我目前使用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或顶点着色器.

解决方法

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

PS:那不是月亮,而是太阳.为了测试目的它更接近,我现在没有太阳纹理,所以我只使用旧的灰度高度图纹理,@R_721_9447@看到它更好.现在这个星球开始变得很棒了.

大佬总结

以上是大佬教程为你收集整理的C OpenGL立方体将Perlin噪声映射到球体全部内容,希望文章能够帮你解决C OpenGL立方体将Perlin噪声映射到球体所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。