ニッチなblender手記

世の中には自分に似た人が3人いるとされています。その人達へと情報共有するために主にblenderの記事を書いていきます。

loose usage about The Grove (Thicken)

概要

ここでは The Grove アドオンの Thicken(厚み) 機能に絞って記述する。
機能上、枝の太さを変えることができる唯一のパラメータとなっている。

f:id:r9aArrowhead:20210427233655j:plain

木の厚みとは何か?

樹木が高く成長するのは特に説明もないと思う。
高く成長するということは、樹木全体の重さが増す。重さが増せば、それを支えるだけの土台が必要となる。自身を支えるために全体が太く大きくなる。
Thicken(厚み) はこの現象を表現するためのパラメータであり、知見に富んだ方には 肥大成長を司るパラメータ と言った方が伝わるのかもしれない。

参考までに、縦に伸びる成長は先端成長と呼ばれる。 先端成長は GrowFavor が担っている。

参考

Wikipedia - 肥大成長

利用環境

  • blender 2.91
  • The Grove release 9 & 10

各パラメータまとめ

  • Boost: 木全体の太さを増加させる。 The Grove 10 からはこのパラメータは廃止された。
  • Tips: 枝の先端に新たにできたばかりの枝の太さを決定する。
  • Reduce (Decrease): Tips の太さを割合で細くする。太くはならないので注意。
  • Join Branches: 枝分かれ時のそれぞれの枝の太さを増加させる。
  • Deadwood: 木全体の太さを増加させる。ただし、枯れた枝がなければ効果がない。
  • Base Scale: 根本部分の広がりの大きさを増減する。
  • Shape: 根本部分の太さを補正する。
  • Root Bumps: Base Scale の結果を増幅させる。

Boost

The Grove 10 からはこのパラメータは廃止された。

幹と(亜)主枝の太さを増幅するパラメータ。
プロパティのスライダーでは 0.0 - 1.0 の間で調整可能だが、 直接数値を指定すれば 1.0 以上の指定もできる。

完全なスケールでの指定にすると、0.0の場合に太さ = 0 となるから?

ではどれぐらい太さが変わるのかというと、概ね 指定した値 + 1 倍ほど変わっている。
手っ取り早くものすごい巨木を作りたい場合は、この値を上げれば見た目上は巨木っぽい感じにすることができる。

このパラメータは twig や 枝の中間部分以降には影響がない点に注意。
枝全体の太さを変えたい場合は他のパラメータを用い、twig の太さを変えたい場合は twig の元となっているモデルそのものを変形する必要がある。

枝の伸び方は気に入っているが太さが足りないという場合はこのパラメータを使えば改善が見込める。
下図を見れば分かるように、元の数値にスケールをかけていくような処理になっているようなので元の枝がそもそも細い場合は効果が薄い。

f:id:r9aArrowhead:20210427233703j:plain f:id:r9aArrowhead:20210427233708j:plain f:id:r9aArrowhead:20210427233716j:plain f:id:r9aArrowhead:20210427233723j:plain f:id:r9aArrowhead:20210427233729j:plain

Tips

Tips(=先端) の名前の通り、枝が成長して伸ばした枝の初期状態の太さを決定する。

新しく枝を伸ばした場合、システム的には Grow パネルで設定した内容で既存の枝へ新規ノードを追加する。 この新規で追加したノードの、最初の太さを決定するプロパティとなる。

先端の枝というのは、木の中でも最も成長する部分となっているが、これを The Grove ではシステム的に解決している。
Flow の項目で Favor についての設定がいくつか存在したが、これが密接に関わっている。
例えば Favor Bright は光へ向かって伸びる強さを示しているが、この強さの最終的な値が光へ向かって新たに枝を伸ばすかを決定している。
この内部の最終的な値が一定以上の大きさとなって枝が伸びる場合にのみ、このプロパティは参照されることとなる。 Favor Bright を例として利用したが、日陰に存在する枝であったとしても最終的な値が一定以上あれば枝を伸ばすことになるためここでのプロパティが適用される点には注意すること。

内部処理的には power >= 1.0 の時にここで指定した値の太さ(=width)で新規にノードを追加する。

このプロパティはここでのみ参照されると書いたが、厳密には後述の Decrease にも影響を与える。 どう関わるのかは Decrease にて記述する。

注意点

上述の通り、このプロパティは枝の発生時の太さを決定する。
少しこのアドオンを動かせば見て取れるように、木は成長すると共に枝の長さだけではなく太さも増していく。

Thicken には木の成長時の太さの成長を制御するパラメータは存在しない。
しかし、存在しないわけでもない。
アドオンで木を成長させる時に利用している Grow コマンド実行時に既存の枝の太さを調整している。
この処理に関しては完全なブラックボックスになっているので、 Th Grove のパネル上からでは操作はできない仕様となっている。

だからといって完全に制御不可能かと言われるとそういうわけではない。
Grow ボタンを押した場合の成長は、既存の枝の状態を元としている。
要は元の枝が細くすればいいので、 Thickness 関連の設定内容が活きてくることになる。

f:id:r9aArrowhead:20210427233736j:plain f:id:r9aArrowhead:20210427233746j:plain f:id:r9aArrowhead:20210427233832j:plain f:id:r9aArrowhead:20210427233838j:plain f:id:r9aArrowhead:20210427233843j:plain

Reduce (Decrease)

The Grove 10 からは名称が Reduce へ変わっているので注意。

枝が先端に新規ノードを追加した時、つまり新しく枝を伸ばした部分の初期の太さを減衰させるパラメータ。
枝に光が十分指していないなどで成長に必要な栄養が十分に届いていない場合の表現に用いる。
あるいは見た目以上に木が老化しているなど、なんらかの理由で枝が伸ばす力が衰えている表現などにも用いることができる。
要は、 本来成長するはずだった内容よりも弱い成長になる。

Tips の項で少し説明したが、このパラメータは Tips の影響を受ける。
というのも、新しく伸ばした部分は 100%栄養が行き届いた状態の成長 = Tipsで設定した太さになる となり、 Decreaseの最大値 = Tips(100%) * 設定した値 という状態となる。
例えば 'Tips = 20mm, Decrease = 0.5' という設定をした場合、新しく枝が伸びた部分の太さは max = 20mm, min = 10mm (20mm * 0.5) の範囲で枝を伸ばす。

より正確には、tips の時と同じく成長する力を示す内部パラメータである power が減少すると Decrease による補正が大きくなる。
内部処理的には power < 1.0 の時に Decrease * (1.0 - power) * Tips で新規にノードを追加する。  
power >= 1.0 の時は Tips の設定値そのままの太さで枝を伸ばす。

ちなみにマイナスの倍率を設定すると、日陰などの枝の方が太い枝を伸ばすという現象を作り出すことができる。

注意点

このプロパティは Tips 同様に枝の発生時の太さを決定する。
木が成長すると共に枝の長さだけではなく太さも増していくのは Tips の時と同じ。

f:id:r9aArrowhead:20210427233848j:plain f:id:r9aArrowhead:20210427233855j:plain f:id:r9aArrowhead:20210427233900j:plain

Join Branches

名称が Join となっているが、実際には枝分かれ時の厚みの制御する。
見た目上は枝が合流した先の太さが変わるので、名称が間違っているわけではない。

木の先端から見ていく考えならば、枝が join していることになるから。

木が上方向かつ水平方向へ成長していく際に一つの枝の先で複数の芽が出て枝分かれを起こすことがある。

Add -> Fork がその設定に該当する。

この時に枝は元の太さを維持したまま枝分かれを起こすわけではなく、互いに元の枝の太さを分け合うような形で成長を続けていく。
木は先端へ向かうにつれて枝が細くなるような形になるが、これは枝の先端へいくほどほど若いことを示している。
これを再現するためのプロパティとなっているのが Join Branches である。

ついでに言うと、自重を支える必要があるため木は成長を続けると全体的に太くなっている。 幹や枝の皮が剝がれている木を見かけることがしばしばあるが、あれは内側から成長した結果皮が裂けたためああなっている。

このプロパティの数値を増減することで枝分かれした時の枝の太さをある程度増減することができるようになる。 ただし制御には注意点が3点ある。

1つ目は、どちらか一方だけの枝を太くするというような細かい制御はできず、常に枝分かれした枝全体の太さを増減するような制御となることには注意が必要となる。

2点目は、枝分かれした先の枝が枯れた場合、枝分かれによる太さの再計算がキャンセルされる点にあり、こちらは少し解説を付け加える必要がる。
下図のように枝が分かれているにも関わらず枝分かれした先の枝が枯れてしまった場合は、生き残っている方がそのまま枝分かれをしなかったかのような太さで成長を続けることになる。
門外漢なので専門的な知見からこれの正誤は判断できないが、少なくとも The Grove の仕様上はこうなっていると覚えておく必要がある。

f:id:r9aArrowhead:20210427233906j:plain

3点目は、このパラメータによって枝の太さを太くすることで、枝が曲がりにくくなる。
枝が太くなったのでそれだけ丈夫になるわけだから、重力などの影響による歪曲も少なくなる。

f:id:r9aArrowhead:20210427233911j:plain f:id:r9aArrowhead:20210427233917j:plain f:id:r9aArrowhead:20210427233923j:plain

Deadwood

植物学的にどの現象に類するものか分かりにくいのであまり調べられなかったが、恐らくはカルスによる枯れた枝や剪定で傷ができた部分に対する肥大化のことだと思われる。

アドオンでは、枯れた枝や Drop などで剪定した枝があった場合にその枝が生えていた親の枝を太くする度合いを決定するパラメータという主旨の説明がされている。
実際にパラメータを変えて確認したところ、この設定値を上げることで枯れたり剪定された枝の分だけ親の枝が太くなった。

このパラメータの面白いところは、値が 0 だと木は成長しても全く枝を太くさせないところにある。
つまり、 TipsReduce では枝の太さの成長を調整できず、成長による枝の太さを調整する唯一のパラメータということになる。

Join Branches はあくまでも元の枝から分化した際の太さを決めるものなので、成長による枝の太さには関係しない。

f:id:r9aArrowhead:20210427233930j:plain f:id:r9aArrowhead:20210427233935j:plain f:id:r9aArrowhead:20210427233940j:plain f:id:r9aArrowhead:20210427233947j:plain

Base Scale

根本のスケールを変えるプロパティ。
ここでいう根本とは、 The Grove が地表付近を覆うメッシュ部分を作成する時のものを指す。 しかし現実の木々のような根っこが波打つような感じにはならないので注意。

f:id:r9aArrowhead:20210427233951j:plain f:id:r9aArrowhead:20210427233956j:plain f:id:r9aArrowhead:20210427234001j:plain

Shape

根本から主枝までへと伸びていく際の枝の太さを変えるプロパティ。
Base Scale に影響を受けるプロパティで、 Base Scale の大きさが最大値となって上へいくほど細くなっていくという性質をもっている。

数値が極端に低い場合は根本から円錐状になるが、補正値が大きのか少しでも値を上げると普通の枝のような形に落ち着くようになっている。

f:id:r9aArrowhead:20210427234007j:plain f:id:r9aArrowhead:20210427234012j:plain f:id:r9aArrowhead:20210427234017j:plain f:id:r9aArrowhead:20210427234022j:plain f:id:r9aArrowhead:20210427234029j:plain

Root Bumps

根本の領域を補正するプロパティ。
値を大きくすると根本の領域が拡大する。

CGをやっていると 'Bumps' とあるのでバンプマップのことかと勘違いするかもしれないが、特にバンプの効果はない。

f:id:r9aArrowhead:20210427234034j:plain f:id:r9aArrowhead:20210427234116j:plain f:id:r9aArrowhead:20210427234120j:plain f:id:r9aArrowhead:20210427234126j:plain f:id:r9aArrowhead:20210427234131j:plain f:id:r9aArrowhead:20210427234140j:plain

注意点

Thicken の中でも主に根本の部分を調整する Base Scale Shape Root Bumps だが、3つ全てが相関関係にある。

下図は Base ScaleRoot Bumps を最大に、 Shape を最小にした場合の結果となる。
Base ScaleRoot Bumps で作成された根本部分を元にして Shape の結果が作成されていることが分かる。

f:id:r9aArrowhead:20210427234146j:plain

loose usage about The Grove (Turn)

概要

ここでは The Grove アドオンの Turn 機能に絞って記述する。

f:id:r9aArrowhead:20210312192941j:plain

参考

THE GROVE - Grow

Youtube - Negative Gravitropism | Demonstration

Youtube - Positive Phototropism | Demonstration

重力屈性

公益社団法人日本農芸化学会 - 植物の重力屈性の分子メカニズム根が地中に潜り茎が空へ向かうしくみ

Wikipedia - 光屈性

利用環境

各パラメータまとめ

Turn は全体として、既存の枝の成長内容を調整するパラメータとなっている。
新規に発生した枝の内容を調整するパラメータは Add

  • Up: 重力屈性。枝の成長がどれぐらい重力屈性を持っているかを指定する。正の数値を指定すると上方向に成長する。影の度合いによってこの値は減衰し、設定値は完全に日が差している状態の時のものを設定するようになっている。
  • Up to Shade: 日陰時の重力屈性。 Up とは効果が重複する。影の度合いによってこの値は増大し、設定値は完全に日陰に入っている状態の時のものを設定するようになっている。
  • To Horizon: 傾斜重力屈性。値が大きいほど、枝は発生した位置から水平方向へ伸びようとする。 ただし、 The Grove においてはこの値は、日陰の時だけ有効となり、値による影響は主枝にも反映される。
  • To Light: 光屈性。値が強いほどより光がある方へ枝を伸ばそうとする。 The Grove は独自のレイトレースを搭載しているため、ライトオブジェクトなどには反応しない点に注意。
  • Pitch: 枝が伸びる際のピッチ角(≒垂直角度)にランダムな角度を追加する。
  • Heading: 枝が伸びる際のヨー角(≒水平角度)にランダムな角度を追加する。

重要ワード

屈性

植物は光や重力、接触刺激などの外部刺激によって、成長する方向をたえず変化させる。この性質を屈性と呼ぶ。 屈性には大別して 重力屈性光屈性 が存在する。

重力屈性(gravitropism)

重力屈性は重力によって引き起こされる屈性。
植物の茎は重力とは逆向きに、根は重力の向きへ伸張する性質を持つ。

一般に重力に抗うようにして反対方向へ枝を伸ばすことを 負の重力屈性(Negative gravitropism)、重力に従って伸ばすことを 正の重力屈性(Positive gravitropism) と呼ぶ。

傾斜重力屈性(plagiotropism)

幹、主枝、主根および主茎は重力に正および負の方向に成長する。
一方で側根および側枝は一定の角度を保って傾斜して成長する。
これも重力応答により制御されており, 傾斜重力屈性 と呼ばれる。

光屈性(Phototropism)

またの名を 向光性とも呼ぶ。

光屈性は光によって引き起こされる屈性で、窓辺に鉢植えをおいておくと植物は茎や葉を窓のほうへ向けるように曲がる。
より正確に言えば、光がある方向へ枝を成長させる。

重力屈性 と異なり、光の差す方向へ枝を伸ばすことを 正の光屈性(Positive Phototropism)、その反対を 負の光屈性(Negative Phototropism) と呼ぶ。

Up

ノード(≒枝)が成長する時の向きを修正する。
正確には gravitropism(重力屈性) の値を設定する項目となっている。

gravitropism(重力屈性) は言い換えるとどれぐらい重力に従って曲がるか の指数。
地球上で植物が成長する限り植物が上へと成長するには重力に逆らう必要がある。この重力への反発具合を表したもの。 正の方向へ値を指定すると重力に逆らって枝が上方向へ伸びるようになる。
負の方向へ値を振ることで、枝の成長が重力の方向に従って(≒重力に負けて)伸びるようになる。

学術的には重力に逆らって上方向へ伸びることを negative gravitropism、 重力に従い下方向へ伸びることをpositive gravitropism と呼称する。 名前と値の指定方法を関連付けて覚える時は注意が必要。

f:id:r9aArrowhead:20210312192949j:plain f:id:r9aArrowhead:20210312192956j:plain f:id:r9aArrowhead:20210312193004j:plain f:id:r9aArrowhead:20210312193010j:plain f:id:r9aArrowhead:20210312193017j:plain f:id:r9aArrowhead:20210312193024j:plain f:id:r9aArrowhead:20210312193031j:plain f:id:r9aArrowhead:20210312193039j:plain f:id:r9aArrowhead:20210312193056j:plain

Up in Shade

上記 Up の Shade版。陰になっている状態での重力屈性を設定する。
つまりは、枝が陰に入っている時の枝の成長に対する gravitropism 相当のパラメータとなる。

植物学的にもそうだが、The Grove では枝が陰に入っている場合は日の指す方へ伸びるか成長が止まるのがデフォルトの仕様となっている。
成長を続けて日の指す方へ伸びる時の gravitropism 補正が入るものと考えればいい。

下図の中では陰になっている時の枝の伸び方と、成長して陰から出てきた時の成長の仕方の差異に注目する。
Up in Shade < 0 の時は陰になっている時でも主枝が重力に従うようにして大きく歪曲してしる。
Up in Shade > 0 の時は逆に陰となっている場合は主枝が重力に抵抗して上へとまっすぐに伸びる傾向が見られる。
同時にUpUp in Shade の間に大きな数値の差がある場合、陰から出る境目付近で主枝が大きく変化する。 Up in Shade = -1.0 | 1.0 の辺りが分かりやすい。

このパラメータは Up と重複する。
日陰にいる場合は Up に加えて Up in Shade のパラメータを加算した感じで gravitropism の補正が加わるものとして考える必要がある。
より正確に言うと、下記のような数式となっている。

枝にかかる重力屈性 = 日が差している度合い(%) * Upの値 + 影が差している度合い (%)+ Up in Shade の度合い

陰が差している度合い = 1 - 日が差している度合い

当然、陰に入ることで成長が止まっていたり枯れた場合は成長しなくなるので影響しない。

f:id:r9aArrowhead:20210312193101j:plain f:id:r9aArrowhead:20210312193111j:plain f:id:r9aArrowhead:20210312193120j:plain f:id:r9aArrowhead:20210312193126j:plain f:id:r9aArrowhead:20210312193133j:plain f:id:r9aArrowhead:20210312193143j:plain f:id:r9aArrowhead:20210312193153j:plain f:id:r9aArrowhead:20210312193212j:plain f:id:r9aArrowhead:20210312193221j:plain

To Horizontal

傾斜重力屈性の項目。
木が側面から伸ばしている枝は種別による際はあるが、個体だけで見れば上向きか下向きかの差はあれど元となる枝に対しての角度が一定の範囲をとるようになっている。

このパラメータはその性質に働きかけて、側枝の角度が水平となるように矯正する。 値が大きいほど、側枝は発生元に対して水平(≒直角)となるような角度で成長するようになる。

ただし、 この項目は通常の傾斜重力屈性と以下の点で異なる仕様となっている。

  • 対象の枝が陰に入っている場合のみ本パラメータを適用する。
    • 言い換えれば、陰が全くない状態ならばこのパラメータは無効となる。
  • 主枝も対象となる。
    • ここが学術的な傾斜重力屈性とは大きく異なる。
    • 主枝に対しては重力屈性、側枝に対しては傾斜重力屈性という名称で分けているケースが多かった。

より正確なパラメータ名にするなら plagiotropism_shade な気がしなくもない。

下図の実行結果のうち、但し書きの部分がよく分かるのは To Horizon: 2.0, Shade有り のパターンとなっている。
To Horizon が主枝(≒幹)にも影響しているため、重力屈性によって陰の上へと出ることができなくなっているのが分かる。

f:id:r9aArrowhead:20210312193231j:plain f:id:r9aArrowhead:20210312193238j:plain f:id:r9aArrowhead:20210312193250j:plain f:id:r9aArrowhead:20210312193306j:plain f:id:r9aArrowhead:20210312193312j:plain f:id:r9aArrowhead:20210312193321j:plain

To Light

光屈性 のこと。

値を上げることで枝がより光がある方向へろ枝を伸ばすようになるし、反対にマイナスにすることで光を避けるようにして成長することも可能となっている。

陰を避けるように成長するため、 Flow -> Escape Shade と同じく Shade で陰となるように設定したオブジェクトを避けるような成長を見せるようになる。

このパラメータは成長方針を決めるパラメータなので、成長が止まるような環境におかれると意味がなくなる。
陰になった時の成長を調整する FlowAdd の設定が関連することになる。

The Grove は独自のレイトレース機能を使って光のパスを計算している点に注意すること。
独自のレイトレースを採用しているので、 blender のライトオブジェクトには反応しない。
シーン設定の時に光の方向へ枝を誘導しようとする時にこの仕様による影響が出てくることになる。

下図は To Light のパラメータを漸次増加させたもの。
設定している値の増加にあわせて、日陰側での成長を避けているのが分かる。

f:id:r9aArrowhead:20210312193329j:plain f:id:r9aArrowhead:20210312193337j:plain f:id:r9aArrowhead:20210312193344j:plain

Twist

トチノキのような枝の節毎に微妙なねじれが発生している種類を再現するためのパラメータ。
このパラメータ枝の成長方向を変えるものではなく、枝そのものが設定した角度で回転してねじれる。
設定した角度で、ノード間のねじれる角度が決定する。

また、ねじれたために樹皮(テクスチャ)が直線ではなく回転するようになる。 枝がねじれたことによって芽が出る位置が前後でずれるため、 枝から新たに発生する子の枝が渦を巻くように見える。

f:id:r9aArrowhead:20210312193351j:plain f:id:r9aArrowhead:20210312193358j:plain f:id:r9aArrowhead:20210312193405j:plain f:id:r9aArrowhead:20210312193410j:plain

Pitch

名前の通りの効果で、枝が成長する際のピッチ角へ範囲内の数値がランダムで追加される。
結果として一律で角度が変わる規則的な成長ではなく、不規則に枝の角度が変わった成長を遂げる。

Add にも Start Direction -> ( Random ) Up という設定があるので混同しやすいが、これと値は重複しない。
Add では新しく枝ができた時だけに影響を与え、 pitch は既存の枝に影響を与える。

ピッチとは何かは割愛

f:id:r9aArrowhead:20210312193417j:plain f:id:r9aArrowhead:20210312193425j:plain f:id:r9aArrowhead:20210312193433j:plain f:id:r9aArrowhead:20210312193443j:plain

Heading

説明では新芽が出た時の角度となっているが、手っ取り早く言うと Pitch では枝が伸びるピッチ角を調整したのに対して、こちらではヨー角へランダムな角度を追加する。

Pitch と同じくこのパラメータも AddStart Direction -> Horizontal という類似したパラメータが存在するが。値は重複しない。
Add では新しく枝ができた時だけに影響を与え、 Heading は既存の枝に影響を与える。

f:id:r9aArrowhead:20210312193450j:plain f:id:r9aArrowhead:20210312193458j:plain f:id:r9aArrowhead:20210312193504j:plain f:id:r9aArrowhead:20210312193511j:plain

loose usage about The Grove (Grow)

概要

ここでは The Grove アドオンの Grow 機能に絞って記述する。

f:id:r9aArrowhead:20210218103301j:plain

参考

THE GROVE - Grow

利用環境

各パラメータまとめ

  • Nodes: 一つの枝が一年で成長させることができるノード(≒節)の最大数。最大数なので他のプロパティの影響でこの数に届かないことがある。
    • 成長可能なノード数を制限するため、樹齢を増やした方が制限による影響が大きくなる。
    • ノード全体で成長する長さは Length で制限を受ける
  • Length: 1つの枝にあるノード全体が、一年間に成長することができる長さの最大値
    • Nodes で指定した数はこのプロパティ影響を与える。 Length / Nodes = 1つのノードの長さ となる。
    • 側枝などの枝分かれした部分は個別に判定される。例えば枝が2本ある場合は2本それぞれが Length まで成長できることになる
  • Longer in Shade: 日が当たっていない陰の状態となっている時に、枝の成長を増減させるパラメータ
    • 枝の寿命によって完全に成長が止まる場合はそもそも機能しない
    • 枝の成長を増減させる のがポイント。ここを正の値にすれば 日陰にいる方が成長が早い枝 を作成することも可能。

不明点

Nodes = 1 にすると、幹の部分のみ NodesLength のプロパティが成長を鈍らせていた。
Nodes = 2 以上にすると問題ないので、そもそも Nodes = 1 というのを想定していないのかもしれない。

ノードとは?

後ほどこの辺りの概念はまとめる予定だが、差し当たって Grow では必須の知識となる Node Branch twig についてまとめる。

情報処理試験などの情報系、あるいは理数系、名称の由来の分野でもある植物学を学んでこられた方々には ツリー構造 の用語のことだと言ってしまえば理解が早いかもしれない。

The Grove では下図で示した部分をそれぞれ Node Branch twig と呼んでいる。

f:id:r9aArrowhead:20210218103315j:plain

Grow ではこの3つの要素に関する成長と制御するパラメータとなっている。

Node

Node は2つの意味を持っている。

  1. Branchtwig の境界線
  2. BranchBranch の境界線

ひとまとめで説明すると、 枝分かれが発生した個所

Branch

Branch は大雑把にまとめると以下の2つの意味を持っている。

  1. 幹に相当する、垂直方向へ伸びていく枝。The Grove オブジェクトが最初に生成した枝で必ず1つ存在する。
  2. 枝分かれして水平方向へ伸びていく枝。主に側枝に相当する。twig が発生して成長した枝。

twig

Branch のノード部分に一番最初に発生する葉や芽に相当する。
The Grove では twig に用いるモデルを変更して木が茂らせる葉を変えることで見た目を変更することができる。

Node 部分に最初に発生する要素でもあり、 twig が成長することで新しい Branch となる。 言い換えれば、 Node が成長していない場所には Branch は発生しない。

The Grove 成長モデル

The Grove は木の成長ロジックとして現実の植物成長モデルを利用しており、概要は下図のようになっている。

f:id:r9aArrowhead:20210218103309j:plain

文章化すると概ね以下の通り。

  1. ノード部分に twig が発生する
  2. 発生した twigBranch として成長する
  3. 成長した Branch のノード部分に新たな twig が発生する

このルーチンを繰り返して成長していくことになるが、成長の過程で FlowShadeDrop の影響を受けると成長を阻害されて twigBranch が発生しなくなる。

Nodes

一つの枝が1年で成長できるノードの数を制限するプロパティ。

成長するにはノードから twigbranch が発生して成長しなければならないが、この成長を制限する。 成長が進むとノードの数が増えるため、時間がたてばたつほど影響が大きくなる。

成長するノードの制限は branch 毎に判定される点に注意。

Nodes = 1

f:id:r9aArrowhead:20210218103321j:plain f:id:r9aArrowhead:20210218103328j:plain f:id:r9aArrowhead:20210218103334j:plain f:id:r9aArrowhead:20210218103340j:plain

Nodes = 2

f:id:r9aArrowhead:20210218103347j:plain f:id:r9aArrowhead:20210218103355j:plain f:id:r9aArrowhead:20210218103402j:plain f:id:r9aArrowhead:20210218103410j:plain f:id:r9aArrowhead:20210218103417j:plain

Nodes = 3

f:id:r9aArrowhead:20210218103423j:plain f:id:r9aArrowhead:20210218103430j:plain f:id:r9aArrowhead:20210218103438j:plain f:id:r9aArrowhead:20210218103443j:plain f:id:r9aArrowhead:20210218103451j:plain

Length

branch がもつノード全体が、一年間に成長することができる長さの最大値。

The Grove はノードがどれぐらい成長するかを NodesLength に拠っているようで、下記のような式で1つのノードの長さを計測している。

Length / Nodes = 1つのノードの長さ

上記のような処理のため、 Nodes と Length でノードの間隔を表現する点に注意。
一つ一つの枝の間隔が広い木を作りたい場合などに考慮するプロパティにもなっている。

Nodes=1, Length=20cm

f:id:r9aArrowhead:20210218103457j:plain f:id:r9aArrowhead:20210218103502j:plain f:id:r9aArrowhead:20210218103509j:plain f:id:r9aArrowhead:20210218103515j:plain

Nodes=2, Length=20cm

f:id:r9aArrowhead:20210218103521j:plain f:id:r9aArrowhead:20210218103525j:plain f:id:r9aArrowhead:20210218103530j:plain f:id:r9aArrowhead:20210218103534j:plain

Longer in Shade

日が当たっていない陰の状態となっている時に、枝の成長を増減させるパラメータ。
ここで指定するのは完全に日が当たっている状態での成長からの比率。
負の値で指定すると元の成長よりも減衰し、正の値で指定すると促進する。

そのため、下図のようにこのパラメータを正の値で指定して日陰のようなシチュエーションを用意すると日陰にいる枝の方が成長が促されているという現象を確認できる。

f:id:r9aArrowhead:20210218103541j:plain

loose usage about The Grove (Add)

概要

ここでは The Grove アドオンの Add 機能に絞って記述する。

f:id:r9aArrowhead:20210209180529j:plain

各パラメータまとめ

  • Side Branch: 枝分かれする最大値を設定する。実際には陰やアルゴリズムの乱数、 FlowDrop の設定に影響を受けるため、設定した数値通りに枝分かれするわけではない。あくまで、このパラメータだけが反映された場合の理想値の設定である点に注意。

参考

THE GROVE - Grow

Wikipedia - 葉

Botany Web - 葉序

Wikipedia- 黄金角

Wikipedia - Golden Angle

Wikipedia - Gravitropism

Wikipedia - 屈性

Wikipedia - Water sprout

別名 water shoots

Wikipedia - 徒長枝

利用環境

注意点

ここで設定するパラメータは枝別れの構造や寿命そのものを設定できるようになっているが、樹木が成長するには光合成や水といった外部からの要素が影響を与える。
Add で設定した内容がそのまま木の構造に反映されることは稀で、 FlowDrop といった設定に成長を左右される。

ここでの設定は、全てがうまくいったならここで設定した枝の構造をとるという理想値程度に考えておくといい。

Side Branches

主枝から伸びる側枝や、側枝から伸びる果実や葉をつける結果枝が、一つの節からどれだけ発生するかを設定する。 分かる人には 互生、双生、輪生 といえばすぐ分かる。いわゆる枝の構造を定義する設定。

互生、双生、輪生がそういうものかは下図の落書きを参照するか、検索エンジンで調べればわかる。

f:id:r9aArrowhead:20210209180825j:plain f:id:r9aArrowhead:20210209180830j:plain f:id:r9aArrowhead:20210209180835j:plain

成長して枝分かれが発生する際、成長できずに枝が伸びない時がある。
これは既存の枝葉によって日光が差さない陰となってしまっていたり、他の枝に進路を妨げられて成長できないいわゆる 絡め枝 のような状態となって本来の成長モデルが適用されなかった場合に発生する。

特に3輪生以上となると自身の状態が影響を大きく与えるため、設定した内容で枝が伸びる方が少なくなる。

Single

互生葉序を指す。別名螺旋葉序。代表的なものは以下のとおり。

一つの節に対して葉が一枚生える。また、節毎に一定の間隔で生える位置が変わる。
多くは1/3葉序、2/5葉序、3/8葉序、5/13葉序となる。
例えば、1/3葉序は茎を中心に360°とし、それを3で割るような形で位置を変えながら葉を茂らせる。 1枚目が生えたところから1つ隣の約120°ずれた場所に2枚目の葉が生えることを繰り返す。

後述する全ての葉序も同じようならせん状の軌跡を描く。
これはほかの葉の影にならないようにする最も効率の良い位置決定が、らせん状になるためのシステム。

互生葉序には一度に一枚ではなく二枚の葉をつける2対互生という種類も存在する。
このパターンは上から見ると二枚羽根のプロペラが旋回しているように見えるため、旋回葉序とも呼ばれる。
あるいはこのパターンを示す植物が少ないためか、代表的な植物であるミカン科のコグサギを指してコグサギ型葉序と呼ぶこともある。

f:id:r9aArrowhead:20210209180535j:plain

Double

対生葉序 を指す。
1本の茎や枝を中心に左右対称の双葉のように2枚ずつ葉が発生する。

葉には1枚で生える単葉と、小葉が集まって生える複葉が存在する。 複葉の場合であっても小葉の集合体が左右対称に生えれば対生として分類される。 対生葉序には 2列対生十字対生 に大別できる。

2列対生とは、1本の茎や枝の枝先に向かって2枚ずつ葉が連なる生え方を指す。 十字対生とは、まず1本の茎や枝に2枚1ペアの葉が発生する。次は角度を90°変えて、2枚1ペアの葉が発生する。常に1対のペアが角度を90°変えて発生するため、真上から見ると十字の形に見えるためにこの名前がついた。

2列対生の代表的なものは以下の通り。

十字対生の代表的なものは以下の通り。

樹木の多くは互生で、対生は珍しいので見分ける際の特徴に利用できる。 また、十字対生はシソ科に多く見られるのも特徴。

f:id:r9aArrowhead:20210209180541j:plain

Whorl of up to 3

輪生葉序の3輪生を指す。

輪生に共通しているのは、互生が1枚、対性が2枚であることかわ分かるように1つの節から3枚以上の葉が出てくる形態を指している。3輪生の場合は1つの節から3枚一組となって葉が発生することになる。

輪生のもう一つの特徴は、対となる葉が 360°を等分する形で発生する点にある。
3輪生の場合は各葉の間隔は等しく120°となる。
そして次に発生する葉は、全体が対同士の葉の角度の半分だけ角度を変えて発生する。
3輪生の場合は先に生えた葉から見ると、次に発生した葉は節を中心に全体が60°回転した形となっている。

これは互生の時に記述した螺旋状の葉の発生に則った形となっている。 後で発生した葉と先に発生した葉の位置が被らないようにすることで、日照を遮らない構造になっている。

輪生はあくまで一度につける葉の数なので、8輪生とか10輪生も存在する。

3輪生に分けられるのは以下のような植物。

f:id:r9aArrowhead:20210209180546j:plain

Whorl of up to 4

輪生葉序の4輪生を指す。4輪生は以下のような植物。

f:id:r9aArrowhead:20210209180552j:plain

Whorl of up to 5

輪生葉序の5輪生を指す。5輪生は以下のような植物。

  • ヤマムグラ
  • キクムグラ

f:id:r9aArrowhead:20210209180558j:plain

Whorl of up to 6

輪生葉序の6輪生を指す。6輪生は以下のような植物。

  • オククルマムグラ

f:id:r9aArrowhead:20210209180603j:plain

Chance

その節( node )に新しい枝や葉が発生するかどうかの数値。
0 にすると一切新しい枝葉は発生しないため、シンプルな構造になる。
1の場合は必ず新しい枝葉が発生する。

ただし、これは単純に新しい枝葉を発生させるかどうかのフラグのようなもので、実際には直下にある Light Needed、それ以外にも Shade や Flow といった他の設定から影響を受ける。 1にしても必ずしも枝葉が発生するわけではない点に注意。

f:id:r9aArrowhead:20210209180608j:plain f:id:r9aArrowhead:20210209180612j:plain f:id:r9aArrowhead:20210209180618j:plain f:id:r9aArrowhead:20210209180627j:plain f:id:r9aArrowhead:20210209180634j:plain

Light Needed (branch_chance_light_threshold)

節に新しい枝葉を発生させる際のもう一つの設定。
chance が発生するかどうかの設定に対し、こちらは発生する場合に必要な光量の閾値を設定している。

The Grove が独自に管理しているレイトレースの光量であり、ライトなどの光量ではない

0の場合は Chance による発生が成功すれば必ず枝葉が発生するが、1の場合は陰が一切存在しない空間でしか枝葉は発生しなくなる。

f:id:r9aArrowhead:20210209180640j:plain f:id:r9aArrowhead:20210209180646j:plain f:id:r9aArrowhead:20210209180652j:plain

Only on End Node

End Node (ノードの終端) のみに新規で枝葉を発生させるかどうかを設定する。
言い換えれば、枝の根本に近い古い部分の枝葉の発生を抑止する設定。

0 にした場合は抑止を一切しないため、この設定による枝葉の発生抑止がなくなる。
にした場合は根本側の枝からの発生を完全に抑止するので、根本側の空間が大きく開く。

f:id:r9aArrowhead:20210209180657j:plain f:id:r9aArrowhead:20210209180702j:plain f:id:r9aArrowhead:20210209180707j:plain

Fork

枝の先端に複数の芽が出る度合いを設定する。
先端で複数の芽が出た場合それぞれが成長するため先端での枝分かれが発生する。

反面、枝分かれが発生すると木は互いに間隔をあけて成長を続けようとするため、枝はまっすぐ成長せずに刺股のような感じの形で成長していく。

0の場合は枝分かれが発生しないため、針葉樹のように一本の枝がまっすぐと伸び続ける。
1の場合は必ず枝分かれが発生するので、色々な角度に枝分かれしながら枝が伸び続けている。

f:id:r9aArrowhead:20210209180713j:plain f:id:r9aArrowhead:20210209180718j:plain f:id:r9aArrowhead:20210209180724j:plain

Bud Life

枝葉の寿命。 枝葉は成長限界を迎えると以後新しい芽を作ることができずに枝葉が発生しない。
ここで指定した数値が枝の寿命となるため、指定年齢までは成長ロジックによる判定が行われるようになる。

この設定はあくまで寿命のみ指定する。
成長に必要な光や水といった要素で成長が弾かれることがある点に注意。

f:id:r9aArrowhead:20210209180728j:plain f:id:r9aArrowhead:20210209180739j:plain f:id:r9aArrowhead:20210209180743j:plain f:id:r9aArrowhead:20210209180748j:plain

Regenerative

成長が止まった木や、Dropされた節から新たな枝葉が成長するかどうかの確率を指定する。
Chance が若い枝から新規の枝葉発生を管理する確率なのに対し、こちらは古い枝から新規に枝葉が発生するかを管理する。

注意点としては、成長させた木を Prune 機能で不要な枝葉を刈り落した場合でもこの判定は行われる。
ここでの数値設定次第では、Grow 後の結果で以前切り落としたの個所から新しい枝が発生する。

f:id:r9aArrowhead:20210209180753j:plain f:id:r9aArrowhead:20210209180759j:plain f:id:r9aArrowhead:20210209180806j:plain

Light Needed (regenerative_branch_chance_light_required)

Regenerative に対する Light Needed の設定。
同じ名前が2つある時点でいろいろ問題あるが、こちらは Regenerative で新規の枝葉が発生する時に必要な光量の閾値となっている。

f:id:r9aArrowhead:20210209180811j:plain f:id:r9aArrowhead:20210209180816j:plain f:id:r9aArrowhead:20210209180821j:plain

Start Direction

発生した枝がどのような角度で伸びるかを設定する項目。
ここは特に説明を要しないと思うので詳細割愛。

Angle

新しく伸びた枝が、派生元の枝とどれだけの角度を成して発生するかを指定する。
90度で垂直に発生するようになる。

角度は方位角相当

Up

どれだけ上に向かって発生するか。仰角の指定。 マイナスを指定すると俯角になる。

Random Up

仰俯角に指定した数値の範囲でランダム性をもたせる。

Horizontal

角度ではなく、平行方向への強制度合を指定する。 枝は基本的に水平に伸びないが、ここで強制的に平行方向へ成長させることができる。

loose usage about The Grove (Drop)

概要

ここでは The Grove アドオンの Drop 機能に絞って記述する。

The Grove では以下の3つの条件に従って不要な枝や木の成長を阻害するような枝を切り落とすようになっている。

  1. 日陰や寿命によって育てても木の成長を促さない枝
  2. Auto Prune の設定で指定した高さ未満に生えているものや、一定の太さ未満の枝
  3. ユーザが手動で選定した枝

ここでは上記3つの内、1番目のロジックを設定する Drop パネルの挙動を確認していくことになる。
日照によるドロップを行うかどうかのパラメータとして利用するのが Shaded ShootsShaded Ends の2つとなっている。
そして、残りの Low Power Ends, Obsolete, Stick Aroundが成長によるドロップ処理となっている。

2と3については基本動作で確認済み。

アドオン作者のドキュメントにはこれらのパラメータはデフォルトで十分作用するため、自然界を再現するにはデフォルトでの運用が推奨されている。

f:id:r9aArrowhead:20210204002324j:plain

各パラメータまとめ

先に各パラメータの内容をまとめると、以下のような挙動を担っている。

  • Shaded Shoots: 枝がどのぐらい日を遮られていたら切り落とすかを指定する。完全に日照から隠れている場合を0、日照に当たっている状態が1となっている。
  • Shaded End: 日陰と判定された枝が成長を止める確率。0は成長を阻害せず、1は日陰となった全ての枝の成長を止める。日陰にあると判定されていない場合、このパラメータは無効。
  • Low Power Ends: 枝が老化によって成長を止める際の閾値。0の場合は老化による成長の停滞はなく、1の場合は全ての枝の成長が止まる。
  • obsolete: 側枝への親枝からの水の供給度合いを設定するための閾値。0の場合は常に水が供給されていて、1の場合は水の供給がない状態。例外として、心材 (heartwood) が形成される前の若い枝にはこのパラメータが適用されない。
  • Stick Around: 老化した枝を残すかどうか。0だと残さず、1にすると古い枝を切り落とさずに残したままとなる。

参考

THE GROVE - Prune

利用環境

注意点

The Grove には独自のレイトレース機能が搭載されており、これを用いて生成した木や枝葉への日陰の判定を行っている。
日陰によるドロップ処理は、この計算結果で日陰と判定されたものに対して行う。

言い換えると、 blender 標準の光源は全く意味をなさない。
枝のドロップ処理を行う場合はライトなどによる光源での調整ではなく、 The Grove の各種パラメータのみで操作する必要ことに注意が必要となる。

問題点

後述の内容を見れば分かりやすいが、ここの項目は各設定を数値で指定する形式になっている。
しかし、その数値が示す定量的な説明はドキュメントには一切記載されておらず、それぞれのパラメータが担う定性的な内容しか記載されていない。

数値を指定する根拠がないため、調整が非常に感覚的な内容に拠っているために思い通りの木を作ろうとするには試行錯誤による確認しかないのが現状である。

Shaded Shoots

日が当たっていない枝を切り落とすためのパラメータ。
0 にすれば日陰にある枝であろうと残したままとなる。
1にすると日が当たっていても枝を切り落とすので、木としての成長が止まってしまう。

0の時の図では、日陰にある枝も切り落とされないために根本に近い枝も成長していて△なシルエットになっている。

f:id:r9aArrowhead:20210204002330j:plain f:id:r9aArrowhead:20210204002337j:plain f:id:r9aArrowhead:20210204002343j:plain

Shaded End

Shaded Shoot に似ているが、こちらは日照を得られなかった枝の成長が止まる確率を指定するパラメータ。
0で全ての枝が成長し、1では日陰判定を受けた枝の成長は完全に停止する。

確立なので、パラメータを1にしない限りは完全に日から隠れていても成長する枝が存在する。
下図の枝の分布でも確認できるように、成長の停止がまばらで密度に濃淡があるのが分かる。

f:id:r9aArrowhead:20210204002350j:plain f:id:r9aArrowhead:20210204002356j:plain f:id:r9aArrowhead:20210204002403j:plain

Low Power Ends

枝の老化によって成長が止まる閾値の設定。
詳しい説明はどこにもないが、発生した枝は初期値としてこのパラメータの値を 1 として保持していて、成長と共に内部パラメータの値が減少していく形式に見受けられる。

0に設定した場合は寿命はなく延々と成長し続ける反面、1に設定した場合は枝の成長が完全に停止する。

また、成長が停止した枝は花や果実をつけるようなロジックとなっているため、完全に成長しないというわけではない。

f:id:r9aArrowhead:20210204002412j:plain f:id:r9aArrowhead:20210204002420j:plain f:id:r9aArrowhead:20210204002427j:plain f:id:r9aArrowhead:20210204002433j:plain f:id:r9aArrowhead:20210204002440j:plain

obsolete

枝が自身の親から水の供給を受けているかのパラメータ。
心材や辺材を表現するためのパラメータのようで、枝の親が老化によって水の供給を減らしていくことを再現している。
Low Power Ends が枝自身の老化に対する閾値であるならば、こちらは親の枝に対する老化の閾値設定。

心材や辺材を再現するためでもあるこのパラメータには例外が設定されている。
親が心材を発生させていないような若い枝の場合は、このパラメータは無視される。
この辺りは下図のパラメータ設定の差を見て欲しい。パラメータの値を最大値にしても木の上部には側枝が葉を茂らせている。

The Grove は心材の発生条件も設定可能で、Thicken パネルの Sapwood パラメータで設定を変えればこのパラメータも影響を受けることになる。

f:id:r9aArrowhead:20210204002447j:plain f:id:r9aArrowhead:20210204002454j:plain f:id:r9aArrowhead:20210204002500j:plain f:id:r9aArrowhead:20210204002508j:plain f:id:r9aArrowhead:20210204002514j:plain

Stick Around

枯れた枝を残しておくかどうかの閾値。0の場合は枯れている枝であろうと残したままとなるし、1であれば問答無用で刈り取られる。

どれが枯れた枝なのかは一見して分かりにくいが、後述の Show Dead を On にすると対象となる枝にハイライトが付くため、確認しながら作業をするといい。

f:id:r9aArrowhead:20210204002520j:plain f:id:r9aArrowhead:20210204002527j:plain f:id:r9aArrowhead:20210204002535j:plain f:id:r9aArrowhead:20210204002541j:plain f:id:r9aArrowhead:20210204002547j:plain

Show Dead

The Grove が枯れた枝と判断した枝をハイライトで表示してくれる。

f:id:r9aArrowhead:20210204002553j:plain

loose usage about The Grove (Shade)

概要

ここでは The Grove アドオンの Shade 機能に絞って記述する。

The Grobe アドオンは木の成長を計算するために独自のレイトレース機能を搭載して利用している。
この機能があったため Flow の escape shade では周囲にオブジェクトを配した際に成長が阻まれるなど、 blender の光源とは別の仕様で光源処理を行っていたことが分かった。

設定パネルの並びとしては かなり下になるが、 Drop の説明の前提になっている部分でもあるため先に調べた。

参考

THE GROVE - Prune

Science Direct - Phyllotaxis

利用環境

注意点

この機能は The Grove のレイトレース計算量に大きく影響を与える。

陰 ( Shade )

先に結論だけ記載する。

  • Leaf Area: The Grove が利用している例とレースシステムで、レイを遮るエリアのサイズを指定する。 Leaf Area となっているのが、シャドウエリアが Twigs ( = Leaf) の領域とほぼ同一になるためである。
  • Samples: The Grove 内臓レイトレースのサンプル数。数値を下げると精度が下がるので通常の成長モデルとは異なるパターンで生育する木が発生する他、葉のつきが悪くなる。普通に使う場合はデフォルト値での利用を推奨

冒頭に記載したとおり、 The Grove は木を成長させる際に独自のレイトレース機能を用いている。
このレイトレース機能で陰 (Shade) と判断されたエリアが Leaf Area を表示することで確認できる。

デフォルトでは off になっているので注意。

f:id:r9aArrowhead:20210129004550j:plain

上図のように Leaf Area を表示させると灰色の板ポリが枝の端にくっついていることが分かる。
陰の位置はほぼ twigs の位置と重なるため、twigs の発生位置を確認するのにも利用できる。

この板ポリのサイズは (10 * 10) times Leaf Area という計算になっているので、 Leaf Area の値で影と判断される範囲は上下する。
そして、このサイズを増減することは木に当たる日照量を変えることになり木の成長にも影響を与える。
下図が Leaf Area だけを変更した場合の結果となる。

f:id:r9aArrowhead:20210129004556j:plain f:id:r9aArrowhead:20210129004602j:plain f:id:r9aArrowhead:20210129004607j:plain f:id:r9aArrowhead:20210129004613j:plain f:id:r9aArrowhead:20210129004619j:plain f:id:r9aArrowhead:20210129004626j:plain

Leaf Area の大小が発育に影響を与えていることがわかる。
値が小さければシャドウエリアも小さくなるため、木が光合成をするためにより大量の葉をつける。
反面、値を大きくすると光が当たらないと判断するため葉をつける枝の数そのものが減少している。
また、過度に大きくすると生育自体が阻害された。


次に Samples というパラメータが存在する。
これは phyllotaxis distribution という分布パターンを利用したもので、ヒマワリの種のつきかたや松ぼっくりのカサのできかたでも利用されているパターンを利用したものとなっている。
このパターンに従ってレイのサンプリング位置が決まっているとだけ知っておけばいい。

下図にある木の根元部分に小さな点が球状に散布されているが、これがレイのサンプルを表示したものとなっている。

f:id:r9aArrowhead:20210129004633j:plain

Samples の値は Cycles におけるレイトレースのサンプル数設定と同じといえる。
値を上げるとより正確に計算し、サンプル数を下げると正確さが下がりランダム性が上がる。

下図がその差異の結果となる。
確認する際は、木の根元にあるレイのサンプル数にも注目してほしい。

f:id:r9aArrowhead:20210129004639j:plain f:id:r9aArrowhead:20210129004647j:plain f:id:r9aArrowhead:20210129004653j:plain f:id:r9aArrowhead:20210129004723j:plain f:id:r9aArrowhead:20210129004753j:plain f:id:r9aArrowhead:20210129004800j:plain f:id:r9aArrowhead:20210129004806j:plain f:id:r9aArrowhead:20210129004813j:plain f:id:r9aArrowhead:20210129004820j:plain

レイのサンプル数が減ることでレイトレースの正確さが失われて、発育が自然モデルとは異なるものとなっていく。
また、過度にサンプル数を減らすと周囲に光がないと判断するのか枝葉の数も減少する傾向にある。 数値を上げることで枝葉の数が増加傾向にあるが、それ以外のあまり効果は見込めなかった。基本的にデフォルト設定の 64 で運用すればいいのではないかと思う。

loose usage about The Grove (Flow)

概要

ここでは The Grove アドオンの Flow 機能に絞って記述する。

ちなみに下の私的メモ見て読み取れるのであれば、読む必要はない。

f:id:r9aArrowhead:20210127223557j:plain

Flowの各パラメータはざっくり説明すると以下のようになっていた。

  • Favor Bright: 主枝が上へ伸びる度合い。同時に側枝の成長を阻害する度合いでもある。
  • Favor End: 側枝が子の枝をつけない度合。値が 1 に近づくにつれて子の枝の割合が減る。
  • Escape Shade: 側枝が日陰にいると判定された時に Favor End へ加算する値。
  • Reach: Favor End の有効距離。始点は木の頂点。
  • Favor Rising: 側枝の角度修正。正の値で天へ向けて伸びる強さが増し、負の値で地へ伸びる力が強くなる。

参考

THE GROVE - Flow

Try it - 5分でわかる!頂芽優勢のメカニズム

利用環境

前提

ここでは、幹・主枝・側枝の3つの要素が関係している。
パラメータの調整は上記3つの要素へ影響を与えるため、利用する際にはそれぞれがそのようなものであるかの概要は知っておく必要がある。

また、パラメータとは直接関係しないものの、上記3つに影響を与えるオーキシンとサイトカイニンについても多少知っておくと幸せになれるかもしれない。

上記ワードで調べればいくらでも出てくるため、説明は割愛。

注意点

Flow の設定パネルは項目の位置で左右にドラッグすることで値を変更する、スライダー方式になっている。
しかし、過度な値の設定をさせないためか、それぞれ上限と下限を設けられている。それが下図。

f:id:r9aArrowhead:20210127224323j:plain f:id:r9aArrowhead:20210127224331j:plain

しかし、 Favor Start Favor End 以外の項目は数値を直接指定することで、設定可能範囲を超えた値の設定が可能になる。
この方法での設定で結果が大きく変わることもあるため、覚えておくと便利かもしれない。

f:id:r9aArrowhead:20210127224339j:plain

流れ ( Flow )

まずは本家の説明を参照する。

Regulate their own growth by controlling the flow of sugars and hormones.
Favor current or sub branches, with a bias to the base or crown.

説明を見る限りはまんま成長に関する設定で、既にある枝葉に成長が偏るのが基本仕様となっているようだ。
ちなみに本家ドキュメントでは操作方法というよりは学術的な説明がされているので、門外漢の自分にはあまりよくわからなかった。

それでもパラメータに関する記述らしき部分だけを読み取ると、概ね以下のようなことが書いてある。
各パラメータの実際の挙動については後述するので、ここは読み飛ばしてくれてかまわない。

  • Favor Bright: オーキシン分泌強度。強くすると縦方向に伸びようとするため、側枝の発育が抑制される。個人的にはFavor End とのペアなのだから Favor Startという感じがする。
  • Favor End: Apical Dominance、和名でいう頂芽優勢という効果をシミュレートするための値。日陰という判定が入ると Escape Shade の値がこれに加算されていくらしい。閾値
  • Escape Shade: 枝単位でこの値が管理されているようで、日陰になっているかどうかの判定に用いられる。日陰と判断された場合、 この値が Favor End へ加算される。
  • Reach: 記述なし
  • Favor Rising: 記述なし

頂芽優勢の現象をモデルへ適用するための設定のようだ。
オーキシンとサイトカイニンの関係を示すためのパラメータだと推測する。

とりあえず、よくわからないので実験してみた。

デフォルト設定はこの状態となる。

f:id:r9aArrowhead:20210127223605j:plain

Favor Bright

ツールチップの私訳は以下の通り。

木を何千もの個々の植物として想像してみてください。

明るいものは大きく成長し、暗いものは枯れていく - これが、Favor Brightの最大の魅力です。

接続している枝同士は、互いに利益を共有します。

糖 (Favor Bright) が自由に流れ光がたくさんあると、日陰の植物でであっても新しい光を見つけるために必要なサポートを得て成長することができます。

下図の通り、値を上げると主枝と側枝の数が減っていく。

木は基本的に縦方向と横方向に成長するが、このパラメータは縦方向へ強く作用する。
植物学的にはオーキシンの分泌が活発な木ということになるのだろうか。

日照を得るための成長を強めた結果として水平方向への成長が抑えられるため、値を大きくすることで枝の広がりはしなくなったということになる。

f:id:r9aArrowhead:20210127223613j:plain f:id:r9aArrowhead:20210127223627j:plain f:id:r9aArrowhead:20210127223706j:plain

Favor End

まずはツールチップの私訳から。

Favor Endは、新しい側枝の上に枝の端を与えます。

それはより短く、より強力な側の小枝を作成しますが、幸先の良いスタートは常に勝利が保証されているわけではありません。

Favor Brightを引きぬいて最も成長している枝をゆっくりとさせたり、短い側の小枝 (twigs) が追いつくようにしたり、新しい枝の端としても引き継ぐことができます。

Favor BrightとFavor Endは、木の最も重要な特徴の一つです。

2つは一緒に作用し、広いスペクトルの形や特徴を作成します。

説明の通り、 Favor Bright の対となる要素。
水平方向の枝分かれを調整して、枝が更に子の枝を発生させるかどうかの判断に用いられる。

下図の結果では、主枝から側枝が伸びるところはパラメータの値ではさほど変わらない。
変わっているのは、側枝の枝分かれの豊富さにある。
0.0 から 0.5 では側枝から伸びる子の枝の数が大きく減っている。
光が当たっていない場所で葉を広げるよりも、より枝を成長させて光が届く位置まで枝を伸ばす方へ成長していくという感じになっている。

特筆すべきは Favor End: 1.0 の時の挙動。 このパラメータの影響は主枝にも影響を与えるのか、極端に成長が阻害されている。

注意点として、ドキュメントによれば日陰という判定が入ると Escape Shade の値がこれに加算されていくらしい。
Favor End で指定する値はあくまで初期値として見るべきだろう。

f:id:r9aArrowhead:20210127223714j:plain f:id:r9aArrowhead:20210127223721j:plain f:id:r9aArrowhead:20210127223728j:plain

Escape Shade

ツールチップの私訳。

遮光された枝のFavor Endを増減します。

光を見つけるための戦略として、各枝はそれぞれのFavor Endをコントロールします。

枝が日陰になればなるほど、枝の先端の成長を有利にして日陰から逃れることもできますし、側方の成長を有利にして薄暗い光をできるだけ多く取り込むこともできます。

後者はブナやヘーゼルのような林床種に見られる。

どれぐらい日陰を避けて成長させるかの度合いを表す値。単体ではあまり効果はないので、 Shade オブジェクトとの併用をするのがいいと思う。 光を避ける = 主枝、側枝を成長させる ことになるので、子の枝は数が減ることになる。

注意点としては、この値が独立して枝の水平展開を妨げていることではないこと。
ドキュメントには、枝のある位置が日陰と判定された場合にこの項目の値を Favor End へ加算することが明記されている。
つまりこの値は 日陰時に Favor End の値に加算して、 Favor End による側枝の成長を促進するパラメータ となる。
Favor End の上限値が 1.0 で Escape Shade も上限値が 1.0となっているので、 Escape Shade を最大値まで上げれば確実に Favor End による処理が発生するということになる。

まずは遮蔽物がない状態でテスト。

f:id:r9aArrowhead:20210127223831j:plain f:id:r9aArrowhead:20210127223849j:plain f:id:r9aArrowhead:20210127223855j:plain

この状態だと光を遮るのは自身の枝しかないため、見た目にはあまり変化はない。
そこで、次は Shade に遮蔽物となるオブジェクトを設定しての確認を行った。

f:id:r9aArrowhead:20210127224059j:plain f:id:r9aArrowhead:20210127224105j:plain f:id:r9aArrowhead:20210127224113j:plain

結果としては、 Shade で日陰の判定になっている部分の影響を確認できた。

こうなると、どこまで日陰を避けるのか試してみたくなるのが性分。

f:id:r9aArrowhead:20210127224119j:plain f:id:r9aArrowhead:20210127224129j:plain f:id:r9aArrowhead:20210127224137j:plain f:id:r9aArrowhead:20210127224147j:plain f:id:r9aArrowhead:20210127224156j:plain f:id:r9aArrowhead:20210127224201j:plain f:id:r9aArrowhead:20210127224207j:plain f:id:r9aArrowhead:20210127224215j:plain f:id:r9aArrowhead:20210127224222j:plain f:id:r9aArrowhead:20210127224229j:plain

どうも周囲を覆うと成長しなくなってしまうようだ。

個人的には光源決めてそこへ向かって伸びる機能とか欲しいかもしれない

Reach

ツールチップの私訳。

Favor Endの最大距離。

枝先は、枝を流れるホルモンを作り、脇芽の成長を遅くします。

ホルモンの濃度がしきい値より低くなるまで、先端からさらに離れていくと濃度が下がっていきます。これでFavor Endの効果はなくなり、側枝は自由に成長します。

側枝に対する Favor End の有効範囲ということ。 ここで設定した距離まで Favor End は有効になる。 見た目の感じとしては、パラメータの値を上げると枝の伸びに不規則さが混ざっているようにも思えるが、正直差異が分かりにくい。

f:id:r9aArrowhead:20210127223901j:plain f:id:r9aArrowhead:20210127223908j:plain f:id:r9aArrowhead:20210127223915j:plain f:id:r9aArrowhead:20210127223926j:plain f:id:r9aArrowhead:20210127223950j:plain f:id:r9aArrowhead:20210127223958j:plain f:id:r9aArrowhead:20210127224006j:plain f:id:r9aArrowhead:20210127224015j:plain

分かりにくいので、別の木にした。

f:id:r9aArrowhead:20210127224236j:plain f:id:r9aArrowhead:20210127224244j:plain

上図二枚の上面図を見ると分かるが、 Reach を上げると側枝から伸びる子の枝が減っている。

Favor Rising

ツールチップ私訳。

下にぶら下がっている枝を、上向きに成長するよう支援します。

上向きの枝をブーストして、そびえ立つ木を手に入れよう。

値が1の場合は、水平枝の威力を0にするところまで行きます。

望むならば、それ以上の高さまで行くことができます。

f:id:r9aArrowhead:20210127224022j:plain f:id:r9aArrowhead:20210127224029j:plain f:id:r9aArrowhead:20210127224038j:plain f:id:r9aArrowhead:20210127224250j:plain f:id:r9aArrowhead:20210127224258j:plain f:id:r9aArrowhead:20210127224046j:plain f:id:r9aArrowhead:20210127224052j:plain f:id:r9aArrowhead:20210127224307j:plain f:id:r9aArrowhead:20210127224315j:plain

見ての通り、値を上げると側枝全体が上向きに伸びようとする。
そして過度に値を上げると成長が阻害されるのか全体的に縮んでしまった。

反対に値を負の方向へ進めると、下向きになる。柳の木とかを作るのに利用できそう。
こちらは値を上げても成長の阻害はしなくなったが、側枝全体が重なり合うようになってしまう。