如何轻松创建云纹理贴图?


16

我在游戏中制作3d行星;这些将被视为“地球”。其中一些将需要云层。我查看了用于创建“地球”的各种Blender 教程,并且他们的云层使用了NASA的地球云图

但是,我将创建一个由许多程序生成的行星组成的虚构的宇宙。因此,我想使用许多变体。

我希望有一种方法可以程序性地生成云图,例如NASA链接。我还将需要创建气体巨人,因此我还将需要其他类型的云纹理贴图

如果这太困难了,我可以回过头来创建云图的多种变体。例如,3个代表地球,3个代表天然气巨头,等等。

那么,如何静态创建或以编程方式生成此类云图?

Answers:


19

云生成很有趣!我将介绍离线方法和运行时方法。

预渲染的云

如果要脱机预渲染云纹理,则别无选择,只能使用Photoshop(或Gimp,如果您愿意)。这两个程序都可以轻松生成云模式。菜单项通常在发行版之间移动,但是从Gimp 2.8.2开始,您要查找的核心命令是Filters -> Render -> Clouds -> Solid Noise。在启用命令之前,您需要创建一个新的空白图像。我鼓励您尝试使用噪声参数,但是作为一个示例,如果将“随机种子”设置为1,“详细信息”设置为4,“ X大小”设置为4.0,“ Y大小”设置为8.0,则禁用此功能“随机化”和“湍流”,并启用“可倾斜”: Gimp“固体噪声”命令的原始输出

我绝对建议您进一步采取的步骤是编辑图像的级别(Colors -> Levels...使用Gimp)。通过拖动端点,您可以有效地将云覆盖的级别从“完全阴暗”更改为“不是天空中的云”。 门槛云

其他有趣的可能性:

  • 使用“减淡”和“刻录”工具手动增亮/变暗图像的一部分。
  • 使云图像变形以建议风向。尝试使用Gimp的Filters -> Distorts -> Whirl and Pinch...命令,或用于更多控制Filters -> Distorts -> IWarp...与变形模式设置为“漩涡”。不过,请保持微妙-过多的变形往往会使高频细节模糊不清。
  • 添加多个独立的云层以模拟从薄弱到大块状的不同类型的云(我确信它们具有适当的科学名称,但是该死的Jim,我是一名程序员,而不是气象学家!)。在这种情况下,您可能希望将每个图层另存为单独的图像,以便可以在运行时独立地为其设置动画。

这确实取决于您的艺术视野。发疯!完成后,请记住将纹理导出为单通道灰度图像,以便在运行时可以将相同的云数据用于颜色和Alpha通道。

运行时云生成

在运行时生成无限的云模式需要更多的工作,但仍然完全可行。这是一个巨大的话题,这只会涉及广泛的方面。

基本上,您将使用诸如标准Perlin Noise之类的噪声函数在您的着色器代码中复制Gimp的“ Solid Noise”命令,以生成无限,平滑,确定性(可选)的周期性噪声量。您的问题没有指定您要定位的渲染API,因此在这里我不会太具体;《 GPU Gems 2》第26章介绍了HLSL和CgFX中的Perlin噪声的一种变体,或者您可以使用此GLSL噪声功能。通过对3D噪声量的2D切片进行采样,您将获得类似于Detail = 0的Gimp“ Solid Noise”命令。您的噪音量样本之间的距离越小,您的噪音频率就越低(“平滑”)。要增加高频细节的级别,请从基本的低频噪声模式开始,并添加其他高频“八度”噪声,其中每个“八度”是3D噪声量的不同部分,采样距离较大和较低的振幅。这一过程的一个例子的视觉(我发现谷歌搜索“多倍频Perlin杂”)可以找到这里

作为一项巨大的附加功能,可以很容易地对以这种方式生成的云纹理进行动画处理!在您的3D噪声函数样本坐标中添加基于时间的偏移量,您将获得令人信服的云运动(例如,如本视频所示)。这是因为噪声函数在所有三个维度上都是平滑的。在U / V方向上滚动纹理会导致云在行星周围移动,而在W(垂直)方向上滚动则具有使云缓慢“演化”的效果。

在运行时也可以使云变形,以获得类似飓风的效果。结果实际上比纯朴的Gimp变形滤镜要好得多,后者(如前所述)可能会导致纹理过于模糊。您一定要研究的一种技术是“流图”,如Valve的Alex Vlachos(SIGGRAPH 2010幻灯片)或Naughty Dog的Carlos Gonzalez(GDC 2012幻灯片)所述。基本思想是绘制一个矢量场(“流图”),并在运行时使用它扭曲和滚动云纹理,而当失真距离变得过高时,则在两个不同的云纹理之间定期进行交叉淡化。

使用哪种方法?

在Gimp / Photoshop中预渲染云纹理非常容易。一旦掌握了窍门,您就可以在几秒钟内生成一个新纹理。运行时代码很简单,而且非常快。但是,更多独特的云纹理意味着更高的磁盘空间要求(以及更大/更慢的下载速度)和运行时更多的VRAM使用。

起初,运行时云生成要困难得多,但是一旦运行起来,它就比预渲染的云纹理具有多个明显的优势。您可以生成无数种逼真的动画云模式,而无需使用任何其他磁盘空间或VRAM。但是,每个像素评估多个3D噪声函数的运行时成本可能会很高。您的云像素着色器将比预渲染情况下要慢得多。

TL; DR:肯定是从使用预渲染的云开始的,如果需要更多种类(或想要额外的编程挑战),请切换到运行时过程云。


1
这是一个很好的答案:非常全面且易于遵循。我看到你提到“扭曲云层以暗示风的形态”。这是我绝对需要做的事情,所以您可以详细说明一下吗?一旦有了这个,我将接受您的回答。
EdwardTeach 2012年

@EdwardTeach完成;希望有帮助!
postgoodism 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.