生成式艺术和算法创作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)

迭代过程:

n = 0 : A
n = 1 : AB
n = 2 : ABA
n = 3 : ABAAB
n = 4 : ABAABABA
n = 5 : ABAABABAABAAB
n = 6 : ABAABABAABAABABAABABA
n = 7 : ABAABABAABAABABAABABAABAABABAABAAB

用树状分枝表示迭代过程会更容易理解:

n=0:         A           开始 (公理/起始点)
            / \
n=1:       A   B         根据规则(A → AB)起始点A拓展成AB,由于起始点没有B,规则(B → A)没有被用到
          /|    \
n=2:     A B     A       AB中的A拓展成AB,B变成A,于是得到了ABA
        /| |     |\
n=3:   A B A     A B     可以看到每个A都是一个新的子树的根,由此引发出和整体结构同构的子结构。
      /| | |\    |\ \
n=4: A B A A B   A B A   

下面我们来看看著名的 Koch snowflake(科赫曲线)是如何用 L-system 生成迭代过程的:

image

L-system 规则是:F→F+F--F+F。想象一下有一只乌龟🐢,当它接收到指令 F 时向前走,接收到指令 + 号就左转 60°,- 号右转 60°:

image

F→F+F--F+F 的意思就是:把每一个线段 F,用 F' 右转 F' 左转再左转 F' 右转 F' 替代……晕了吧?00 为你准备了分解动作示意图:

使用 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°
image

如果 L-system 语法中每个规则仅涉及单个符号而不涉及邻近符号,则属于 context-free。如果规则不仅取决于单个符号而且还取决于邻近符号,则属于 context-sensitive L-system。这样,不同的规则可以在不同的上下文中运用。

如果每个符号对应多个 production,并且在每次迭代时以一定概率随机选择,则它是随机 L-system(Stochastic L-systems)。

L-system weed:

axiom = F
F -> FF-[XY]+[XY]
X -> +FY
Y -> -FX
angle = 22.5
image

L-system 已经是很成熟的算法,组合不同的规则、尺寸、角度和迭代次数,可以生成变化多样、富有美感的生成式图形。

Christa Sommerer 和 Laurent Mignonneau 研究互动式植物生成过程,采集人在环境中的移动等数据作为参数,加入到生成式算法中。

Interactive Plant Growing - YouTube

image

Jon McCormack 是莫纳什大学的一名艺术家兼计算机科学教授,他的工作包含了算法创作。

他创作的 Fifty Sisters (2012)系列的特色是「未来的植物」,这些植物用代码通过算法生成。在另一部名为 Eden 的作品中,他创作了一个以虚拟生物为主题的装置作品。

Bloom 是昆士兰州 QUT 创意产业区委托他制作的一幅 43米 x 9.7米 的数字图像。

image

「我认为自己是艺术家」,McCormack 在谈到他的作品时说。

电脑仍然非常原始——它没有人类的创造力,但它有能力做一些我们无法做到的事情。人工智能目前只能给艺术实践带来有限的视角,它们只能利用所学到的知识,而人类的现实情况则是非常广阔的,并且能够给艺术带来了更深刻的视角。

McCormack 指出,人工智能本身就可以创造出看起来像艺术的东西,但是能否把它看作艺术是一个更难的问题。「我们对艺术的看法,很大程度上是人类之间的交流。一旦把一台电脑带进这个情境,你就会突然发现一个非人类的实体正在努力实现这个角色,而这个角色过去是由人类主导的。」

我们不仅把机器当成一个工具,更是一个合作伙伴或合作者,它拥有自己创造的能力。McCormack 说:

我们一直认为列侬和麦卡特尼是伟大的音乐创作伙伴。我们最终是否会看到一个转折点,这个转折点让我们承认,人类和计算机的伙伴关系不仅仅是其各部分的总和。

L-system 在建筑设计中的应用

建筑一直都离不开技术的影响。如今电脑技术已经为建筑界带来了许多改变,但它依然潜力无限,甚至可能彻底动摇建筑界的基础规则。

Michael Hansmeyer 是一位建筑师和程序员,他探索使用算法和计算来生成建筑形式。受到了细胞分裂的启发,Michael Hansmeyer 写下了拥有惊人艳丽的造型和无数刻面的设计运算法则。没人能将他们手绘出来,但它们确实可以被做出来——它们也可以向常规的建筑形态掀起思想狂潮。

下面是 Michael Hansmeyer 在 TED 2012 年会上的演讲 Building unimaginable shapes:

Michael Hansmeyer:塑造不可思议

L-systems 在音乐中的应用

使用 L-system 辅助生成音乐片段的研究由来已久。

Przemyslaw Prusinkiewicz 在 1986 年的论文 Score generation with L-system 中探讨了用算法生成乐谱的方法:用 L-system 生成字符符号,再讲符号解析成一系列的音符

The score associated with the Hilbert curv in the common musical notation

随着技术的演进,生成式音乐、算法作曲越来越成熟,架构也越来越复杂,L-system 依然被用作规则和语法生成的方式:

via: Improving L-System Music Rendering Using a Hybrid of Stochastic and Context-Sensitive Grammars in a Visual Language Framework.

Ref


00 的文集

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容