[初級]touchdesignerで植物をつくる！最強のL-system　枝編

#L-systemとは
wikipedia先生は
>L-system（エルシステム、Lindenmayer system）は形式文法の一種で、植物の成長プロセスを初めとした様々な自然物の構造を記述・表現できるアルゴリズムである。

と申しておりますが、ようは

<b>植物が作れる！</b>

ということです。

今回はこんなのが作れるようになります！
![TouchDesigner 2020.22080_ C__Users_22034_Desktop_touchdesigner_project_tdsw_L-system_qiita用_qiita.1.toe_ 2020_10_23 17_48_25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704869/2182de43-c457-885d-c431-1c4cd37fed40.png)


#touchdesignerでさっそく作ってみよう
とりあえず、作って詳しい解説はあとでします！
まずtouchdesignerを立ち上げて、デフォルトのオペレーターをすべて削除してください。
###L-system SOP
なんとtouchdesignerには、<b>L-system SOP</b>というSOPのオペレーターが存在します。なんと優秀なの。
それではさっそくL-system SOPを出してみましょう。

すると、こんなのが出てくるかと思います。
![TouchDesigner 2020.22080_ C__Users_22034_Desktop_touchdesigner_project_tdsw_L-system_qiita用_qiita.1.toe_ 2020_10_23 17_49_53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704869/51b9e38b-4e9b-21e3-f3d2-a5266d4171a4.png)


上のSOPは、<b>植物の角度や長さ、その他もろもろのパラメーター</b>をいじることができます。
そしておまけでついてきた下のDAT。
ここにL-system独自の記号を書いて、<b>植物の形</b>を決めていきます。
![TouchDesigner 2020.22080_ C__Users_22034_Desktop_touchdesigner_project_tdsw_L-system_qiita用_qiita.1.toe_ 2020_10_23 17_49_53_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704869/ecfb8f89-9c50-ace1-16b6-e51ffca7b76c.jpeg)


###SOPをいじる
L-system SOPの<b>Geometryパラメーター</b>をこのように設定してください。
![TouchDesigner 2020.22080_ C__Users_22034_Desktop_touchdesigner_project_tdsw_L-system_qiita用_qiita.1.toe_ 2020_10_23 17_53_12_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704869/35ead709-829d-b052-7efc-47da74c0be1c.jpeg)

同様に、<b>Valuesパラメーター</b>もこのように設定してください。
![TouchDesigner 2020.22080_ C__Users_22034_Desktop_touchdesigner_project_tdsw_L-system_qiita用_qiita.1.toe_ 2020_10_23 17_54_19_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704869/a2c484e3-8ec6-a714-5280-866a9fd4fe44.jpeg)


そして見やすくするために、L-system SOPの<b>右下の + ボタン</b>を押して、<b>オペレーター上で w キー</b>を押しましょう。すると、ワイヤーフレーム表示になります。見やすくするためです(しなくても良し)

###謎の記号を書いていく
次は下のDATに謎の記号を書いていきます。
とりあえず、
今、書かれているコードを下記に書き換えてください

```:lsystem1_rules
context_ignore:F+-
premise:FFFA

A="F[-A]///F[-A]///F[^(10)A]
```

気持ちはわかります。なに書いてんねんと。

<b>慌てないで!</b>

ちゃんと説明しますので笑

###Fは進む
まず最初の

```
context_ignore:F+-
```

これお決まりなので、無視して大丈夫です。


次の

```
premise:FFFA
```

ここでは<b>FFFA</b>という記号で、この植物の形を決めますということをいっています。
この<b>FはXY軸平面上をまっすぐ進みます。</b>このFがあるおかげでL-systemは<b>成長</b>していくんですね。
FFFと三回続くので、Fの<b>3倍</b>の長さ進みます。写真だとこんな感じ
![TouchDesigner 2020.22080_ C__Users_22034_Desktop_touchdesigner_project_tdsw_L-system_qiita用_qiita.1.toe_ 2020_10_23 17_56_31_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704869/52d06863-30f5-e6fc-e699-901196be9305.jpeg)


###枝分かれ
<b>A</b>というまたわからないやつ来ましたね。

<b>落ち着いて！</b>

次の文に書いてあります。

```
A="F[-A]///F[-A]///F[^(10)A]
```

最初の <b>"F</b>  は次のFにSOPのパラメーターにある<b>Step Size Scale</b>という割合をかけます。その割合の分だけ<b>短く</b>なります。

来ました <b>[-A]</b> 
<b>[]はブランチ</b>と言って、枝分かれをする記号です。
かっこの中の <b>-</b> は<b>回転</b>を表す記号です。具体的には、<b>Z軸周りに反時計に回転します。</b>
また A 来ましたね。これはさきほどの A と同じです。わかりにくい方は下の図で
![TouchDesigner 2020.22080_ C__Users_22034_Desktop_touchdesigner_project_tdsw_L-system_qiita用_qiita.1.toe_ 2020_10_23 18_00_00_LI (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704869/55e7cb63-4119-031a-74cf-180b9f65c879.jpeg)




勘のいい方はここで気づくのではないかと。
L-systemはこの<b>繰り返しの仕組みで枝を形成</b>しているのです。

###様々な回転軸
次に <b>/</b> が出てきます。これも回転の記号ですが、今回は、<b>Y軸周りに反時計回転です。</b>
これをすることにより、枝を<b>立体的</b>することが可能になります。

<b>///F</b>は/を3倍回転してF進みます。
![TouchDesigner 2020.22080_ C__Users_22034_Desktop_touchdesigner_project_tdsw_L-system_qiita用_qiita.1.toe_ 2020_10_23 18_08_06_LI (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704869/1e8ae8bc-c2f6-9a28-84eb-23a6cf057064.jpeg)



<b>回転するといっても何度回転すんだよと。</b>
それはSOPのValueパラメーターの<b>Angle</b>です。

その後、<b>[-A]</b> 
来ました。ブランチ。Z軸に回転してまた枝を作ります。

<b>///F</b> 
これも先ほど同様、Y軸回転して進みます。

<b>[^(10)A]</b>
これも先ほど同じブランチですが、見たことのないやつがひとつ。

<b>^(10)</b>

簡単に言うと、<b>X軸周りで10度、反時計回転</b>です。
回転の記号<b>-, /, ^の後に(数字)で角度を指定</b>できるんですね。
![TouchDesigner 2020.22080_ C__Users_22034_Desktop_touchdesigner_project_tdsw_L-system_qiita用_qiita.1.toe_ 2020_10_23 18_12_27_LI (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704869/7fe11144-d6ae-67a4-fd15-ab92729178df.jpeg)


###回転記号まとめ

| 軸 | 時計周り | 反時計周り |
|:-----------|:------------:|:------------:|
| X軸       | & |     ^     |
| Y軸     |      \\ |    /    |
| Z軸       |        + |     -     |
・(数字)で角度指定
・デフォルトはangle

###Generations
ここまで説明を聞いて、こう思った人もいるはず。

Aを繰り返してたら、無限に成長してまうやん。

でも、成長は止まってますよね、、、
これを制御しているのが、
SOPのGeometryパラメーターの<b>Generations</b>です(LDH好きは盛り上がってるはず)。
値が1ならAは繰り返されません。2になると1回繰り返し、3になると2回繰り返す。
といった感じで成長の世代を制御します。
![TouchDesigner 2020.22080_ C__Users_22034_Desktop_touchdesigner_project_tdsw_L-system_qiita用_qiita.1.toe_ 2020_10_23 17_53_12_LI (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704869/36660601-4d24-391d-2b53-4f0f232aa31c.jpeg)


#葉っぱをつけていく
ここまででこれと似たようなのができたと思います。
![TouchDesigner 2020.22080_ C__Users_22034_Desktop_touchdesigner_project_tdsw_L-system_qiita用_qiita.2.toe_ 2020_10_26 15_33_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704869/e247ef16-4e58-a694-dc1d-401c6e6c4af0.png)


植物なのだから、枝だけではさみしいですね。
<b>葉っぱ</b>をつけていきましょう。

といいたいところですが、葉っぱは次回にします。
ここからどんどんクオリティが上がっていきます！

それでは次回↓↓↓↓
[[初級]touchdesignerで植物をつくる！最強のL-system　葉編](https://qiita.com/miwa_maroon/items/ea85a25ca720dbb62dd0)