Houdini Advent Calendar2016 15日目に参加しました。
Houdiniノード勉強回。
テーマはL-System。
反復処理されるルールによって、枝分かれする現象を表現できるヤツ。
使えそうに見えて使いどころが難しい、そんな機能かと。
基本的にL-system(SOP)ノードだけで、作ることができます。
まずは概要から。
L-Systemの作成には大きく3つの工程があると、私は思っています。
1:どのようなルールで作るか(パターン)
2:どのような数値を設定するか(長さ、角度、減衰、増幅など)
3:それを何回繰り返すか
1:「どのようなルールで作るか」を決めるのがパラメータTabの右端の”Rules”。
これでパターンのルールを決めます。以下、簡単な解説。
Premise・・・初期状態
Rule # ・・・L-Systemのルール。ここで記述したルールに基づいて生成される。
Ruleの記述は、意味を持つ文字をいくつも並べて記述してゆきます。
| F | 1step進んで、そこまで線描画 |
| f | 1step進んで、描画しない |
| + | 回転 |
| – | 逆回転 |
| [ ] | 分岐作成 |
| “ | 長さにStep Size Scaleの値を乗算する。(長さの減衰、増幅) |
| ; | 角度にAngle Scaleの値を乗算する。(角度の減衰、増幅) |
| & | ピッチアップ |
| ^ | ピッチダウン |
| \ | ピッチダウン |
| / | 逆ロール |
まだまだありますが、あとはマニュアル参照。ポリゴンの面とかも生成できます。
2:次に、どのくらいの長さのラインを描くか、どのくらいの角度回転するかを定義するパラメータ群があるのが、Valueタブ。
この中でも角度を定義するAngleは図形の見た目に大きく影響します。
3:最後に、Geometryタブにある”Generations”で反復回数を決めます。ここで指定した回数、Rulesの処理を繰り返します。
Random ScaleやRandom Seedでランダムさを追加することもできます。
またノードに入力が4つあり、そのうち左側の3つはジオメトリの挿入に使用します。
左からJ,K,Mの文字に対応しており、ジオメトリをコネクトしてRule#に対応した文字を記述することで、ルール状の対応した場所にジオメトリを配置することができます。これを使って植物を作ってるのを見かけます。
あと、Lsystem(SOP)には、プリセットがいくつか組み込まれています。

例えば、↓のようなプリセットがあります。
ざっくりでしたが、L-Systemの概要は以上!
ここからは、標準プリセットにはない作例をどんどん載せていこうと思います。
Sample001 – Hilbert curve 2D
2次元のヒルベルト曲線
| Permise | A |
| Rule 1 | A = -BF+AFA+FB- |
| Rule 2 | B = +AF-BFB-FA+ |
| Angle | 90 |
| Generations | 3 |
Sample002 – Hilbert curve 3D
3次元のヒルベルト曲線(ポリゴンの厚み付けてます)
| Permise | A |
| Rule 1 | A = ^/AF^/AFA-F^\\AFA&F+\\AFA-F\A-\ |
| Angle | 90 |
| Generations | 3 |
Sample003 – Sierpinski gasket01
シェルピンスキーのギャレット
| Permise | A |
| Rule 1 | A=BF-AF-B |
| Rule 2 | B=AF+BF+A |
| Angle | 60 |
| Generations | 7 |
Sample004 – Sierpinski gasket02
シェルピンスキーのギャレット その2
| Permise | S-F-F |
| Rule 1 | F=FF |
| Rule 2 | S=F-S+S+S-F |
| Angle | 120 |
| Generations | 7 |
Sample005
名前ありそうだけど知りません。
| Permise | FA |
| Rule 1 | A=A+BF |
| Rule 2 | B=FA-B |
| Angle | 90 |
| Generations | 12 |
Sample006
| Permise | F++F++F |
| Rule 1 | F=F=F+F–F+F |
| Angle | 60 |
| Generations | 2 |
Sample007

| Permise | F++F++F |
| Rule 1 | A=!”[B]////[B]////B |
| Rule 2 | F=F+F–F+F |
| Angle | 60 |
| Generations | 5 |
Sample008 – ぐるぐる
カーブのぐるぐる
| Permise | A |
| Rule 1 | A=!”FFFB-A |
| Rule 2 | B=[C] |
| Rule 3 | C=!F+”C |
| Angle | 30 |
| Generations | 30 |
Angleの値を変えてアニメーションさせると面白い。
Sample009 – 四角
四角い奴。Generationsをアニメーションさせた。
| Permise | A |
| Rule 1 | A = [B]+A |
| Rule 2 | B = F+B |
| Angle | 90 |
| Generations | 0 -> 7 |
Sample010 – パイプ
パイプっぽいやつ。
| Permise | F |
| Rule 1 | F=FF/F+F^ |
| Angle | 90 |
| Generations | 5 |
Generationsをアニメーションさせて、動かすと面白い。




























Sample005にはドラゴン曲線という名前があるそうです。
教えていただいてありがとうございます。そんなカッコいい名前があったのですね。