見出し画像

徐々に布がちぎれる彫刻をつくる

HoudiniのVellumの学習として、彫刻にまとった布が徐々にちぎれ飛ぶシミュレーションのセットアップを行ってみました。

モデルのセットアップ

読み込んだ彫刻のモデルをMatchSizeで大きさを整え、ポリゴン数を調整してEdge Fractureで分割します。
シミュレーションは大きさによって非常に結果が左右されやすいので、MatchSizeが便利ですね。

Remeshで最終的な解像度を変えたいが、ハイポリをいきなりRemeshすると再計算に時間がかかるので、PoluReduceしておいた。
500のピースに分割

彫刻のグループ範囲をアニメーション

移動するSphereのアニメーションを作成して、GroupノードのBounding Objectに設定します。グループの範囲内のbreakアトリビュートを0.00001、範囲外を1に設定します。そして参照して呼び出しやすいように、OUT_breakという名前でnullに接続しておきます。

breakアトリビュートが小さな範囲が徐々に下に降りてくる
グループの範囲

Vellumの設定

Vellum ClothとVellum Stitchを作成して、Vellum Solverに接続します。Vellum Stitchは切断された布をくっつけるノードです。
また元のジオメトリをpeakでわずかに小さくしたモデルをコリジョンオブジェクトとして読み込んでおきます。

Vellum Solver での値の更新

布のちぎれやすさというのは、Vellum Stitchで生成されるbreakthresholdというアトリビュートなのですが、Vellum Solverのアトリビュートはシミュレーションの最初のフレームで初期化されるため(※合ってなかったら指摘もらえると嬉しいです)、Solverの中で値を変更する必要があります。

VellumSolverの中に入り、Geometry Wrangleを作成します。
Geometry WrangleのInputタブでInput1をSOPに変更し、OUT_breakのパスを記載します。
VEXを書いてbreakアトリビュートを、breakthresholdとして受け取ります。

Geometry Wrangle でSOPのアトリビュートを取得できる
Inputはここで変更
// Geometry Wrangle RunOver Point
@breakthreshold = point(0, "break", @ptnum);

まとめ

VellumSolverの中で記述することで、シミュレーション中にVellumのアトリビュートを変更できる。
たぶんこれは、COREではできない?
他の変更方法があれば知りたい。

この記事が気に入ったらサポートをしてみませんか?