On this page |
概要 ¶
ソフトボディにPosition Based Dynamicsの手法を使用する主な利点は、その制御性、安定性、そして信頼できる結果を迅速に生成することができることです。 現実世界の精度と挙動を理由にソフトボディを作成するのであればFEMの手法の方が好ましいかもしれませんが、Vellumを使用する利点は、非常に高速で、複数の拘束タイプを使って非常にうまく動作し、その結果が視覚的に妥当で現実的なことです。 選択すべきメソッドは、あなたが作成したいシーンとソフトボディのタイプによって異なります。
Strut Softbody vs Tetrahedral Softbody ¶
Vellum Strut Softbodyツールは、向かい側の内部ポイント間で形成されたランダムなStruts(支柱)の集合体を使って、ほぼ体積が維持された形状を生成します。 これは、ポイントと向かい側のポイントを楊枝で接続したようなもので、何か突っつかれたようなアーティファクトが発生します。 また、オリジナルのジオメトリを使ってシミュレーションを行ないます。
Vellum Tetrahedral Softbodyツールは、PolyreduceやRemeshを使って低解像度プロキシを作成し、シミュレーションの前に入力ジオメトリを四面体化します。 四面体メッシュを作成したら、そのオブジェクトの全体的な形状が維持されるようにスプリングとして作用する距離拘束を各エッジに沿って作成して、その四面体自体が潰れないように体積を維持するためのボリューム拘束を作成します。 シミュレーションが完了したら、Point Deformを使って、自動的にそのジオメトリをキャプチャして変形させます。
Note
他にもTabメニューからVellum Configure Tetrahedral Softbodyを配置することができます。 しかし、この方法だとジオメトリを四面体化するTet Conformノードしか作成されません。 そのため、シェルフツールを使用した時のようにジオメトリをPolyreduceしてRemeshするといった処理が行なわれません。 ジオメトリを四面体化する前にPolyreduceとRemeshを行ないたくない場合には、この方法が役に立ちますが、処理が遅くなるだけでなく、四面体サイズがほぼバラバラになってしまうため目的の剛性を得るのが難しくなってしまいます。 この方法は上級ユーザ向けです。
ソフトボディのタイプの違い ¶
Vellum Balloon, Vellum Strut Softbody, Vellum Tetrahedral Softbodyはどれもグニャグニャと伸びるオブジェクトのように見えますが、主な違いは体積を維持する方法です。
Vellum Balloonは、Pressure Constraint(圧力拘束)を使って布を均一に外側に押し出して全体の体積を維持します。 つまり、圧搾した領域ほど強く膨らみます。 Vellum Balloonの名前が示すとおり、これは、風船のように完全に閉じたオブジェクトの体積を維持したいようなソフトボディで役に立ちます。
Vellum Tetrahdral Softbodyは、四面体単位で体積を維持するので、もっと局所的に体積が維持されます。 これは、有機的な材質のような物で役に立ち、ある領域を押し込んでもその局所的な部分で体積が維持されます。
Vellum Strut Softbodyは、向かい側の内部ポイント間で形成されたランダムなStruts(支柱)の集合体を使うので、体積をまったく維持しません。 これは、中に大量のバネが仕込まれたオブジェクトのように振る舞い、そのオブジェクトの形状を維持しようとする動きをします。
Vellum Fiber ¶
Vellum Fiberは、一種のソフトボディ拘束であり、ジオメトリを繊維方向に沿って圧縮して、その体積維持の結果として逆方向にジオメトリが反発するようになります。
Fiber(繊維)拘束のセットアップ ¶
-
分割数を多くした矩形ブロックなどのジオメトリを作成します。
-
TabメニューからVellum Configure Tetrahedral Softbodyを配置します。
-
vellumdistance1ノードの Stretch Stiffness を
100
に設定します。 -
vellumtetvolume1ノードの Stretch Stiffness を
1e+10
に設定します。 -
Vellum Constraintsノードを追加して、 Constraint Type を Tetrahedral Fiber に変更します。
-
Output Group を
fiber
に、 Stiffness を0
に設定します。 -
Vellum Solverを追加して、 Ground Position チェックボックスを有効にします。これは、作成したボックスが落下しないように地面を有効にします。
Note
ボックスと地面が交差したら、その地面を下げてください。
-
Vellum Solverの中に入って、ジオメトリをアニメーションさせるためにVellum Constraint Propertyを作成します。
例えば、 Group を
fiber
に、 Stiffness を10
に設定して、以下のVEXpressionを使えば、時間の経過と共にジオメトリを収縮/膨張させることができます。stiffness *= 1 - cos( radians(@Frame - 1)*3 );
これは、ボックスをZ軸方向に圧縮して、体積が維持されるようにそのボックスはX軸とY軸に沿って反発して高さと幅が広がります。
Note
このFiber Constraintsは反発を引き起こしません。 この反発はVellum Constraintsによって引き起こされます。 Fiber Constraintsのみを適用した場合、ボックスは1方向に圧縮されますが、他の方向に反発しません。