我想在 OpenGL 中渲染体积云。我发现了一篇有趣的论文,它描述了一种渲染体积云的简单技术。(http://www.inframez.com/events_volclouds_slide18.htm)但是我不知道如何创建他们的“分形立方体”(或 perlin-noise 立方体)。
我的问题是:如何创建立方体的 6 个可平铺分形纹理?
编辑:我的目标是制作体积云对象,而不是云天空盒。
我想在 OpenGL 中渲染体积云。我发现了一篇有趣的论文,它描述了一种渲染体积云的简单技术。(http://www.inframez.com/events_volclouds_slide18.htm)但是我不知道如何创建他们的“分形立方体”(或 perlin-noise 立方体)。
我的问题是:如何创建立方体的 6 个可平铺分形纹理?
编辑:我的目标是制作体积云对象,而不是云天空盒。
由 Ken Perlin 本人撰写的关于 Perlin 噪声的精彩介绍,请参见此处。他详细讨论了生成一维或二维噪声函数,然后对其进行概括以展示它在 3D 中的工作方式,以生成您想要的实体噪声立方体。
使用 2D 广告牌云纹理时,您可以创建透明度看起来像云的 alpha 混合 2D 纹理。他们要求你做的几乎是一样的,只是纹理无缝地包裹在一个立方体周围(就像一个天空盒)。perlin -noise 过滤器看起来像一种算法,可以使某些东西看起来像云一样。
我的捷径是使用 Photoshop 的云过滤器来创建你的纹理。按照本教程的基本概念进行 Alpha 混合,但不要进行圆形渐变。将它切割成一个无缝的类似天空盒的网格(即它有 6 个边并正确折叠在一个立方体周围)。
我认为他们所指的“分形立方体”纹理是由多个八度音阶的柏林噪声产生的 FBM(分形布朗运动)分形。这个游戏编程宝石章节讨论了它们是如何形成的。基本思想是将 Perlin 噪声的多个“八度”组合在一起,每个八度的频率大约是前一个八度的两倍。您可以通过修改噪声函数来实现无缝平铺。Photoshop 的云过滤器基本上是 FBM 噪声,并且是无缝平铺的,因此如果您可以访问 Photoshop,则可以使用它。
如果你真的对漂亮的云渲染感兴趣,那么 Mark Harris 的算法虽然很复杂,但还是相当不错的:http: //www.markmark.net/clouds/