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