Perlin Noise:让计算机图形告别机械感

Perlin's Noise Algorithm

Perlin Noise:让计算机图形告别机械感

在程序化生成领域,Noise 不仅仅是随机值的集合,更是一种遵循特定规则的函数。普通的随机函数生成的图像杂乱无章,缺乏可辨识的特征,而 Coherent Noise 则能在保持随机性的同时展现出平滑的过渡和自然的纹理。Perlin Noise 算法正是解决这一问题的关键,它由 Ken Perlin 在 1983 年提出,旨在消除当时计算机生成图像(CGI)中令人不适的“机器感”。该算法通过在二维平面的每个整数点预计算随机单位向量,并利用插值计算任意点的噪声值,成功模拟出云朵、地形等自然形态。从 Tron 到现代游戏开发,Perlin Noise 彻底改变了数字内容的生成方式,并因此让 Ken Perlin 获得了学院奖技术成就奖。

Ken Perlin 在 1983 年开发了 Perlin Noise,原因是他对当时计算机生成图像中那种“机器般”的外观感到沮丧。
  1. jlhawn

    你知道什么比 Perlin Noise 更酷吗?Simplex Noise [1]!这篇文章结尾就暗示了这一点。它也是同一个人发明的,旨在解决原始 Perlin Noise 函数的问题。它没那么广为人知,是因为长期以来受限于专利问题,但截至 2022 年,该专利已过期!

    1. https://en.wikipedia.org/wiki/Simplex_noise

  2. badpun

    我最近实现了 3D Perlin Noise,结果发现生成的模型在网格晶格周围的灯光总是不对劲(模型本身在那里是连续的,只是光照不正确)。经过几天愉快的调试后,我终于明白 Perlin Noise 的导数在网格晶格周围是不连续的,这导致法线在那里也不连续(因为法线垂直于切线,而切线基于导数)。可以通过巧妙地修改 Perlin 的小波函数来改善这一点,使噪声达到 C(1) 连续性(导数连续,二阶导数不连续)——这能让视觉伪影变小,但无法完全消除。

  3. erhuve

    我有幸在 NYU 上过 Perlin 的计算机图形学课程——他是个了不起的人。有个有趣的事实:他的会议投稿很容易辨认,因为他是世界上唯一一个不把它称为“Perlin Noise”的人。

同日更多故事

2026-07-22