Houdini 17.0 ダイナミクス

シミュレーション用の粉砕オブジェクト

On this page

概要

リジッドボディシミュレーションにおいて、何かしらの衝撃やフォースによってソリッドオブジェクトを分解させたいことがよくあります。 例えば、地震によって家を破壊させる時に、コンクリートの壁を破壊したり、木材のドアを割ったり、ガラス窓を粉砕したいことがあります。 または、鉄球で壁を打ち抜きたいこともあるでしょう。

  • Houdiniのほとんどの粉砕ツールは、SOPsを使ってジオメトリを分解し、それらの破片を 接着拘束 を使って接合した状態の 事前粉砕 のワークフローに対応しています。 事前粉砕は、破壊のルックをアーティスト目線で完全に制御することができます(例えば、破片を大きなブロックにしたり、小さくギザギザにした破片にすることができます)。 フォースが接着強度を超えた時にオブジェクトが崩れたり、手動で接着の有効無効をアニメーションさせてオブジェクトを分解させることができます。

    ジオメトリを事前粉砕するハイレベルなツールこそがRBD Material Fracture SOPであり、色々なタイプの粉砕に対して豊富なコントロールが備わっています。 粉砕に対してもっとコントロールが必要であれば、ローレベルのSOPsがたくさん用意されています。

  • DOPシミュレーション中に 動的な粉砕 を行なうこともできます。詳細は、Make Breakableツールのヘルプを参照してください。

一般的なワークフロー

RBD Material Fracture

異なるマテリアル(コンクリート、木材、硝子)に関係付けられた分解パターンをシミュレーションします。

  • 複数レベルでの粉砕を繰り返すことができます。

  • 低解像度のプロキシジオメトリをシミュレーションして、その破片トランスフォームを高解像度ジオメトリにコピーすることができます。

  • 破片間に接着拘束を自動的にセットアップします。

  • 粉砕時に既存の拘束ジオメトリを更新します。

  • もっと複雑な後処理をしたいのであれば、粉砕に関する情報をグループやアトリビュートとして出力します。

  1. RBD Material Fractureノードを使用することで、SOPsでモデルを事前粉砕することができます。

  2. RBD Material Fractureは、粉砕した破片間に接着拘束を自動的に作成します。 Constraints タブの Primary Strength に、必要な初期接着強度を設定します。

    粉砕オブジェクトをRBDシミュレーションにインポートした後に(次のステップを参照)、RBD Material Fractureノードに戻って設定を編集し、その接着強度を編集することで、接着させる破片の数を制御することができます。

    この値は、破片のサイズとウェイト、表現したいエフェクトの種類に依存します。通常では、1の値はすぐに分解されます。

    他のRBDオブジェクトに当たるまでモデルを引っ付けたままにしたいのであれば、そのモデル自体がそのまま十分に維持できて、且つ、衝撃によって拘束が簡単には切れないほどのレベルの強さを接着強度で微調整する必要があります。

  3. オブジェクトレベルに戻って、粉砕オブジェクトを選択します。 Rigid Bodies シェルフタブの RBD Objectsツールをクリックして、そのオブジェクトをリジッドボディの破片としてDOPsに取り込みます。

利用可能なツールの情報は、この残りのページを参照してください。

Tips

  • Groupノードを使ってプリミティブのグループに名前を付けます。例えば、ドア、個々の窓、壁に対してグループを作成します。これによって、各グループをそれぞれ粉砕させることができます。

  • シミュレーションで破片が揺れてしまっていたら、POP DragノードやPOP Drag Spinノードを追加して、それらの破片をフリーズさせることができます。

破片の事前拘束

複数の接続された破片を色々な方法で粉砕させたい場合、RBD Material Fractureを使って分解させる前に、 オプションで Connect Adjacent Piecesノードを使って、それらの破片間に接着拘束をセットアップすることができます。

例えば、家を破壊する場合、ドアと窓をそれらが組まれている壁に拘束して開始することができます。

RBD Material Fractureノードは、個々のオブジェクトを分解する時に、知的に既存の拘束の更新を試みます。 そのため、例えば、1枚の窓ガラスがそれを囲んだ窓枠に取り付けられている場合、RBD Material Fractureがその窓ガラスを粉砕しても、外側の破片はその窓枠に取り付けられた状態を維持します。

RBD SOPの入力と出力

RBD Material Fractureノードといくつかの他のRBD SOPノードは、入力と出力の整合性を共有しています。 それによって、粉砕ジオメトリと並行して、ネットワークを通じて拘束ジオメトリとプロキシジオメトリを送信することができます。

拘束ネットワーク

Houdiniは、 拘束ジオメトリ を使ってSOPsで拘束をセットアップすることができます。 この拘束ジオメトリは、ジオメトリ破片間の拘束の関係性を示したアトリビュート付きのポリラインセットです。 この拘束ジオメトリは、DOPネットワークに取り込まれた時に、それに該当するDOP拘束に変換されます。 これによって、ジオメトリとアトリビュートの編集に特化した多くのSOPノードを使って、拘束をセットアップ、編集、可視化するのが簡単になっています。

  • 各拘束は、2点間ポリラインで表現されています。

  • 各ポリラインは、拘束タイプを指定したconstraint_type Primitiveアトリビュートを持っています。よく使用する2つのRBD拘束タイプは、gluesoftの拘束です。

    Glue 拘束は、フォースの量が 接着強度 を超えない限り、2個の破片間の接着を維持します。

    Soft 拘束は、スプリングと同様ですが、伸縮ではなく割れるまで屈曲します。

  • ポリラインには、拘束に関係のあるPrimitiveアトリビュートを追加することができます。例えば、接着拘束ならstrength、ソフト拘束ならstiffnessdampeningがあります。

  • 2個の端点にはそれぞれ、その端点が表現する破片の名前を指定したnameアトリビュートが付いています。

  • この端点の位置は、例えばアンカーポイントとして別の拘束に使用することができます。

Connect Adjacent Pieces SOPを使えば、拘束ジオメトリをセットアップすることができ、RBD Constraint Properties SOPノードを使えば、拘束ジオメトリを編集することができます。

Constraint Network DOPのヘルプには、拘束ネットワークに関する詳細情報が載っています(Constraint Networkは、SOP拘束ジオメトリをそれに相当するDOP拘束に変換する役割をするローレベルDOPノードです)。

低解像度プロキシジオメトリ

RBD Material Fractureノードは、高速な低解像度プロキシジオメトリでも動作します。 同じ名前の破片を持った高解像度ジオメトリと低解像度ジオメトリをセットアップする必要があります(例えば、高解像度ジオメトリを名前の付いた破片に分解してから、それをコピーしてポリゴン数を減らすことで、プロキシを作成することができます)。

クラスタ化

クラスタ化 とは、粉砕した破片を大きな塊にグループ化することを言います。主なクラスタ化のワークフローが2つあります:

  • 大量の破片を永久的に引っ付けたいだけであれば、それらの破片すべてに同じnameアトリビュートを設定します。破片に対して動作するノードは、それらの破片を1個の破片として扱います。

    これは、例えば、木材を割る時に、小さな割れを大きなギザギザの塊にしたい場合に役立ちます。

  • 特定の直接的な崩壊エフェクトでは、ショットで最初は大きな破片を扱って、ショットの最後にそれらを小さな破片に分解させたいことがよくあります。これは、接着拘束を階層化することで可能です。高レベルの拘束の無効化をアニメーションさせていくことで、大きな破片から小さな破片へと分解させることができます。

RBD Material Fractureノードは、 Material Type が"Wood"の時にクラスタ化コントロールを用意します。 RBD Clusterノードを使えば、手動でクラスタ化を行なうことができます。

粉砕オブジェクトをDOPsにインポートする

Rigid Bodies シェルフには、ジオメトリオブジェクトをDOPシミュレーションにインポートするためのツールがあります。

RBD Objects

このツールを使えば、粉砕オブジェクトをインポートすることができます 。これは、名前の付いた破片を自動的に別のBulletオブジェクトとして扱い、その拘束ネットワークジオメトリをBullet拘束に変換します。

他のリジッドボディシミュレーションツール:

RBD Hero object

これは、オブジェクトを単体の分解不可な要素としてインポートします。 粉砕ジオメトリのインポートでは、これを使用しないでください

RBD Glued Objects

このツールは、接着の緩い破片を含んだオブジェクトをインポートして、それらの破片間に接着を追加します。 RBD Material Fractureを使って作成した粉砕ジオメトリのインポートでは、これを使用しないでください 。その理由は、そのノードは既に接着拘束を自動で作成しているからです。

Make Breakable

シミュレーションの衝撃に反応して 動的に粉砕 するオブジェクトをセットアップします。

Debrisシェルフツール

崩れた破片のエッジからパーティクルを生成します。これらのパーティクルを使うことで、煙、埃、中礫などをセカンダリエフェクトとしてインスタンス化することができます。

RBD SOPサポートノード

以下のノードは、RBD Material Fractureノードを扱います。これらのノードすべてがRBD Material Fractureと同じ入力と出力を持っています。

RBD Paint

入力ジオメトリ上にアトリビュートをペイントして、粉砕の挙動を制御することができます。例えば、粉砕を多く発生させたい箇所をペイントすることができます。

  1. ネットワーク内のRBD Material Fractureノードの上流で、このノードを配置します。

  2. このノードを使用することで、粉砕を多く発生させたい箇所にdensityアトリビュートをペイントすることができます。

  3. そのノードの下流にあるRBD Material Fractureノードで、 Scatter From を"Attribute"に設定します。

RBD Constraint Properties

拘束ジオメトリを編集します。これは、RBD Material Fractureノードの Constraints タブのパラメータと同等の機能性を備えています。

もっと複雑な独自拘束を構築したい場合には、このノードを拘束ネットワークの値を編集するための便利インターフェースとして使用することができます。

RBD Interior Detail

粉砕後に露呈した内側サーフェスにノイズを追加します。これは、RBD Material Fractureノードの Detail タブのパラメータと同等の機能性を備えています。

RBD Cluster

破片を大きな破片にグループ化します。これは、 Material Type が"Wood"の時のRBD Material Fractureノードの Cluster タブのパラメータと同等の機能性を備えています。

RBD Pack

3本のRBD SOP入力(Geometry入力、Constraint Geometry入力、Proxy Geometry入力)を1本の出力に結合します。

RBD Unpack

Geometry出力、Constraint Geometry出力、Proxy Geometry出力を、別のRBD SOP形式の出力に分割します。

関連SOPs

RBD Material Fractureノードは、内部的に以下のローレベルノードを使用しています。必要に応じて、これらのノードを別々に使用することができます。

Boolean Fracture

Booleanノードの切断サーフェスの交差を使って、ジオメトリを破片に分割します。

Voronoi Fracture

ジオメトリ内のばら撒きポイントから細胞パターンを作成することで、ジオメトリを粉砕します。

Exploded View

(接続性またはnameアトリビュートに基づいて)お互いにジオメトリを引き離します。このノードは、破片の形状を可視化するのに役立ちます。

ローレベルSOPs

以下のSOPはローレベルノードであり、RBD Material Fracture SOP内部でたくさん使用して機能が実装されています。 独自の複雑な粉砕処理を行ないたいのであれば、それらのノードを調べると役立つことでしょう。

Connect Adjacent Pieces

接続性と近接度に基づいた拘束ジオメトリを作成します。これは、RBD Material Fractureに含まれている機能性を実装するためのローレベルノードです。

Assemble

接続性に基づいてnameアトリビュートを破片に割り当てます。

Voronoi Fracture Points

ボロノイ破壊用の非常にローレベルなノード。

Voronoi Split

ボロノイ破壊用の非常にローレベルなノード。

ダイナミクス

ダイナミクスの学習

衝突オブジェクト

シミュレーションタイプ

Vellum

非DOPシミュレーション

次のステップ