Houdiniサンプルファイル勉強回。
今回使うのは、下記のファイル。
https://www.sidefx.com/docs/houdini/examples/nodes/sop/vellumsolver/CollisionDisable.html
内容は、コリジョンの有効/無効についてとなっております。
サンプルファイルの開き方はこちらの記事を参考。
絵としては地味ですが、上図では、コリジョン用の球体が最初布にめり込んだ状態でシミュレーションが開始されている。
通常であれば、めり込み部分はコリジョンオブジェクトに引っかかったような挙動になるが、ここではそれが回避されている。
このサンプルシーンでは、Vellum Clothでめり込んだ部分のコリジョンを一時的に無効にしているらしい。
[ネットワーク概要]
ネットワークはシンプル。
(A)布用のGridと、コリジョン用の球体。
(B)GridとSphereの交差部分をグループ化
(C)”disableexternal”アトリビュートを作成、グループ内のポイントに値2を、それ以外は0を設定。
(D)Vellum Clothの設定を付与してシミュレーション。
これで、めり込んだ箇所はコリジョンで無視される。
このうち、Cの工程、”disableexternal”アトリビュートがめり込み部分のコリジョンを無効化するためのもの。
“disableexternal”アトリビュートについて、も少し。
この値が0だと、常にコリジョンに反応する。
この値が1だと、常にコリジョンに反応しない。
この値が2だと、めり込みが解消されるまではコリジョンが無効で、一旦めり込みが解消されたらコリジョンが有効になる。
言葉だけではわからぬので、比較動画を作ってみた。
布の初期位置と重なる場所にBoxを配置。その下にもう一つコリジョンのTorusを配置した。
disableexternalアトリビュートの値を0,1,2のそれぞれでシミュレーションしたのが以下になる。
[disableexternal = 0]
[disableexternal = 1]
[disableexternal = 2]
ちなみに、オレンジ色の丸はコリジョンが無効な箇所です。
なるほど。
同様のアトリビュートとして、”disableself“がある。
self collisionのエラーに対して、一時的にコリジョンを無効にすることができる。
数値の意味は、”disableexternal”アトリビュートと同様。
disableself = 0
disableself = 1
disableself = 2
コリジョンに対して、めり込みがあるか否かは、Vellum Solver(SOP)、もしくはVellum Post Process(SOP)で確認できます。
上図パラメータの、”Failed Self Collision”がそれ。
上の動画で、布の一部が赤いのはそれ。
他のVellum系のアトリビュートについてはマニュアル参考。
https://www.sidefx.com/ja/docs/houdini/dyno/vellumattributes.html
以上、勉強おわり!
また、次回!!!
(Houdini17.5.327)
コメント