利用柏林噪声场激发创意灵感
速览
柏林噪声场是一种常用于计算机图形学中的算法,能够生成平滑、自然的随机分布效果。本文探讨了如何将其应用于创意设计中,以模拟自然界中的纹理、地形或动态变化。掌握这一技术有助于提升视觉内容的真实感与艺术表现力。
AI 深度解读
创意无限:利用 Perlin Noise Fields 探索生成式艺术
背景
在攻读博士学位的间隙,作者试图通过一种放松身心的方式来缓解学术压力。与学术研究中往往需要数月甚至数年的漫长等待才能看到成果不同,生成式艺术(Generative Art)提供了一种即时的反馈机制:只需运行简单的算法,有趣的图像便会在短时间内显现。这种快速获得视觉满足感的体验,为枯燥的学术工作带来了一种 refreshing(令人耳目一新)的调剂。
去年十二月的一个无聊周末,作者给自己设定了一个有趣的挑战:选择一个简单的生成过程进行模拟,并通过调整各种可用参数,尽可能多地创造出不同的变体。最终,他选择了 Perlin Noise Fields(柏林噪声场)作为核心算法。
Perlin Noise Fields 是一种基于粒子在由柏林噪声创建的简单力场中运动的模拟技术。作者使用 Processing 编程语言构建了一些简单的类,以便快速迭代想法。这篇文章不仅展示了最终生成的 25 种不同设计,还详细记录了创作过程中的心路历程,特别是如何通过自我施加的限制来主动练习创造力。
核心内容
Perlin Noise Fields 简介
Perlin Noise Fields(有时也被称为 Perlin Flow Fields 或 Vector Fields)的核心概念非常直观。可以将画布视为一个二维力场,画布上的每个点都被分配了一个方向,该方向决定了“力”如何引导粒子移动。
- 随机力场 vs. 噪声力场:如果为画布上的每个点分配随机方向,粒子的运动轨迹会显得生硬且突兀。为了增加随机性的“有机感”,作者引入了 Perlin Noise(柏林噪声)。正如 Adrian Biagioli 在其文章中详细解释的那样,柏林噪声能够生成平滑过渡的方向场。相比随机版本,使用柏林噪声得到的方向变化更加平滑自然。
- 粒子模拟:在建立好力场后,下一步是在画布上释放粒子,并模拟它们受底层力场影响而产生的运动。
为了优化代码结构,作者添加了基本的类来更好地组织代码:
- 粒子集(Particle Sets):定义包含一个或多个粒子的集合,并关联自定义的绘制函数。
- 图层(Layers):实现粒子集的图层管理。这样可以在画布上按顺序绘制图层,只有当分配给特定图层的所有粒子集都模拟了指定数量的步骤后,该图层才算完成。
迭代过程与创作演变
作者通过一系列迭代展示了如何仅通过调整参数,从简单的黑白图像演变为复杂的彩色艺术。以下是部分关键迭代的解读:
- Iteration 1 - 基础灰度:在白色背景上使用大量低不透明度的黑色粒子。粒子聚集的区域显得更暗,形成了基本的灰度图像。
- Iteration 2 - 反转色彩:出于好奇,作者反转了颜色,使用黑色背景和不同粗细的白色条纹。这种变化增加了画面的深度感。
- Iteration 3 - 引入色彩与分层:基于深度感,作者引入了紫色调。通过从深到浅分层绘制多个粒子集,结果出乎意料地美丽。
- Iteration 4 - 线条粗细与透明度:在感到创意枯竭时,作者尝试调整线条粗细,并将粒子不透明度降至极低(1%)。这种微妙的灰色调几乎是从无到有地浮现出来,视觉效果令人愉悦。
- Iteration 5 - 笔触质感:偶然将线条的端点(stroke cap)从默认的圆形改为方形,引入了类似粗糙纸张上的炭笔纹理。
- Iteration 6 - 程序化色彩:为了引入色彩,作者参考了一篇关于生成颜色的文章,使用了基于黄金比例的色彩生成器。结果非常壮观。
- Iteration 7 - 形状探索:保持程序化色彩,但将绘制对象从线条改为弧线(arcs),产生了完全不同的视觉效果。
- Iteration 8 - HSB 色彩空间:注意到黄金比例生成器使用的是 HSB(或 HSL)色彩空间,作者固定色调,随机选择饱和度和亮度,得到了独特的色彩组合。
- Iteration 9 - 动态饱和度:根据粒子的生命周期变化饱和度。颜色从全饱和逐渐变为白色,同时线条变窄,形成了类似火焰的效果。
- Iteration 10 - 灵感联想:火焰效果让作者想起了《狮子王》中鬣狗洞穴里的绿色云朵。通过分层处理,实现了这一奇异的联想。
- Iteration 11 - 构图思维:在创意再次枯竭时,作者转而关注构图。退回简单的灰度,先构建有趣的背景,再在其上叠加精细的细节。
- Iteration 12 - 意外之美:尝试绘制与运动方向垂直的线条,由于逻辑错误,意外创造出一种带有清晰斑点的薄雾效果。作者认为这种短暂存在的图像具有独特的美感,尽管生成它的代码已永久丢失,但这张图片因此变得珍贵。
- Iteration 13 - 星空效果:将之前的形状调整为圆形,并赋予其波浪状边缘。通过代码中的另一个“错误”,意外发现了类似星空的效果。随后,作者故意加入星星和流星,利用相同的算法模拟夜空。
- Iteration 14 - 斑点狗纹理:喜欢流星形状中线条厚度随生命周期变化的特性。将其不同大小分层叠加在白色背景上,创造出复杂且繁忙的视觉效果,让人联想到斑点狗(Dalmatian)的皮毛。
- Iteration 15 - 彗星尾巴:复用“彗星”形状,延长尾巴并随时间降低不透明度,使粒子逐渐消失。通过黑白条纹交替分层,实现了丰富的灰色层次,效果平滑且有机。
- Iteration 16 - 彩色粉笔与星云:尝试用淡血色(sanguine)模拟粉笔画的感觉。随后回到太空主题,试图模拟星云,但最终呈现出的效果更像是一个愤怒的……(原文在此处截断,未提供后续内容)。
关键要点
- 约束激发创造力:通过自我施加限制(如仅使用 Perlin Noise Fields 和有限参数),作者证明了限制并非创造力的阻碍,而是激发新颖想法的催化剂。
- 算法的简单性与表现的复杂性:Perlin Noise Fields 本身是一个简单的算法,但通过调整粒子属性(不透明度、颜色、形状、生命周期)和图层管理,可以产生从抽象纹理到具象物体(如火焰、星空、皮毛)的丰富视觉效果。
- 拥抱“意外”与错误:在创作过程中,代码逻辑的错误(如错误的笔触端点、垂直线条绘制错误)往往能带来意想不到的“快乐意外”(happy accidents),这些意外有时比预设目标更具艺术价值。
- 色彩生成的技巧:使用基于黄金比例的色彩生成器或操作 HSB 色彩空间(固定色调,随机饱和度/亮度),可以快速获得视觉上和谐且引人入胜的色彩方案。
- 迭代与心态管理:创作过程并非线性。当创意枯竭时,作者通过切换思维模式(如从关注粒子属性转向关注构图,或退回灰度)来突破瓶颈。
意义与影响
这篇文章不仅是一篇关于生成式艺术的技术教程,更是一次关于创意工作流的深刻反思。
- 降低创作门槛:它展示了如何利用简单的工具(Processing)和基础的数学概念(Perlin Noise)进行高水平的艺术创作,鼓励非专业程序员或艺术家尝试生成式艺术。
- 重新定义“错误”的价值:在传统的软件开发中,bug 是需要修复的缺陷;但在生成式艺术中,bug 可能成为灵感的源泉。这种视角的转换对于创意工作者具有重要的启发意义。
- 实践创造力的方法论:作者提供的“自我施加限制”的方法论,为那些面临创意瓶颈的人提供了一条可行的路径。通过设定简单的规则并深入挖掘其可能性,可以系统地探索未知的视觉领域。
- 技术与艺术的融合:文章完美体现了代码如何作为一种媒介,将抽象的数学逻辑转化为具象的情感体验(如宁静、惊讶、怀旧),展示了计算机科学在人文艺术领域的独特魅力。
注:原文在描述第 16 次迭代时截断,未提供完整的最终结果描述。
