生成式藝術和演算法創作07 L-system

weixin_34292959發表於2018-11-23
149-49ff34483220f0e3.png

Lindenmayer system,簡稱 L-system,是由荷蘭烏特勒支大學的生物學和植物學家,匈牙利裔的 Aristid Lindenmayer 於 1968 年提出的有關生長髮展中的細胞互動作用的數學模型,被廣泛應用於植物生長過程的研究和建模,也常用於模擬各種生物體的形態。

149-b07b90806e04f8dc.jpg
使用 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 生成迭代過程的:

149-6a1e393fe9434e07.png
image

L-system 規則是:F→F+F--F+F。想象一下有一隻烏龜?,當它接收到指令 F 時向前走,接收到指令 + 號就左轉 60°,- 號右轉 60°:

149-6696911f77ff3ef7.jpg
image

F→F+F--F+F 的意思就是:把每一個線段 F,用 F' 右轉 F' 左轉再左轉 F' 右轉 F' 替代……暈了吧?00 為你準備了分解動作示意圖:

149-089b04f55b1c0d95.png

使用 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°
149-977296512a8c5c26.png
image

如果 L-system 語法中每個規則僅涉及單個符號而不涉及鄰近符號,則屬於 context-free。如果規則不僅取決於單個符號而且還取決於鄰近符號,則屬於 context-sensitive L-system。這樣,不同的規則可以在不同的上下文中運用。

如果每個符號對應多個 production,並且在每次迭代時以一定概率隨機選擇,則它是隨機 L-system(Stochastic L-systems)。

149-9faa749c59bccd9e.jpg

L-system weed:

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

L-system 已經是很成熟的演算法,組合不同的規則、尺寸、角度和迭代次數,可以生成變化多樣、富有美感的生成式圖形。

149-da126e6a208374b1.png
149-fb53694deb637228.png

Christa Sommerer 和 Laurent Mignonneau 研究互動式植物生成過程,採集人在環境中的移動等資料作為引數,加入到生成式演算法中。

149-4d78cc3d9bf03513.jpg

Interactive Plant Growing - YouTube

149-c5e293e4a6c91919.jpg
image

Jon McCormack 是莫納什大學的一名藝術家兼電腦科學教授,他的工作包含了演算法創作。

他創作的 Fifty Sisters (2012)系列的特色是「未來的植物」,這些植物用程式碼通過演算法生成。在另一部名為 Eden 的作品中,他創作了一個以虛擬生物為主題的裝置作品。

Bloom 是昆士蘭州 QUT 創意產業區委託他製作的一幅 43米 x 9.7米 的數字影像。

149-8b279ad73e69b665.png
image

「我認為自己是藝術家」,McCormack 在談到他的作品時說。

電腦仍然非常原始——它沒有人類的創造力,但它有能力做一些我們無法做到的事情。人工智慧目前只能給藝術實踐帶來有限的視角,它們只能利用所學到的知識,而人類的現實情況則是非常廣闊的,並且能夠給藝術帶來了更深刻的視角。

McCormack 指出,人工智慧本身就可以創造出看起來像藝術的東西,但是能否把它看作藝術是一個更難的問題。「我們對藝術的看法,很大程度上是人類之間的交流。一旦把一臺電腦帶進這個情境,你就會突然發現一個非人類的實體正在努力實現這個角色,而這個角色過去是由人類主導的。」

我們不僅把機器當成一個工具,更是一個合作伙伴或合作者,它擁有自己創造的能力。McCormack 說:

我們一直認為列儂和麥卡特尼是偉大的音樂創作夥伴。我們最終是否會看到一個轉折點,這個轉折點讓我們承認,人類和計算機的夥伴關係不僅僅是其各部分的總和。

L-system 在建築設計中的應用

建築一直都離不開技術的影響。如今電腦技術已經為建築界帶來了許多改變,但它依然潛力無限,甚至可能徹底動搖建築界的基礎規則。

Michael Hansmeyer 是一位建築師和程式設計師,他探索使用演算法和計算來生成建築形式。受到了細胞分裂的啟發,Michael Hansmeyer 寫下了擁有驚人豔麗的造型和無數刻面的設計運演算法則。沒人能將他們手繪出來,但它們確實可以被做出來——它們也可以向常規的建築形態掀起思想狂潮。

149-a0a115810ac3363e.jpg
149-b1c62fa564706798.jpg

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

Michael Hansmeyer:塑造不可思議

L-systems 在音樂中的應用

使用 L-system 輔助生成音樂片段的研究由來已久。

Przemyslaw Prusinkiewicz 在 1986 年的論文 Score generation with L-system 中探討了用演算法生成樂譜的方法:用 L-system 生成字元符號,再講符號解析成一系列的音符

149-0ebee7a98db7b24f.png
The score associated with the Hilbert curv in the common musical notation

隨著技術的演進,生成式音樂、演算法作曲越來越成熟,架構也越來越複雜,L-system 依然被用作規則和語法生成的方式:

149-ceba8f5bfeed797f.png

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

Ref


00 的文集

149-dee76c4917db80a9.png

相關文章