[Houdini] Vellum Post-Process を読んでみた
概要
今回は Vellum Post-Process を読んでみたいと思います
メモを残した hip ファイルはこちら
こんなかんじ
環境
OS: Windows 10
Houdini: 19.5.435
Redshift: redshift_v3.0.62 (たぶん)
Geforce Game Ready ドライバー: 526.98
読んでいく
restMetric
- TriARAP (== triarap || triarapnl || triarapnorm) : restvector を2×2行列とし、
その逆行列のノルムを計算 - TetFiber (== tetfiber || tetfibernorm) : restmatrix の逆行列のノルムを計算
- それ以外 : restlength をそのまま返す
weldTarget
weld の対象の pt を返します、が
見つからなければ自身の ptnum が返ってくることに注意
ensure_cd_available
Point 以外に Cd を持っていると、Attribute を設定した順番等により
優先される Cd が変わるっぽい?です
(手元では最後に設定した Cd Attribute が勝つっぽい)
ので、不要な Cd は消しておくということをしています
copy_old_p1/p2
@opinput1_P を使っているだけなので、その前の subdivide は不要になりそう...
computeCmAndRot
rest / P それぞれの重心を求めます (Cm == Center of Mass)
foreach 内の q, p は偏差を求め、outerproduct で掛け合わせることで
共分散行列を求めているようです
その行列から回転成分を抽出しています
(ちょっとouterproductで生成した行列から extractRotation するところの
理解が怪しいので、自信がないですが...)
Tips
wrangle の Number of Bindings
いままであんまり見かけなかったので書いておきます
f@attribs = f@stress;
こんなかんじで、任意の Attribute Name を vex 内でパラメータとして使えます
detailintrinsic
string attribs[] = detailintrinsic(0, "pointattributes");
こうすると、point attribute 名を配列で取得できます
Geomerty SpreadSheet の Intrinsics から指定できる intrinsic が確認できます
@opinput1_Cd
こちらもあまり見かけなかったので
polydoctor
まとめ
テンソル積、多様体などが出てきて数学わからない...となっていました...
この辺がわからなくても使えるのはありがたいのですが、
知っていた方がいい、それはそう...
何かあれば Twitter までお気軽にどうぞ~ twitter.com