このチュートリアルは、「【初心者向けHoudiniトライアル008】ガラスの破片の情報を修正する」の続きです。
使用するHoudiniバージョン
Houdini 18.0.460
コンストレインネットワークを調整
コンストレインネットワークでは、シミュレーションオブジェクトの拘束を行います。
コンストレインネットワークがないと破片がどうなるのか確認してみましょう。
- ネットワークエディタでyキーを押すと鋏のアイコンに代わります。
- そのままRBD Configure とRBD Bullet Solverのコンストレインネットワークをドラッグし接続を削除します。
- アニメーションを再生します。
破片同士をつなぐコンストレインが削除されたので、1フレーム目から破片が崩れていきます。
- 再度コンストレインネットワークの入出力をつなぎます。
DOPで破片同士を拘束するためには、SOP にて定義を行う必要があります。そのため必要な定義は、RBD Material Fractureで行われました。
- RBD Material FractureにてGuide GeometryをConstraint Networkに設定します。
- wキーを押してワイヤーフレーム表示に切り替えることが可能です。
赤いワイヤーにて粉砕された破片の内部コンストレインネットワークを表示されます。
ジオメトリの各ポイントは、コンストレインのアンカーを意味し、それはnameとP(位置)のアトリビュートに準じています。そして、作成するコンストレインの Data Name を指定します。 このアトリビュートが存在しない、または名前が無効な場合、プリミティブからコンストレインが作成されません。
- Constrainsタブを開きます。
Glue Constraie NameにてGlueという文字列が入力されています。
これがコンストレインジオメトリに必要なconstraint_name プリミティブアトリビュートの値となります。これは上記で説明した通り、コンストレインのデータタイプとなります。Glue Constraint では、オブジェクトは、接着ボンドを離すのに十分な力が加わるまで1つの全体的なオブジェクトとして動きます。
Radial Strengthは、放射状の亀裂間の接着ボンドの強度、Concentric Strengthは同心円状の亀裂間の接着ボンドの強度、Chipping Strengthは角の切れ端の接着ボンドの強度となります。
- 各値を下記のように設定します。
- Nullを作成し、RBD Material Fractureのコンストレインジオメトリの出力をNullに接続します。
この状態でNullを選択し、Geometry Spreadsheetを確認します。
表示する対象をPrimitivesに設定すると、作成されたコンストレインジオメトリのプリミティブアトリビュートが表示されます。
constraint nameアトリビュートが作成され、その値にGlueという文字列が設定さていることがわかります。constrain typeアトリビュートは、通常コンストレインがposition、rotation、allのどの自由度に影響を与えるのかを指定します。
- 次にRBD Bullet Solverのコンストレインネットワーク出力をNullに接続し、ビューポートで確認します。
1フレームではガラスの破片全体を繋ぐようにコンストレインジオメトリが張り巡らされています。
フレームを進め、Sphereが衝突すると同時にいくつのコンストレインジオメトリが削除されていることがわかります。
コンストレインがソルバによって外されるかどうかは、RBD Bullet SolverのConstrainsタブ>Breaking Thresholdsにて設定することが可能です。
この中にはconstrain nameに対して、どの処理を行うのかModeで決定します。
そして、その処理を行う条件を細かく指定することができます。
例えば、Glueコンストレインを5フレームで外すと設定します。
- Constraint Namesで事前に作成したGlueコンストレインを指定します。
- At Frameを有効に設定し、フレームを5に指定します。
- Distance Thresholdは無効にします。
- これでコンストレインを表示しながら、シミュレーションを実行すると5フレームでコンストレインが外され、それ以降破片が崩れていきます。
- 確認出来たらAt Frameはいったん無効にします。
一気にバラバラにしないためにも、コンストレインにグループを作りたいと思います。
まず最初にコンストレインを削除する場所を決定しグループ化します。
現在、シミュレーションを再生するとSphereが衝突した部分は破片がくずれますが、それ以上ガラスがわれません。そのため、下図で赤丸で囲んだ部分のコンストレインを外していきたいと思います。
- RBD Material Fractureのコンストレインジオメトリの出力にGroupノードを追加します。
このGroupノードは指定したタイプをグループとしてまとめ、登録することができます。
- RBD Material FractureにTemplateフラグを設定し、Wキーを押して、Wireframeモードにしておきます。
- Groupノードのプロパティにて、Group Nameをfirst、Group TypeをPrimitivesに設定します。
Base Groupの横にある選択アイコンをクリックします。
- オレンジ色で表示されたエッジあたりを選択し、Enterキーを押します
Base Groupに今選択したプリミティブが追加されます。
- さらに2つ目のグループを追加します。
- 2つ目のグループのGroup Nameはsecondにします。
- Base Groupの選択ボタンをクリックし、下記のオレンジのプリミティブをグループに追加します。
- 3つ目のグループを追加し、Group Nameをbottomとします。
- 下記のオレンジ色になっているプリミティブを選択してグループに登録します。
- 追加したGroupの出力をRBD Bullet Solverのコンストレインジオメトリ入力に接続してください。
これでコンストレインを外していく準備が整いました。
追加した3つのグループを使用し、順にコンストレインを外していきます。
始めは左端のコンストレインから外していきます。
十分にSphereが衝突した箇所が割れてから、左端のコンストレインを外したいと思います。
- 一度再生し、衝突した箇所が蜘蛛の巣上に十分にわれたフレームを確認します。
- RBD Bullet Solverを選択します。
- Constraintsタブ>Breaking Thresholdsを選択します。
- Constraints Namesは、Glueと入力します。
- Groupはfirstに指定します。
- At Frameを有効にし、6フレームを指定します。
- 再生します。
6フレームで左端のコンストレインが外されるため、ガラスが上下にわれ後ろに倒れていきます。
- 次に2つの設定を追加します。
Breakingの横の+マークをクリックして2つ目のルールを追加します。
今度は下の塊が倒れていく途中で右端のコンストレインを外します。
- 下記のように設定してください。
- 再生して確認します。
最後にしたの破片の塊が床に落ちた時点で、Bottomグループのコンストレインを外します。
- Breaking Thresholdsに3つ目のルールを追加します。
- 設定が完了しましたら、再生します。
下の破片がすべて粉々に割れました。
これで最初の衝突もいれると4段階にわけれコンストレインを外してガラスを割るアニメーションを作ることができました。
【初心者向けHoudiniトライアル010】割れる前にひびがみえちゃう!RBD Disconnected Facesでばっちり修正!へ続く