てんちょーの技術日誌

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

[Houdini] Vellum Post-Process を読んでみた

概要

今回は Vellum Post-Process を読んでみたいと思います

メモを残した hip ファイルはこちら

drive.google.com

こんなかんじ

環境

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 名を配列で取得できます

www.sidefx.com

Geomerty SpreadSheet の Intrinsics から指定できる intrinsic が確認できます

@opinput1_Cd

こちらもあまり見かけなかったので

houdinifx.jp

polydoctor

www.sidefx.com

まとめ

テンソル積、多様体などが出てきて数学わからない...となっていました...
この辺がわからなくても使えるのはありがたいのですが、
知っていた方がいい、それはそう...

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