てんちょーの技術日誌

自分がつまづいたこととかメモ

[Houdini] Vellum Cloth の Stretch / Bend Rest Length Scale を比較してみた

概要

こちらで用意したものを使って比較してみようと思います

shop-0761.hatenablog.com

今回のサンプルファイルはこちら

drive.google.com

環境

OS: Windows 10
Houdini: 19.5.435

内容

実際に出来た動画がこちら
48Frame以降にパラメータが反映されます

今回のケースだと Bend Rest Angle の違いはよくわかりませんね...

Rest Length Scale の用途

Distance拘束のRest Length(自然長)は、ポイント間の元々の距離になっています。 このスケールを使用することで、この距離を長くしたり短くすることができます。 0に設定すると、それらのポイントが引っ付くようになります。

Bend拘束のRest Angle(自然角)は、三角形の間の元々の二面角になっています。 このスケールを使用することで、この角度を広げたり狭めることができます。 0に設定すると、それらの三角形が平坦な面として扱われます。

www.sidefx.com

要するに元の Mesh に対して Scale をかけることができます
例えば、柔らかめにシュミレーションをかけ、途中で Scale を小さくして物体に張り付かせる みたいなことも出来ます

補足

今回のパラメータ変更は vellumsolver ノード内で行っています
これは Vellum のシュミレーション時には Rest Length Scale という
Attribute が存在しないためです

Houdini での実装詳細はこの辺とかが参考になるかなと

shop-0761.hatenablog.com

そのため、同等の Scale 処理を別の場所でやる必要がありそうでした
そこで、vellumsolver ノードをダブルクリックして、
内部で Vellum Constraint Properites ノードを使用しています
ここで注意すべきことは、stretch / bend は group で分けられているため、
Group を指定しておく必要があります

あとは keyframe を打つか、 VEX で書くかすると反映されます
VEXでの注意事項は下記です

  • 表記名とパラメータ名は違う
  • @ は不要

if(@Frame > 48) {
  restscale = chf("rest_length_scale");
}

おまけ

また、DOP Network で1から組む版も用意してあります
こちらは Geometry Wrangle を使用しています

DOP 版の VEX は Rest Length Scale がないので、
@restlength *= chf("rest_length_scale"); としてしまうと
毎フレーム計算されてしまうので要注意です

Geometry Wrangle を使う場合、
どの Geometry に対して操作するかを指定する必要があります
今回は ContraintGeometry が対象なので、こんな感じです

よく見ると、
Vellum Constraint Properties ノードも ConstraintGeometry を指定していました

さらに Vellum Constraint Properties ノードも
内部的には掛け算をした結果を Rest Length として保持しており、
Rest Length Scale という Attribute 自体はないことがわかります

余談 - is_patch_installed -

rest length scale の処理を追う過程で、
Vellum Source > single_emission > is_patch_installed を見ていました

こはちょっと特殊で処理が追いにくい (よくわかってない) のですが
Emission Type によって、patchname を持つ point が生成されるかどうか
分岐しているようでした

おそらく patch の compile block が呼ばれなくなるので、add_patchname も実行されず
is_patch_installed 単体が参照されたときには patchname がない
ということなのかな...?

まとめ

パラメータによって、適用方法が異なるのがちょっとわかりにくいポイントですね...

何かあれば Twitter までお気軽にどうぞ~ twitter.com