- 生成式藝術(shù)和算法創(chuàng)作01-概述
- 生成式藝術(shù)和算法創(chuàng)作02-隨機(jī)和噪聲
- 生成式藝術(shù)和算法創(chuàng)作03-混沌和分形
- 生成式藝術(shù)和算法創(chuàng)作04-規(guī)則系統(tǒng)
- 生成式藝術(shù)和算法創(chuàng)作05-Tessellation
- 生成式藝術(shù)和算法創(chuàng)作06-形狀語法
Lindenmayer system焕济,簡稱 L-system臊旭,是由荷蘭烏特勒支大學(xué)的生物學(xué)和植物學(xué)家,匈牙利裔的 Aristid Lindenmayer 于 1968 年提出的有關(guān)生長發(fā)展中的細(xì)胞交互作用的數(shù)學(xué)模型湿滓,被廣泛應(yīng)用于植物生長過程的研究和建模锥惋,也常用于模擬各種生物體的形態(tài)做鹰。
L-system 語法
L-system 是一系列不同形式的語法規(guī)則僧鲁,它的自然遞歸規(guī)則產(chǎn)生自相似性伤柄,也能用于生成自相似的分形并扇,例如迭代函數(shù)系統(tǒng)去团,因此也是一種形態(tài)發(fā)生(morphogenesis)算法。
L-system 一般可以這樣定義:
?G ={V,S,ω,P},
V: 變量符號集合
S: 常量符號集合
ω: 初始狀態(tài)串(i.e. seed or axiom)
P: 生成式規(guī)則(production)
例如穷蛹,Lindenmayer 研究海藻生長模式時(shí)提出的最早的 L-system:
變量 : A B
常量 : 無
**公理 **(axiom) : A
規(guī)則 : (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 開始 (公理/起始點(diǎn))
/ \
n=1: A B 根據(jù)規(guī)則(A → AB)起始點(diǎn)A拓展成AB土陪,由于起始點(diǎn)沒有B,規(guī)則(B → A)沒有被用到
/| \
n=2: A B A AB中的A拓展成AB肴熏,B變成A鬼雀,于是得到了ABA
/| | |\
n=3: A B A A B 可以看到每個(gè)A都是一個(gè)新的子樹的根,由此引發(fā)出和整體結(jié)構(gòu)同構(gòu)的子結(jié)構(gòu)蛙吏。
/| | |\ |\ \
n=4: A B A A B A B A
下面我們來看看著名的 Koch snowflake(科赫曲線)是如何用 L-system 生成迭代過程的:
L-system 規(guī)則是:F→F+F--F+F源哩。想象一下有一只烏龜??,當(dāng)它接收到指令 F 時(shí)向前走鸦做,接收到指令 + 號就左轉(zhuǎn) 60°励烦,- 號右轉(zhuǎn) 60°:
F→F+F--F+F 的意思就是:把每一個(gè)線段 F,用 F' 右轉(zhuǎn) F' 左轉(zhuǎn)再左轉(zhuǎn) F' 右轉(zhuǎn) F'
替代……暈了吧泼诱?00 為你準(zhǔn)備了分解動作示意圖:
使用 L-system 生成圖形圖像時(shí)坛掠,模型中的符號要能引用計(jì)算機(jī)屏幕上的圖形元素。例如,F(xiàn)ractint 程序使用 Turtle graphics(類似于 Logo 編程語言中的圖形)來生成屏幕圖像屉栓。它將 L-system 模型中的每個(gè)常量解釋為海龜命令舷蒲。
在 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 在生成式藝術(shù)中的應(yīng)用
L-system 常被藝術(shù)家用于生成植物形態(tài)或者模擬植物的生長過程友多。
例如牲平,下面的規(guī)則可以生成一株 Fractal plant:
變量 : X F
常量 : + ? [ ]
起始狀態(tài) : X
規(guī)則 : (X → F+[[X]-X]-F[-FX]+X), (F → FF)
角度 : 25°
如果 L-system 語法中每個(gè)規(guī)則僅涉及單個(gè)符號而不涉及鄰近符號,則屬于 context-free夷陋。如果規(guī)則不僅取決于單個(gè)符號而且還取決于鄰近符號欠拾,則屬于 context-sensitive L-system。這樣骗绕,不同的規(guī)則可以在不同的上下文中運(yùn)用藐窄。
如果每個(gè)符號對應(yīng)多個(gè) production,并且在每次迭代時(shí)以一定概率隨機(jī)選擇酬土,則它是隨機(jī) L-system(Stochastic L-systems)荆忍。
L-system weed:
axiom = F
F -> FF-[XY]+[XY]
X -> +FY
Y -> -FX
angle = 22.5
L-system 已經(jīng)是很成熟的算法,組合不同的規(guī)則撤缴、尺寸刹枉、角度和迭代次數(shù),可以生成變化多樣屈呕、富有美感的生成式圖形微宝。
Christa Sommerer 和 Laurent Mignonneau 研究互動式植物生成過程,采集人在環(huán)境中的移動等數(shù)據(jù)作為參數(shù)虎眨,加入到生成式算法中蟋软。
Interactive Plant Growing - YouTube
Jon McCormack 是莫納什大學(xué)的一名藝術(shù)家兼計(jì)算機(jī)科學(xué)教授,他的工作包含了算法創(chuàng)作嗽桩。
他創(chuàng)作的 Fifty Sisters (2012)系列的特色是「未來的植物」岳守,這些植物用代碼通過算法生成。在另一部名為 Eden 的作品中碌冶,他創(chuàng)作了一個(gè)以虛擬生物為主題的裝置作品湿痢。
Bloom 是昆士蘭州 QUT 創(chuàng)意產(chǎn)業(yè)區(qū)委托他制作的一幅 43米 x 9.7米 的數(shù)字圖像。
「我認(rèn)為自己是藝術(shù)家」扑庞,McCormack 在談到他的作品時(shí)說譬重。
電腦仍然非常原始——它沒有人類的創(chuàng)造力,但它有能力做一些我們無法做到的事情罐氨。人工智能目前只能給藝術(shù)實(shí)踐帶來有限的視角害幅,它們只能利用所學(xué)到的知識以现,而人類的現(xiàn)實(shí)情況則是非常廣闊的狠怨,并且能夠給藝術(shù)帶來了更深刻的視角佣赖。
McCormack 指出,人工智能本身就可以創(chuàng)造出看起來像藝術(shù)的東西憎蛤,但是能否把它看作藝術(shù)是一個(gè)更難的問題×┟剩「我們對藝術(shù)的看法,很大程度上是人類之間的交流棚辽。一旦把一臺電腦帶進(jìn)這個(gè)情境冰肴,你就會突然發(fā)現(xiàn)一個(gè)非人類的實(shí)體正在努力實(shí)現(xiàn)這個(gè)角色,而這個(gè)角色過去是由人類主導(dǎo)的熙尉×撸」
我們不僅把機(jī)器當(dāng)成一個(gè)工具,更是一個(gè)合作伙伴或合作者检痰,它擁有自己創(chuàng)造的能力包归。McCormack 說:
我們一直認(rèn)為列儂和麥卡特尼是偉大的音樂創(chuàng)作伙伴。我們最終是否會看到一個(gè)轉(zhuǎn)折點(diǎn)铅歼,這個(gè)轉(zhuǎn)折點(diǎn)讓我們承認(rèn)箫踩,人類和計(jì)算機(jī)的伙伴關(guān)系不僅僅是其各部分的總和。
L-system 在建筑設(shè)計(jì)中的應(yīng)用
建筑一直都離不開技術(shù)的影響谭贪。如今電腦技術(shù)已經(jīng)為建筑界帶來了許多改變,但它依然潛力無限锦担,甚至可能徹底動搖建筑界的基礎(chǔ)規(guī)則俭识。
Michael Hansmeyer 是一位建筑師和程序員,他探索使用算法和計(jì)算來生成建筑形式洞渔。受到了細(xì)胞分裂的啟發(fā)套媚,Michael Hansmeyer 寫下了擁有驚人艷麗的造型和無數(shù)刻面的設(shè)計(jì)運(yùn)算法則。沒人能將他們手繪出來磁椒,但它們確實(shí)可以被做出來——它們也可以向常規(guī)的建筑形態(tài)掀起思想狂潮堤瘤。
下面是 Michael Hansmeyer 在 TED 2012 年會上的演講 Building unimaginable shapes:
L-systems 在音樂中的應(yīng)用
使用 L-system 輔助生成音樂片段的研究由來已久。
Przemyslaw Prusinkiewicz 在 1986 年的論文 Score generation with L-system 中探討了用算法生成樂譜的方法:用 L-system 生成字符符號浆熔,再講符號解析成一系列的音符
隨著技術(shù)的演進(jìn)本辐,生成式音樂、算法作曲越來越成熟,架構(gòu)也越來越復(fù)雜慎皱,L-system 依然被用作規(guī)則和語法生成的方式:
via: Improving L-System Music Rendering Using a Hybrid of Stochastic and Context-Sensitive Grammars in a Visual Language Framework.
Ref
- L-system - Wikiwand
- Koch snowflake - Wikiwand
- L-System manual
- Turtle graphics - Wikiwand
- L-Systems Renderer
- L-Systems Turtle Graphics Renderer - HTML5 Canvas - by Kevin Roast
- Jon McCormack
- Michael Hansmeyer - L-Systems
- Michael Hansmeyer - Computational Architecture
- Score generation with L-systems
- Improving L-System Music Rendering Using a Hybrid of Stochastic and Context-Sensitive Grammars in a Visual Language Framework - Semantic Scholar
- theatre of noise: L-System Garden: Max implementation of Lindenmeyer
- Creating Cubic Spline with Mospline L-System
- The Beauty of Fractals - L-system in Houdini - motionesque - Andrea Kühne | motionesquemotionesque