生成式藝術和演算法創作07 L-system
- 生成式藝術和演算法創作01-概述
- 生成式藝術和演算法創作02-隨機和噪聲
- 生成式藝術和演算法創作03-混沌和分形
- 生成式藝術和演算法創作04-規則系統
- 生成式藝術和演算法創作05-Tessellation
- 生成式藝術和演算法創作06-形狀語法
Lindenmayer system,簡稱 L-system,是由荷蘭烏特勒支大學的生物學和植物學家,匈牙利裔的 Aristid Lindenmayer 於 1968 年提出的有關生長髮展中的細胞互動作用的數學模型,被廣泛應用於植物生長過程的研究和建模,也常用於模擬各種生物體的形態。
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 生成迭代過程的:
L-system 規則是:F→F+F--F+F。想象一下有一隻烏龜?,當它接收到指令 F 時向前走,接收到指令 + 號就左轉 60°,- 號右轉 60°:
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°
如果 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
L-system 已經是很成熟的演算法,組合不同的規則、尺寸、角度和迭代次數,可以生成變化多樣、富有美感的生成式圖形。
Christa Sommerer 和 Laurent Mignonneau 研究互動式植物生成過程,採集人在環境中的移動等資料作為引數,加入到生成式演算法中。
Interactive Plant Growing - YouTube
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
- 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
00 的文集
相關文章
- 華熙趙燕參與“此時此刻”跨界藝術作品創作
- 隋廣義先生創作的《百花花貴圖》系列藝術品何以被稱為新時代藝術的象徵?
- 神經風格遷移:使用 tf.keras 和 Eager Execution,藉助深度學習創作藝術作品Keras深度學習
- 彩色藝術創意Mac動態桌布Mac
- Amadine Mac:用創新技術重塑繪圖藝術Mac繪圖
- 使用神經網路生成抽象隨機藝術神經網路抽象隨機
- CSS奇思妙想 -- 使用 CSS 創造藝術CSS
- 分散式 ID 生成演算法 — SnowFlake分散式演算法
- 在矩池雲使用Disco Diffusion生成AI藝術圖AI
- python列表生成式和生成器Python
- 07函式函式
- 結對作業07
- 【演算法框架套路】回溯演算法(暴力窮舉的藝術)演算法框架
- 如何在3D空間打造2D藝術,《Season》插畫外觀創作分享3D
- EasyNLP中文文圖生成模型帶你秒變藝術家模型
- 編寫小而美函式的藝術函式
- 07:函式之函式的引數和返回值函式
- 微軟:生成式人工智慧、心理健康和安全技術微軟人工智慧
- 影象濾鏡藝術---ZPhotoEngine超級演算法庫演算法
- 深入探討數字科技下的藝術品價值,數字藏品機構藝祈愛出席生成藝術線上研討會
- HelloDjango 第 07 篇:創作後臺開啟,請開始你的表演!Django
- 只要一句話,為你生成創意畫作
- 自媒體創作技巧:標題和圖文怎麼創作?
- 中電金信:資料管理的“工藝”和“柔”性藝術
- 童欣:深度學習和人工智慧,如何改變圖形的生成與創作深度學習人工智慧
- 搞懂分散式技術12:分散式ID生成方案分散式
- Kotlin藝術探索之引數和異常Kotlin
- 最小生成樹——Prim演算法和Kruscal演算法演算法
- 最小生成樹-Prim演算法和Kruskal演算法演算法
- 最小生成樹:Kruskal演算法和Prim演算法演算法
- 作為第九藝術,遊戲的傳達能力是否受限?遊戲
- Maxon Cinema 4D 2024:創意無限,藝術無界
- Unity 渲染流水線 :CPU與GPU合作創造的藝術wfdUnityGPU
- python 生成器 和生成器函式 以及各種推導式Python函式
- 加密的藝術加密
- Reverse原理背後的數學和魔幻藝術
- 加密的藝術:密文的建立和校驗加密
- Kotlin藝術探索之流程控制和運算子Kotlin