概要
こちらの続きです
環境
OS: Windows 10
Houdini: 19.0.622
Redshift: redshift_v3.0.62 (たぶん)
読んでいく
Weld Points
ドキュメントより
これ自体は拘束ではありませんが、weldアトリビュートを編集して、計算用にポイントを論理的に単一ポイントに結合します。 しかし、それらのポイントは独立したポイントの状態のままです。 さらに、これは、論理的に結合されたエッジの箇所にBend拘束を構築して、その結果を一枚の平坦なピースのように作用させることができます。 Vellum Post Process SOPは、シミュレーション後のそれらのWeld頂点を、レンダリングでジオメトリが繋がっているように見えるように繋ぎ直すことができます。
他と比べるとややノード量があります
create_welds
Constrain to Closest Point が有効なときは nearpoint
で、そうでないときは自身の ptnum を使って
__targetsrc
グループから point を探し出します
すでに有効な weld
or id
を持っているときは、それを使います
なければ 上記で見つけた point を設定します
id
Attribute がある : weld は point ID
id
Attribute がない : weld は ptnum
値が1または自身を参照している場合は、接合なしを意味しますが、他のポイントからは、このポイント に 接合することができます。 idアトリビュートが存在しなかった場合は、この値はポイント番号を意味します。存在すれば、それはポイントIDです。
collapse_welds
id
があり、有効な ptnum
が見つかれば、その値で weld
を上書きします
自身と結合しようとしている weld
を無効化しておきます
scale_stretch_breaking2
__stretchsrc
に属しており、有効な weld
がある場合に下記を設定します
- breakthreshold (設定に応じてScaleする)
- breaktype (Breaking の Type)
add_bend_constraints3
createDihedralConstraintFromNewlyWeldedPrimitives の話ですが、
Bend Across Triangles の createDihedralConstraint
とほぼ同じ内容なので省略します
copy_bend_attributes
対象 prim から取得した point が属する prim を対象に
__bendconstraints
に属していない かつ type が bend
のprimが持つ値を
合算し平均を取ったものを設定します
- stiffness
- dampingratio
reset_welded_restvectors
以前から少し出ていた restVector
ですが、ここで再計算しておくようです
Struts
ドキュメントより
各ポイントが、自身のピースのメンバーで真っ直ぐな見通し線の方向にある反対側のポイントを検索します。 Struts(支柱)は、各ポイントとそのポイントの間にDistance拘束を構築します。 これは、完全にFEMによる解法を使わずに、オブジェクトの剛性と体積を表現した内部支柱のような、たくさんの楊枝を構築します。
- 対象としている point から Direction Attribute ( N ) から ray を飛ばし、
最初に交差した prim を見つけます - その prim が持つ point のうち対象と同一 class ではない (自身でもない) もので
一番近い point (bestpt) を取得します
Test Normals が有効な場合、
bestpt の normal と Direction Atttribute の内積が 0 以上のものを採用します
対象としている point と bestpt を結び、下記を設定します
- __stretchconstraints (group)
- restlength (対象としている point と bestpt の距離) * Rest Length Scale (Stretch の Rest Length Scale の値)
- type (ここでは
distance
) - Stiffness (Stretch の Stiffiness の値)
- Damping Ratio (Stretch の Damping Ratio の値)
remove_duplicates
にて、__stretchconstraints
を対象に
primpoints で取得できるポイント番号が完全に一致するものを削除しておきます
Tips
各略称
tgt : target
Wrangle の Enforce Prototypes
idtopoint
id
Attribute があれば、その値をもとに ptnum を返します
なければ、ptnumがidとして使用され、大体のケースはptnumがそのまま返ってきます
Rewire Vertices
Fuse
より自由に再接続できるノード
まとめ
過去に見てきた処理と重複するとこがちらほら出てきました
思ったよりこのシリーズが長くなってきましたが、引き続き読んでいこうと思います
何かあれば Twitter までお気軽にどうぞ~ twitter.com