最近在游戏里看到那些飘来飘去的云彩,是不是觉得特别自然?其实这背后藏着个挺有意思的技术——用噪声函数来生成动态云层。说白了就是用数学公式来”画”云,而不是一张静态图片贴上去。
想象一下电视没信号时的雪花画面,那就是最原始的噪声。不过用来做云彩的噪声要高级多了,比如Perlin噪声,它能产生更自然、更连续的随机图案。这玩意儿发明出来就是为了模拟自然界里那些不完美但又有规律的东西,比如云彩、山脉、木头纹理。
其实原理挺巧妙的。程序员会在着色器里叠加好几层不同大小的噪声,大的负责云朵的整体形状,小的负责边缘的细节。这就像画画先勾勒轮廓,再慢慢添加细节一样。
最妙的是,只要让这些噪声随时间移动,云朵就会自然地飘动起来。原本需要美术师画几十张不同状态的云图,现在几行代码就搞定了。
用噪声函数做云层,最大的好处就是省内存。一张高质量的天空贴图可能就要几十MB,而用程序生成的云几乎不占什么空间。而且想改就改,要晴天就调亮些,要下雨就调暗些,完全不用重新画图。
现在很多开放世界游戏都用这招,《原神》里那些随风飘动的云,《赛博朋克2077》里城市上空的雾霾,背后都是噪声函数在起作用。看着它们慢慢飘过,还真有种看真云的感觉。
下次玩游戏时抬头看看天,那些看似随机的云彩运动,其实都是精心设计的数学公式在跳舞呢。
参与讨论
这个技术听起来很实用,游戏里的云确实比以前自然多了
有没有人试过在Unity里实现这个效果?求分享经验
之前自己尝试过用噪声做地形,效果还行但云层没搞过🤔
感觉原理讲得挺清楚的,回头找个教程试试看
其实现在很多引擎都内置了噪声函数,用起来应该不难
看到这个就想起之前玩《原神》总盯着天空看,确实做得不错
那如果是低配手机跑这种动态云层会不会很卡?
噪声函数还能做雾效,文章里没提这个但实际挺常用的