L-systemを使った植物の描画

August 5, 2011
Floweriumを作る過程の話を書いていこうと思います。

まず初めに考えたのは、植物の描画方法でした。Floweriumの前身となるAsitisという作品では、蔦の伸びる様子をベジエのラインだけで表現しました。何となくそれっぽく見えるものの、植物が持つ有機的な整合性はあまり感じられませんでした。そこで植物の形状を記述する方法を探していて見つけたのが、L-systemという手法。(右の図はFloweriumの最も初期の状態です)



L-systemとは?
L-systemは植物学者のアリステッド・リンデンマイヤーという人が1968年に提唱した、自然物の構造を記述・表現できるアルゴリズムだそうです(Wikipediaの受け売り)。要素を記号で表し置き換えのルールを定義する事で、自然物の持つ自己相似形を表現しています。

たとえば、藻の繁殖はこのように記述できます。
要素:A(大人), B(子供)
初期状態:A
置き換えルール:(A → AB), (B → A)

時間 = 0 : A
時間 = 1 : AB
時間 = 2 : ABA
時間 = 3 : ABAAB
時間 = 4 : ABAABABA

最初に大人(A)の状態の藻があって、次にルールにしたがってAをABと置き換えると、大人から分裂して子供ができます。そして子供は成長し大人になり、また分裂する。という事を繰り返します。


Floweriumの成長ルール

Floweriumではこの方法を元に要素の置き換えを行い、植物を生長させています。具体的には、枝(B)・花(F)・葉(L)・右回転(+)・左回転(-)・成長点(G)と分岐の為に位置を記憶する記号([,])です。

この動画では、クリックする度に以下ようなルールが、50%の確率で適用されています。

■まっすぐな枝から曲がった枝が分岐する
( G ->[BG][-B-B] )

■二股に分岐して、花と葉がつく
( G -> [+BGF][-BLG] )

置き換えルールは初期状態では4種類ですが、突然変異によって変異する場合があります。新しくできたルールも次の世代に遺伝するので、ユーザー毎に多様な形状が生成されます。



02 : スピログラフと家紋を経て 》

Related Article