自1983年由肯·佩林(Ken Perlin)推出的Perlin噪音,自其问世以来,一直被广泛应用于计算机图像生成中。无论是程序生成地形、为变量添加伪随机变化,还是辅助图像纹理的创建,这种噪音技术都显现出了其独特的价值。那么,Perlin噪音究竟是什么,为何能让电脑生成的图像如此逼真?
Perlin噪音使得计算机生成的视觉元素,如对象表面、火焰、烟雾或云雾,能够更自然地模拟自然界中纹理的随机样貌。
Perlin噪音的诞生源于肯·佩林对1980年代初期计算机生成图像机械化外观的不满。他在1985年的SIGGRAPH论文《图像合成器》中正式阐述了这一技术。这项技术的发展伴随着他在迪士尼的科幻动画片《电子世界》(Tron, 1982)的工作风格。
据悉,佩林于1997年因创造该算法而获得了奥斯卡技术成就奖,以表彰他对影视特效的贡献。这一成就的背后,是Perlin噪音带给计算机图形艺术家的灵感,使用该技术可以更好地再现自然现象的复杂性。
Perlin没有对其算法申请任何专利,但在2001年,他获得了有关3D及以上维度的Simplex噪音的专利,这一技术也旨在改善噪音合成效果。
作为一种程序纹理原语,Perlin噪音提供了视觉效果艺术家增强电脑图形真实感的工具。虽然这一技术呈现出伪随机的外观,但其所有的视觉细节大小保持一致,这一特性使得它便于控制。
在计算机图形中,合成的纹理经常使用Perlin噪音,特别是在记忆体极度有限的情况下,例如在演示中使用。其后继技术如分形噪音和Simplex噪音等已成为图形处理单元中的标准组成部分。
Perlin噪音在视频游戏中被广泛应用,以生成看起来自然的程序生成地形。
Perlin噪音的实现通常有三个步骤:定义随机梯度向量的网格、计算梯度向量与其偏移量之间的点积,以及在这些值之间进行插值。通过这一系列计算,Perlin噪音能够在多个维度中生成自然的效果。
首先,定义一个n维网格,其中每个网格交点都有一个固定的随机n维单位长度梯度向量。对于一维的情况,这些梯度为从−1到1之间的随机标量。
当需要计算某个候选点的值时,首先找出该点所属的唯一网格单元,然后确定该单元的2n个角点及其梯度向量。每个角点计算一个偏移向量,这一偏移向量将从该角点指向候选点。接下来,对于每个角点,计算其梯度向量与偏移向量之间的点积。
在两维网格中,需要计算四个偏移向量和四个点积,而在三维中则需要计算八个。
最后一步是对2n个点积进行插值。这一步使用的插值函数要求在2n个网格节点的第一导数(甚至是第二导数)为零。这意味着,Perlin噪音的特征外观源于其在每个节点处通过零的特性。
Perlin噪音的复杂性随着维度的增加而增强,但随着研究的深入,新的算法如Simplex噪音和OpenSimplex噪音等正在不断出现,这些技术旨在改进性能并提升图形的自然感。对于未来的图形生成技术,大量的探索与创新仍在进行中。
那么,当我们未来面对越来越真实的电脑生成图像时,Perlin噪音将如何继续影响这一领域的发展呢?