On this page |
シミュレーション用の粉砕オブジェクト ¶
リジッドボディシミュレーションにおいて、何かしらの衝撃やフォースによってソリッドオブジェクトを分解させたいことがよくあります。 例えば、地震によって家を破壊させる時に、コンクリートの壁を破壊したり、木材のドアを割ったり、ガラス窓を粉砕したいことがあります。 または、鉄球で壁を打ち抜きたいこともあるでしょう。
-
Houdiniのほとんどの粉砕ツールは、SOPsを使ってジオメトリを分解し、それらの破片を 接着拘束 を使って接合した状態の 事前粉砕 のワークフローに対応しています。 事前粉砕は、破壊のルックをアーティスト目線で完全に制御することができます(例えば、破片を大きなブロックにしたり、小さくギザギザにした破片にすることができます)。 フォースが接着強度を超えた時にオブジェクトが崩れたり、手動で接着の有効無効をアニメーションさせてオブジェクトを分解させることができます。
ジオメトリを事前粉砕するハイレベルなツールこそがRBD Material Fracture SOPであり、色々なタイプの粉砕に対して豊富なコントロールが備わっています。 粉砕に対してもっとコントロールが必要であれば、ローレベルのSOPsがたくさん用意されています。
Image credit: Artem Smirnov
-
DOPシミュレーション中に 動的な粉砕 を行なうこともできます。詳細は、Make Breakableツールのヘルプを参照してください。
一般的なワークフロー ¶
|
異なるマテリアル(コンクリート、木材、硝子)に関係付けられた分解パターンをシミュレーションします。
|
-
RBD Material Fractureノードを使用することで、SOPsでモデルを事前粉砕することができます。
-
RBD Material Fractureは、粉砕した破片間に接着拘束を自動的に作成します。 Constraints タブの Primary Strength に、必要な初期接着強度を設定します。
粉砕オブジェクトをRBDシミュレーションにインポートした後に(次のステップを参照)、RBD Material Fractureノードに戻って設定を編集し、その接着強度を編集することで、接着させる破片の数を制御することができます。
この値は、破片のサイズとウェイト、表現したいエフェクトの種類に依存します。通常では、
1
の値はすぐに分解されます。他のRBDオブジェクトに当たるまでモデルを引っ付けたままにしたいのであれば、そのモデル自体がそのまま十分に維持できて、且つ、衝撃によって拘束が簡単には切れないほどのレベルの強さを接着強度で微調整する必要があります。
-
SOPsを使ったシミュレーションをするならRBD Bullet Solverノードを使用し、DOPsにリジッドボディピースとして粉砕オブジェクトを取り込むなら Rigid Bodies シェルフの RBD Objectsツールを使用します。
利用可能なツールの情報は、この残りのページを参照してください。
Tips ¶
-
Groupノードを使ってプリミティブのグループに名前を付けます。例えば、ドア、個々の窓、壁に対してグループを作成します。これによって、各グループをそれぞれ粉砕させることができます。
-
シミュレーションで破片が揺れてしまっていたら、POP DragノードやPOP Drag Spinノードを追加して、それらの破片をフリーズさせることができます。
-
RBD SOPsの Output for View メニューを使用することで、表示させたい出力を選択することができます。デフォルトでは、1番目の出力(Geometry)が表示されます。しかし、 Constraint Geometry や Proxy Geometry に切り替えることもできます。
-
RBD SOPsの出力上でクリックすると、それぞれの出力のデータが表示されます。さらに、入力上でクリックすると、その入力のジオメトリデータを辿ることができます。
RBD SOPの入力と出力 ¶
RBD Material Fractureノードといくつかの他のRBD SOPノードは、入力と出力の整合性を共有しています。 それによって、粉砕ジオメトリと並行して、ネットワークを通じて拘束ジオメトリとプロキシジオメトリを送信することができます。
-
1番目の入力/出力は、高解像度表示ジオメトリです。
-
2番目の色付きの入力/出力は、拘束ネットワークジオメトリです。
-
3番目の入力/出力は、低解像度プロキシジオメトリです。
低解像度プロキシジオメトリ ¶
RBD Material Fractureノードは、高速な低解像度プロキシジオメトリでも動作します。 同じ名前の破片を持った高解像度ジオメトリと低解像度ジオメトリをセットアップする必要があります(例えば、高解像度ジオメトリを名前の付いた破片に分解してから、それをコピーしてポリゴン数を減らすことで、プロキシを作成することができます)。
クラスタ化 ¶
クラスタ化 とは、粉砕した破片を大きな塊にグループ化することを言います。主なクラスタ化のワークフローが2つあります:
-
大量の破片を永久的に引っ付けたいだけであれば、それらの破片すべてに同じ
name
アトリビュートを設定します。破片に対して動作するノードは、それらの破片を1個の破片として扱います。これは、例えば、木材を割る時に、小さな割れを大きなギザギザの塊にしたい場合に役立ちます。
-
特定の直接的な崩壊エフェクトでは、ショットで最初は大きな破片を扱って、ショットの最後にそれらを小さな破片に分解させたいことがよくあります。これは、接着拘束を階層化することで可能です。高レベルの拘束の無効化をアニメーションさせていくことで、大きな破片から小さな破片へと分解させることができます。
RBD Material Fractureノードは、 Material Type が“Wood”の時にクラスタ化コントロールを用意します。 RBD Clusterノードを使えば、手動でクラスタ化を行なうことができます。
粉砕オブジェクトをDOPsにインポートする ¶
Rigid Bodies シェルフには、ジオメトリオブジェクトをDOPシミュレーションにインポートするためのツールがあります。
|
このツールを使えば、粉砕オブジェクトをインポートすることができます 。これは、名前の付いた破片を自動的に別のBulletオブジェクトとして扱い、その拘束ネットワークジオメトリをBullet拘束に変換します。 |
他のリジッドボディシミュレーションツール:
|
これは、オブジェクトを単体の分解不可な要素としてインポートします。 粉砕ジオメトリのインポートでは、これを使用しないでください 。 |
|
|
このツールは、接着の緩い破片を含んだオブジェクトをインポートして、それらの破片間に接着を追加します。 RBD Material Fractureを使って作成した粉砕ジオメトリのインポートでは、これを使用しないでください 。その理由は、そのノードは既に接着拘束を自動で作成しているからです。 |
|
|
シミュレーションの衝撃に反応して 動的に粉砕 するオブジェクトをセットアップします。 |
|
|
崩れた破片のエッジからパーティクルを生成します。これらのパーティクルを使うことで、煙、埃、中礫などをセカンダリエフェクトとしてインスタンス化することができます。 |
RBD SOPサポートノード ¶
以下のノードは、RBD Material Fractureノードを扱います。これらのノードすべてがRBD Material Fractureと同じ入力と出力を持っています。
|
入力ジオメトリ上にアトリビュートをペイントして、粉砕の挙動を制御することができます。例えば、粉砕を多く発生させたい箇所をペイントすることができます。
|
|
|
SOPレベルで単純なBulletシミュレーションを作成することができます。 Houdini FXライセンスを所有しているなら、このソルバの中に入って、カスタムDOPフォースを使ってそのサブネットを編集することができます。 ライセンスを所有していないのであれば、SOPレベルのままで、このノード上に露出されたパラメータを使用することができます。 |
|
|
RBDオブジェクト別にそれぞれプロパティをセットアップすることができます。 さらに、入力ジオメトリとプロキシジオメトリがアンパックされていなければ、それをパックして、シミュレーションジオメトリ上にアトリビュートを作成します。 |
|
|
拘束ジオメトリを編集します。これは、RBD Material Fractureノードの Constraints タブのパラメータと同等の機能性を備えています。 これを便利なインターフェースとして使用することで、もっと複雑な独自拘束を作成したい場合に、その拘束ネットワークの値を編集することができます。 |
|
|
粉砕後に露呈した内側サーフェスにノイズを追加します。これは、RBD Material Fractureノードの Detail タブのパラメータと同等の機能性を備えています。 |
|
|
破片を大きな破片にグループ化します。これは、 Material Type が“Wood”の時のRBD Material Fractureノードの Cluster タブのパラメータと同等の機能性を備えています。 |
|
|
選択したジオメトリを中心から外に押し出して、粉砕ジオメトリがどのように分解されて拘束されているのかをうまく視覚化することができます。 |
|
|
既存の拘束を受け取って、それらの拘束を異なるタイプの拘束(Center of Mass、Surface Points、Faces)に変換することができます。 |
|
|
粉砕ジオメトリの内側フェースのプリミティブ番号と反対側のフェースまでの距離を記録します。 この情報を使用することで、分解されていない破片の内側フェースを削除するかどうか決めることができます。 |
|
|
繋がっていたフェースが分離されたかどうかを判断し、その結果をアトリビュートとして格納、または、繋がっていた/繋がっていなかったフェースを削除します。 |
|
|
3本のRBD SOP入力(Geometry入力、Constraint Geometry入力、Proxy Geometry入力)を1本の出力に結合します。 |
|
|
Geometry出力、Constraint Geometry出力、Proxy Geometry出力を、別のRBD SOP形式の出力に分割します。 |
|
|
ビューポート内でインタラクティブに描画したラインからリジッドボディ拘束ジオメトリを作成します。 |
|
|
ビューポート内でインタラクティブに描画したカーブからリジッドボディ拘束ジオメトリを作成します。 |
|
|
ルールと条件のセットからリジッドボディ拘束ジオメトリを作成します。 |
関連SOPs ¶
RBD Material Fractureノードは、内部的に以下のローレベルノードを使用しています。必要に応じて、これらのノードを別々に使用することができます。
|
Booleanノードの切断サーフェスの交差を使って、ジオメトリを破片に分割します。 |
|
|
ジオメトリ内のばら撒きポイントから細胞パターンを作成することで、ジオメトリを粉砕します。 |
|
|
(接続性または |
ローレベルSOPs ¶
以下のSOPはローレベルノードであり、RBD Material Fracture SOP内部でたくさん使用して機能が実装されています。 独自の複雑な粉砕処理を行ないたいのであれば、それらのノードを調べると役立つことでしょう。
|
接続性と近接度に基づいた拘束ジオメトリを作成します。これは、RBD Material Fractureに含まれている機能性を実装するためのローレベルノードです。 |
|
|
接続性に基づいて |
|
|
ボロノイ破壊用の非常にローレベルなノード。 |
|
|
ボロノイ破壊用の非常にローレベルなノード。 |
|
|
選択したポイント/プリミティブ上のアトリビュートに連番の数値または文字列を設定します。 これによって、Wrangle SOPを使用しなくても、簡単に破片の名前に接頭辞を付けることができます。 |