2017-03-01

L-system

例えば、Twitter アカウント @LSystemBot が紹介しているこのような式を目にして、Houdini の L-System で実装したい場合の方法を紹介する。




使用したビルド: Houdini 15.5.717

1. Houdini の L-System

Houdini での L-System は以下の方法で作成する。

  1. Create シェルフで L-System ツールを Ctrlキーを押しながらクリック。
      ビューポートにはL-system による樹木形状が表示され、ネットワークエディタにはこのノードである lsystem_object1 が出来る。
  2. Network エディタで lsystem_object1 ノードを選択し、ダブルクリックするなり、I キー押すなりして中に入る。
      中には lsystem1 ノードがある。
        なお、L-system ノードのギアアイコンをクリックすると下の方にプリセットがリストされている。

        これらを試してみるのも良い。
  3. lsystem1 ノードを選択。
      Geometry, Tube, Values、Funcs, Rules の4つのタブがある。まずは、
      • Geometry タブ以下に Generation (世代)
      • Values タブ以下に Angle (角度)
      があることを覚えておく。
  4. Rules タブに行く。
      デフォルトでの設定は以下の通り。

      つまりこの式のセットが、Geometry タブや Values タブの設定と併せて、ビューポートの樹木形状を定義している。

      ただしこれは Twitter で見た式とは書式が大きく異なる。次にその変換方法を紹介する。

2. 式の変換

上記画像にある Houdini のデフォルトのL-System の式設定を LsystemBot の書式にすると大体以下のようになる。

{"start":"FFFA","rules":{"A":"!"[B]////[B]////B","B":"&FFFA"},"a":28,"iter":7}

つまり

  1. start のあとに定義されているのが Premise。
  2. rules 以下の括弧({から})の中 、コンマで区切られた式がそれぞれ Rule 1, Rule 2, ... となっていく。
  3. '"'(二重引用符) は不要、':' (コロン)を '=' で置き換える。
  4. a が Angle (Valuesタブ)、iter が Iteration (Geometry タブ)。

よって、LSystemBot の一行の式

{"start":"F","rules":{"F":"-FFFF","N":"-++FFF-"},"a":173,"iter":7}
から Houdini 形式に変換する場合、次の要領になる。
  1. まず、最初と最後の括弧({ })を削除、コンマを改行で置き換える。
      "start":"F"
      "rules":{"F":"-FFFF"
      "N":"-++FFF-"}
      "a":173
      "iter":7
      
  2. '"'(二重引用符) を削除、':' (コロン)を '=' で置き換える。
      start=F
      rules={F=-FFFF
      N=-++FFF-}
      a=173
      iter=7
      
  3. rulesの前後のの括弧({ })を削除、各行をぞれそれ Rule 1, Rule 2, ... とみなし、Houdini の UIラベルで置き換えれば以下のようになる。
      Premise: F
      Rule 1: F=-FFFF
      Rule 2: N=-++FFF-
      Angle: 173
      Iteration: 7
      
  4. それぞれ Houdini のUI に挿入してみる。

    Angle (Values タブ)と Iteration (Geometry タブ: この場合デフォルトのままなので変更不要)も忘れずに。
すると以下のような結果になる(Front ビュー)。

他のも同じ要領で作成可能。

3. おまけ

Wikipedia にある式も同じ要領で使うことが可能。

例えば、Example 5 の Sierpinski triangleは、以下の要領で実行可能。

    Premise: FG
    Rule 1: F=F-G+F+G-F
    Rule 2: G=GG
    Angle: 120
    Iteration: 7
    
    注意: Wikipedia からコピペする場合、'-' (マイナス) がハイフンになっているので置換する必要あり

ただし、ズームインすると一筆書きで書かれていることがわかり、面を作ってはいない。

面を作成するにはまったく別の処理が必要。これはまた別の機会に。

0 件のコメント:

コメントを投稿