山里ぽん太L-System First Step18 August 2018 |
山里ぽん太はL-Systemの勉強を始めました。 |
![]() ![]() |
Chapter 1 L-System | ||||||||||||||||||||||||
リンデンマイヤーさんが提唱したL-Syatem は、「形式文法の一種で、植物の成長プロセスを初めとした様々な自然物の構造を記述・表現できるアルゴリズム」なのだそうです。なんだかムズイです。 Houdini には、「L-System」ノードがあって、亀さんが歩いた足跡で絵を描く「タートル・グラフィクス」が使えます。 というわけで、「L-System」というよりも、「Houdini の L-Syatem ノード」の勉強を始めました。 まずは、Houdini のリファレンスの「L-System geometry node」のページを読んで、書かれている作例やなんかを実際に作ってみることにしました。 | ||||||||||||||||||||||||
Chapter 2 リファレンスの作例その1 | ||||||||||||||||||||||||
というわけで、最初の作例です。
という作図をします。 これを、L-System の文法で書くと、こうなります。
これを、Houdini の L-System ノードのパラメータに書くと、こんな絵を描いてくれます。 ![]() | ||||||||||||||||||||||||
Chapter 3 リファレンスの作例その2 | ||||||||||||||||||||||||
次は、「置き換え」の文法です。 文法と言っても、テキストエディタの「置換 replace」機能です。 「A」と一文字だけ書かれたテキストファイルがあるとします。 そのテキストの中の「A」の文字を「F+A」という文字に置き換えます。 すると、「F+A」とだけ書かれたテキストファイルになります。 もう1回置換します。 すると、「F+F+A」とだけ書かれたテキストファイルになります。 もう1回置換します。 すると、「F+F+F+A」とだけ書かれたテキストファイルになります。 こーんな感じです。
で、「A」「F」「+」に、こんな意味づけをします。 「A」は「なにもしない」 「F」は「一歩進む」 「+」は「右を向く」 こんな感じになります。
Houdini の L-System ノードのパラメータに書くとこんな感じです。
7回繰り返すと、こんな絵を描いてくれます。 ![]() | ||||||||||||||||||||||||
Chapter 4 リファレンスの作例その3 | ||||||||||||||||||||||||
次の作例は「コッホ曲線」です。
二次のコッホ曲線です。 ![]() リファレンスには、「指数関数的に生成される数が増えていくので、Houdiniでこのコッホ曲線を試す際は、 Generations パラメータを3よりも大きくしないでください。」と書かれています。 うっかり Generations パラメータを「7」(デフォルト)で試してしまったのですが、あちらの世界へ行って帰ってきてくれなくなりました(笑)。 | ||||||||||||||||||||||||
Chapter 5 リファレンスの作例その4 | ||||||||||||||||||||||||
次の作例は、「枝分かれ」です。 '[ ]'で囲ってあげると、その部分は、「枝」になります。 作例はこんな感じです。
となります。 こんなのを描いてくれます。 ![]() | ||||||||||||||||||||||||
Chapter 6 リファレンスの作例その5 | ||||||||||||||||||||||||
次の作例です。
![]() 地味です(笑)。 学校の授業中は睡眠学習をしていた僕は眠くなります(眠)。 ところで、「F」とか「+」とかは、「タートル・コマンド」と言うそうです。 | ||||||||||||||||||||||||
Chapter 7 リファレンスの作例その6 | ||||||||||||||||||||||||
次の作例です。 ようやっと 3D です(笑)。 3D 用のタートル・コマンドが登場します。 が、しかし、コマンドというよりは、「記号」です(笑)。
「"」は、置き換えのたびに小さくして〜、っていう呪文です。 「&」は、垂直に曲がって〜、っていう呪文です。 「/」は、回転して〜、っていう呪文です。 描くとこうなります。 2次、つまり置き換えを2回した絵です。 ![]() 7次、つまり置き換えを7回した絵です。 ![]() | ||||||||||||||||||||||||
Chapter 8 リファレンスの作例その7 | ||||||||||||||||||||||||
次の作例です。 タートルコマンド「{」は、ポリゴンを作ってくれます。 スゴイです。 L-System で Houdini をコントロールできちゃいます。 「.」は、ポイントを作って〜、っていう呪文です。
![]() | ||||||||||||||||||||||||
Chapter 9 リファレンスの作例その8 | ||||||||||||||||||||||||
次の作例です。 タートル・コマンド「J」「K」「L」は、「Copy to Point」ノードみたいに、ジオメトリをスタンプしてくれます。 L-System で作った枝に、L-System で作った葉っぱと花を散りばめてみました。 キレイです。 ちょっとだけ目が覚めました(笑)。
![]() | ||||||||||||||||||||||||
Chapter 10 リファレンスの作例その9 | ||||||||||||||||||||||||
次の作例です。 「エッジの書き換えというテクニック」だそうです。 これを書いている時点では、「エッジの書き換えというテクニック」が、どんなテクニックなのか、わかりません(笑)。 リファレンスに書いてある通りに試してみると、こんなことになります。
![]() | ||||||||||||||||||||||||
Chapter 11 リファレンスの作例その10 | ||||||||||||||||||||||||
次の作例です。 メタボールの境界で、L-Syatem の成長を止める、というものです。 いやー、メタボールって、初めて使いました(笑)。 そういえば、ボリューム関係は、ぜんぜん勉強していないです(笑)。 こんな感じです。
![]() | ||||||||||||||||||||||||
Chapter 12 おわりに | ||||||||||||||||||||||||
というわけで、「L-System geometry node」のページに書かれた作例は、以上です。 超簡単ですが、これで終わります(笑)。 終わりますが、L-System はこれで終わりではありません。 | ||||||||||||||||||||||||
Chapter 13 メモ | ||||||||||||||||||||||||
① 「L-System」ノードは、ほかのジオメトリノードを代替できそうです。 たとえば、「Curve」ノードの丸い絵を描く機能は「L-System」ノードで実現できますし、「Copy to Points」のスタンプ機能も、ある程度は「L-System」ノードで代替できます。 とは言うものの、ノードを一目見て、どんな機能を実現しているかがわかる、という点では、「Curve」ノードなどの専門家のノードを使う意味がありますし、「Copy to Points」ノードの「Pack and Instance」機能は「L-System」ノードでは代替できません。 そして、おそらく、スピードが速いとか、メモリの使用量が少ないとかでは、「Curve」ノードや「Copy to Points」ノードなどの専門家のノードのほうが、ずっと優れていることでしょう。 ② L-System を使いこなすのはちょっとたいへんそうですが、タートル・グラフィクスは、すぐに使えそうです。 たとえば、周囲にぎざぎざのついた葉っぱとかは、Adobe Illustrator だと描くのをためらってしまったり、報酬額を見てしまったり(笑)してしまいますが、タートル・グラフィクスなら、数回の試行錯誤で描けてしまいそうです。 しかも、Houdini の中で描けてしまうので、すぐにポリゴンにして、厚みをつけたり、反らせたり、すぐにダイナミクスで舞わせてみたり、と、いろんなことができちゃいそうです。 | ||||||||||||||||||||||||
Chapter 14 最後にひとこと | ||||||||||||||||||||||||
to be continued . |