loose usage about The Grove (React)
概要
ここでは The Grove アドオンの React
機能に絞って記述する。
参考
利用環境
- blender 2.91
- The Grove release 9
反射、反応 (React)
例によってドキュメントから大まかな機能を読み込んでみた。
- It can Block growth when a branch hits its surface. - It can Deflect growth when a branch gets closer. - It can Shade growth – the tree reacts by bending away, toward light. - It can also Attract growth, as if it were a light.
大雑把な意味は以下の通り。
- 枝が表面に当たったときに成長を妨げることができる。
- 枝が近づくと成長をそらすことができる。
- 木が光に向かって曲がることで反応するようにして、成長を遮ることができる。
- 光であるかのように成長を引き寄せる。
この後、作者は注意書きのようにして以下のような説明もしている。
This is a good place to clear a common misconception. Plants do not grow toward direct sunlight. If they would, they would all lean south. They would soon lose balance, gravity would not be in their favor. Plants bend only to indirect sunlight, the light bouncing around the sky all around us. It is the blue color that a plant senses and loves.
意訳すると、植物は直接光に向かって伸びているわけではなく、自身の周囲を取り巻く環境光によって成長が決まるということらしい。
このアドオンにも作者のこの思想は含まれているので、注意が必要になる。
改めてアドオンの React パネルを見直すと、設定項目は極めてシンプルに以下の4つしかない。
- Block
- Attract
- Deflect
- Shade
前提
The Grove
はそのままでは他のオブジェクトに干渉しないし、されない。
木の成長や形状に影響を与えるためには、 React へ設定しなければならないことになる。
Block
指定したオブジェクトに含まれているメッシュを避けて成長するようになる。
項目から分かりやすい項目だったので下図のような配置で実験してみた。
この辺りは予想通り。
細かい隙間とかはどういう判定するのかは気になるが、概ね機能自体はシンプルで分かりやすい。
Attract
指定したオブジェクトの表面から Radius の距離まで力を発揮する。
引き寄せる力は基本的に指定したオブジェクトから遠ざかるほど弱くなる。
Strength
はその位置に作用する力を乗算処理する。そのため、 1 より大きくすると強くなり、 逆は作用する力を弱める。Strength を強くしすぎると木の成長を妨げる点に注意。
これも項目名からおおよそ察することができるので、下図のような配置で実験した。
オブジェクトを設定した後にパラメータが表示されたのが若干気になるが、まずはデフォルトで実行する。
Attractに設定したオブジェクトに引き寄せられているのは視認できるが、上の方はほとんど影響が出ていない。
ドキュメントを確認。
The Attract and Deflect interaction types have a Radius of influence. When a branch grows within this proximity, it gets influenced by the environment. The closer it gets, the more powerful this effect becomes. The Strength parameter multiplies this influence.
ドキュメントから分かるのは Radius
内の引力は範囲内で一定ではなく、中心点から減衰していくとのことだ。
つまり、Radius
は一番弱い力がとなるまでの距離ということになる。
そして、 Strength
は影響する力の乗算なので、この値が 1 未満ならば元の強さよりも弱くなる。
上記を踏まえて、下図のような設定にしてみた。
Attract オブジェクトの影響がお互いの中心で終わるようにして、 Strength
は乗算が働かないようにしている。
なんだかすごく面白い結果にはなった。
理論は分からないので、ここからは条件網羅式に確認していく。
影響範囲が木の幹の部分と重なる条件の時だけ成長の停滞が著しいことが分かった。
そこで今度は影響範囲が重なり合うようにして影響力だけを徐々に変化させて確認していってみる。
あまり結果は芳しくない。
確認しているなかで、これはもしかして Radius
はオブジェクトの中心から考えるのではなく、オブジェクトの表面からの距離なのではという考えに至った。
早速確認。
4枚目の画像から、 Radius
の範囲が オブジェクトの表面からの距離 ということが分かる。
が、 Strength
の関係性が分かりにくい。
twitterなどをあさってみたが、そもそもの Strength: 1.0
を定量的に指す内容は見当たらなかった。
結果論として、Strength は過度に強くしてはいけない ということだけは判明した。
一通り操作を確認したら開発者に凸するのもいいかもしれない
Deflect
設定したオブジェクトが、自己を中心に斥力を発生させて木を押すような効果を与える。 過度な強さを与えると成長が著しく抑えられるのは Attract と同じな点にも注意。
説明を見ただけだと Block
と大差がないような気がするので、下図のような構成で一度動かして確認する。
結果は下図となった。
これは結構分かりやすいと思われる。
折角なので、パラメーターを変えていくつか実験してみた。
要は Attract -> 引力
に対する Deflect -> 斥力
のような感じで使えばいい。
Shade
設定したオブジェクトが、光を遮るオブジェクトとして認識されるようになる。
これに関してはドキュメントにそれらしい記述は一切ない。
なのでいきなりあてずっぽうで実験する。
Shade というのだから陰に関することだろうという予測のもとで、下図のようにしてみた。
実行すると下図のようになった。
結果としては、指定したオブジェクトが光を遮って日陰部分として扱われるように見える。
ふと気になったので、光源との関係も実験してみた。
特に関係なさそう?
少なくとも、 Shade
で日光を遮る範囲は成長へ影響を与えるようだ。
shade で遮る光の量は可変なのかどうかは気になるところではある。