生成式藝術和演算法創作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 的文集
相關文章
- 彩色藝術創意Mac動態桌布Mac
- 神經風格遷移:使用 tf.keras 和 Eager Execution,藉助深度學習創作藝術作品Keras深度學習
- CSS奇思妙想 -- 使用 CSS 創造藝術CSS
- 使用神經網路生成抽象隨機藝術神經網路抽象隨機
- 五個超讚的字元藝術生成器!字元
- Amadine Mac:用創新技術重塑繪圖藝術Mac繪圖
- 在矩池雲使用Disco Diffusion生成AI藝術圖AI
- 【演算法框架套路】回溯演算法(暴力窮舉的藝術)演算法框架
- 機器學習演算法已能發現藝術歷史學家從未注意的畫作亮點機器學習演算法
- EasyNLP中文文圖生成模型帶你秒變藝術家模型
- 編寫小而美函式的藝術函式
- 如何在3D空間打造2D藝術,《Season》插畫外觀創作分享3D
- 影象濾鏡藝術---ZPhotoEngine超級演算法庫演算法
- WPS 2007藝術字的實用操作技巧
- 程式設計師和程式藝術家程式設計師
- 【原創】VB P-code -- 虛擬機器的藝術虛擬機
- 作為第九藝術,遊戲的傳達能力是否受限?遊戲
- 中國人工智慧學會通訊——人工智慧科學與藝術的鑑賞創作 1.3 人工智慧為什麼可以用在藝術鑑賞上...人工智慧
- 分散式 ID 生成演算法 — SnowFlake分散式演算法
- python列表生成式和生成器Python
- Unity 渲染流水線 :CPU與GPU合作創造的藝術wfdUnityGPU
- 【原創】生成n*n蛇形矩陣的演算法矩陣演算法
- 加密的藝術加密
- Supersonic 推出遊戲創意生成器,AI 助力激發開發者創作靈感遊戲AI
- 童欣:深度學習和人工智慧,如何改變圖形的生成與創作深度學習人工智慧
- NFT生態藝術開發丨NFT數藏藝術丨NFT生態藝術系統開發技術
- 第二屆中國原創藝術類精品遊戲大賽徵集書遊戲
- 創業估值是一門藝術,看資料更看人品創業
- Kotlin藝術探索之引數和異常Kotlin
- Reverse原理背後的數學和魔幻藝術
- 電子檔案整理有科學和藝術?
- 加密的藝術:密文的建立和校驗加密
- 技術選型的藝術
- 搞懂分散式技術12:分散式ID生成方案分散式
- 命令列的藝術命令列
- 授權的藝術
- 軟體藝術 (轉)
- 最小生成樹——Prim演算法和Kruscal演算法演算法