生成式艺术和算法创作07-向自然致敬的 L-system
Lindenmayer system,简称 L-system,是由荷兰乌特勒支大学的生物学和植物学家,匈牙利裔的 Aristid Lindenmayer 于 1968 年提出的有关生长发展中的细胞交互作用的数学模型,被广泛应用于植物生长过程的研究和建模,也常用于模拟各种生物体的形态。
使用 L-system 生成的 3D 杂草
L-system 语法
L-system 是一系列不同形式的语法规则,它的自然递归规则产生自相似性,也能用于生成自相似的分形,例如迭代函数系统,因此也是一种形态发生(morphogenesis)算法。
L-system 一般可以这样定义:
G ={V,S,ω,P},V: 变量符号集合
S: 常量符号集合
ω: 初始状态串(i.e. seed or axiom)
P: 生成式规则(production)
例如,Lindenmayer 研究海藻生长模式时提出的最早的 L-system:
变量: A B
常量: 无
公理(axiom) : A
规则: (A → AB), (B → A)
迭代过程:
下面我们来看看著名的 Koch snowflake(科赫曲线)是如何用 L-system 生成迭代过程的:
L-system 规则是:F→F+F--F+F。
想象一下,有一只乌龟🐢,当它接收到指令 F 时向前走,接收到指令 + 号就左转 60°,- 号右转 60°:
F→F+F--F+F 的意思就是:把每一个线段 F,用F' 右转 F' 左转再左转 F' 右转 F'
替代……
使用 L-system 生成图形图像时,模型中的符号要能引用计算机屏幕上的图形元素。例如,Fractint 程序使用 Turtle graphics(类似于 Logo 编程语言中的图形)来生成屏幕图像。它将 L-system 模型中的每个常量解释为海龟命令。
在 L-system 的语法中,常用的符号及其含义:
Character Meaning
F Move forward by line length drawing a line
f Move forward by line length without drawing a line
+ Turn left by turning angle
- Turn right by turning angle
| Reverse direction (ie: turn by 180 degrees)
[ Push current drawing state onto stack
] Pop current drawing state from the stack
# Increment the line width by line width increment
! Decrement the line width by line width increment
@ Draw a dot with line width radius
{ Open a polygon
} Close a polygon and fill it with fill colour
> Multiply the line length by the line length scale factor
< Divide the line length by the line length scale factor
& Swap the meaning of + and -
( Decrement turning angle by turning angle increment
) Increment turning angle by turning angle increment
L-system 在生成式艺术中的应用
L-system 常被艺术家用于生成植物形态或者模拟植物的生长过程。
例如,下面的规则可以生成一株 Fractal plant:
变量 : X F常量 : + − [ ]
起始状态 : X
规则 : (X → F+[[X]-X]-F[-FX]+X), (F → FF)
角度 : 25°
如果 L-system 语法中每个规则仅涉及单个符号而不涉及邻近符号,则属于 context-free。如果规则不仅取决于单个符号而且还取决于邻近符号,则属于 context-sensitive L-system。这样,不同的规则可以在不同的上下文中运用。
如果每个符号对应多个 production,并且在每次迭代时以一定概率随机选择,则它是随机 L-system(Stochastic L-systems)。
L-system weed:
axiom = FF -> FF-[XY]+[XY]
X -> +FY
Y -> -FX
angle = 22.5
L-system 已经是很成熟的算法,组合不同的规则、尺寸、角度和迭代次数,可以生成变化多样、富有美感的生成式图形。
Christa Sommerer 和 Laurent Mignonneau 研究互动式植物生成过程,采集人在环境中的移动等数据作为参数,加入到生成式算法中。
Jon McCormack 是莫纳什大学的一名艺术家兼计算机科学教授,他的工作包含了算法创作。
他创作的 Fifty Sisters (2012)系列的特色是「未来的植物」,这些植物用代码通过算法生成。在另一部名为 Eden 的作品中,他创作了一个以虚拟生物为主题的装置作品。Bloom 是昆士兰州 QUT 创意产业区委托他制作的一幅 43米 x 9.7米 的数字图像。
「我认为自己是艺术家」,McCormack 在谈到他的作品时说:
电脑仍然非常原始——它没有人类的创造力,但它有能力做一些我们无法做到的事情。人工智能目前只能给艺术实践带来有限的视角,它们只能利用所学到的知识,而人类的现实情况则是非常广阔的,并且能够给艺术带来了更深刻的视角。
McCormack 指出,人工智能本身就可以创造出看起来像艺术的东西,但是能否把它看作艺术是一个更难的问题。「我们对艺术的看法,很大程度上是人类之间的交流。一旦把一台电脑带进这个情境,你就会突然发现一个非人类的实体正在努力实现这个角色,而这个角色过去是由人类主导的。」
我们不仅把机器当成一个工具,更是一个合作伙伴或合作者,它拥有自己创造的能力。McCormack 说:
我们一直认为列侬和麦卡特尼是伟大的音乐创作伙伴。我们最终是否会看到一个转折点,这个转折点让我们承认,人类和计算机的伙伴关系不仅仅是其各部分的总和。
L-system 在建筑设计中的应用
建筑一直都离不开技术的影响。如今电脑技术已经为建筑界带来了许多改变,但它依然潜力无限,甚至可能彻底动摇建筑界的基础规则。
Michael Hansmeyer 是一位建筑师和程序员,他探索使用算法和计算来生成建筑形式。受到了细胞分裂的启发,Michael Hansmeyer 写下了拥有惊人艳丽的造型和无数刻面的设计运算法则。没人能将他们手绘出来,但它们确实可以被做出来——它们也可以向常规的建筑形态掀起思想狂潮。
下面是 Michael Hansmeyer 在 TED 2012 年会上的演讲 Building unimaginable shapes:
L-systems 在音乐中的应用
使用 L-system 辅助生成音乐片段的研究由来已久。
Przemyslaw Prusinkiewicz 在 1986 年的论文 Score generation with L-system 中探讨了用算法生成乐谱的方法:用 L-system 生成字符符号,再讲符号解析成一系列的音符。
随着技术的演进,生成式音乐、算法作曲越来越成熟,架构也越来越复杂,L-system 依然被用作规则和语法生成的方式:
via: Improving L-System Music Rendering Using a Hybrid of Stochastic and Context-Sensitive Grammars in a Visual Language Framework.
Ref
- [L-system - Wikiwand](https://www.wikiwand.com/en/L-system)
- [Koch snowflake - Wikiwand](https://www.wikiwand.com/en/Koch_snowflake)
- [L-System manual](http://paulbourke.net/fractals/lsys/)
- [Turtle graphics - Wikiwand](https://www.wikiwand.com/en/Turtle_graphics)
- [L-Systems Renderer](http://piratefsh.github.io/p5js-art/public/lsystems/)
- [L-Systems Turtle Graphics Renderer - HTML5 Canvas - by Kevin Roast](http://www.kevs3d.co.uk/dev/lsystems/)
- [Jon McCormack](http://jonmccormack.info/)
- [Michael Hansmeyer - L-Systems](http://www.michael-hansmeyer.com/l-systems)
- [Michael Hansmeyer - Computational Architecture](http://www.michael-hansmeyer.com/)
- [Score generation with L-systems](http://algorithmicbotany.org/papers/score.icmc86.html)
- [Improving L-System Music Rendering Using a Hybrid of Stochastic and Context-Sensitive Grammars in a Visual Language Framework - Semantic Scholar](https://www.semanticscholar.org/paper/Improving-L-System-Music-Rendering-Using-a-Hybrid-a-Lim-Talib/fabba1ee66cd3a835fdfabcb78e19f330eabaf9f)
- [theatre of noise: L-System Garden: Max implementation of Lindenmeyer](http://www.theatreofnoise.com/2014/03/l-system-garden-max-implementation-of.html)
- [Creating Cubic Spline with Mospline L-System](http://creativetuts.com/creating-cubic-spline-with-mospline-l-system/)
- [The Beauty of Fractals - L-system in Houdini - motionesque - Andrea Kühne | motionesquemotionesque](http://www.motionesque.com/beautyoffractals/)
HackYourself 创造者系列
创造性迷思之一:创造性是瞬间的顿悟吗?
创造性迷思之二:创造性是从无意识中神秘出现的?
创造性迷思之三:拒绝惯例更可能产生创造性吗?
创造性迷思之四:相比专家,门外汉更有创造性?
创造性迷思之五:独自一人的时候更有创造性?
👓 👓 👓
把一个人活成一个公司,你可能就不会那么迷茫了
拖延这件小事,讨论一次就够了