執筆者:相田
映像業界を経てモノリスソフトへ入社。 以来、テクニカルアーティストとして主にHoudini関連の業務を担当。 好きな爬虫類はヒルヤモリ。
TECH BLOG
![]()
こんにちは。モノリスソフト テクニカルアーティストの相田です。
今回は、R&Dで制作したプロシージャルツタ生成ツールの紹介をしたいと思います。
このツールは、ツタの発生点とコリジョンを入力することでツタを自動生成するツールです。
このツールを使っていろいろなモデルにツタを這わせてみてください!
サンプルファイル(monolithtech_growth_ivy.zip 198.7 KB)はこちらです。HIP に HDA をインストールしてご使用ください。
重要なパラメータがここに集約されています。特に Growth Scale と Covered Rangeはツタ全体の振る舞いを制御する最も重要なパラメータです。
Growth Scale = 0.03
Covered Range = 0.06
Growth Scale = 0.05
Covered Range = 0.1
左は細かいツタが繫茂していますが、右はツタが粗くなっています。繫茂する量にも違いが出ています。コリジョンにまきつく精度にも差が出ていますね。
主にツタの進行方向を調整するパラメータです。
進行方向を回転するノイズを調整したり、進行方向にかかる重力を調整します。ツタの這い方を調整したいとき、このパラメータをまず調整します。
Rotate Angle Scale = 1
Progress Angle Scale = 3
Rotate Angle Scale = 3
Progress Angle Scale = 10
左はツタの伸び方が比較的まっすぐですが、右はとてもぐにゃぐにゃしています。植生の種類を変えるときに、このパラメータを調整することで枝ぶりに差をつけられそうです。
ツタがコリジョンにまきつくふるまいを調整するパラメータです。
Covered Range の範囲で、コリジョンとの衝突を調整し、コリジョンから離れたり、ひきつけられたりするふるまいを調整します。
Attract Scale = 0.8
Attract Strength = 0.8
Attract Scale = 0.2
Attract Strength = 0.2
左はコリジョンにしっかりまきついていますが、右はコリジョンから離れて地面を這っているツタが増えています。右からはより荒廃しているイメージを感じますね。
ツタ同士の接触を調整するパラメータです。
Search Scale の範囲内で、ツタの進行方向に他のツタがあるときのふるまいを調整します。
生長中の枝が他の枝の方向に伸びるとき、衝突しないような方向を差す回避方向ベクトルが計算されます。このベクトルが進行方向ベクトルに加味されます。
ツタの分岐を調整するパラメータです。
ツタの生長に合わせて、Branch Threshold を越えると分岐していきます。
Branch Threshold = 30
Branch Threshold = 100
▲ 枝分かれするウェイトが増えていくのを視覚化しています。紫から始まり、赤に達すると枝分かれします。
左は色の変化が速くたくさん分岐していきますが、右は色の変化が遅く分岐も比較的少ないです。結果的に、繫茂する量にも差が出ています。
ツタの寿命を調整するパラメータです。
ツタの生長に合わせて、Aging Threshold を越えると生長が止まります。
Aging Threshold = 8
Aging Threshold = 15
▲ 年齢のウェイトが増えていくのを視覚化しています。紫から始まり、赤に達すると生長が止まります。
ツタがこみあってくると色が変化して生長が止まりますが、右は若干色の変化が速いです。枝同士の自己衝突で Aging が加算されているので、閾値を越えると枝の生長を止めることで、枝の過剰な込み合いを防止しています。
ツタの生長のしくみは、簡単にいうと、
生長方向をノイズの値で回転軸を中心に回転させ、その先で新しいポイントを作る
という流れです。
これを3DCGに実装することを考えると、
これを繰り返すことで、ツタが伸びていきます。
この方法のメリットとして、
などががあります。
ツタのまきつきのしくみは、簡単にいうと、
コライダーから一定範囲内に近づくと避けるように、一定範囲内より遠ざかると引き付けるように進行する
という流れです。
このツタツールでは、
という流れで実装されています。
この仕組みによって、コリジョンの表面を這うだけでなく、まきつく枝ぶりを再現しています。
もちろん、これだけの実装ではなく、コリジョンに近づきすぎて衝突しそうなときに回避する処理や、ポイントが Covered Range の外側に出てしまったときの処理も実装されています。また、計算精度が重要になってくるので、これらの処理を内部的な substeps で計算しています。
以上がプロシージャルツタ生成ツールの紹介でした。
このツールはインプットモデルを変えればどんなモデルでもツタを生やせるようになっているので、いろいろと差し替えて遊んでみてください!生長過程のアニメーションを眺めるのも面白いですね。
執筆者:相田
映像業界を経てモノリスソフトへ入社。 以来、テクニカルアーティストとして主にHoudini関連の業務を担当。 好きな爬虫類はヒルヤモリ。