RBD Material Fracture SOP その1(Concrete編)


こちらの記事は、Houdini 17.0でアップデートされた際に新しく追加されたノードであるRBD Material Fracture ノードについて、4回に分けて紹介する第1回目の記事となります。

 

先ほども述べたように、RBD Material FractureノードはHoudini 17.0のアップデートで導入されたノードです。

このノードは、現在「コンクリート」・「ガラス」・「木材」の素材に合わせた破壊をすることが可能です。その中でも今回は「コンクリート」の破壊についての説明をしていきたいと思います。

 

ノードの出力についての説明

まずはじめに、このRBD Material Fracture ノードの出力について説明します。こちらのノードは、入力だけでなく出力も複数あり、それぞれ異なる要素が出力されています。それぞれの出力とその出力内容は以下の通りです。

第1出力:高解像度ジオメトリ
第2出力:コンストレイントネットワークジオメトリ
第3出力:低解像度プロキシジオメトリ

第1出力と第3出力の具体的な情報の差は下図の通りです。

(第1出力)

(第3出力)

ご覧の通り、第3出力の方が所持しているデータ量が小さくなっています。こちらを使用することで、シミュレーションは低解像度のジオメトリで扱い、最終的に高解像度のジオメトリに置き換えるということが可能になります。

 

ノードの解説

それでは実際にノードの中身を紹介していきます。

こちらの記事で紹介するのは、RBD Material Fracture ノードの「コンクリート」「ガラス」「木材」のうち、「コンクリート」について紹介していきたいと思います。

※今回は形状の操作に関するパラメータのみを紹介しております。それ以外のパラメータについて詳しく知りたい方はこちらをご覧ください。

 

まず、Material Typeを「Concrete」に設定します。そうすることにより、このノードに接続されたジオメトリをコンクリートのように分割することができます。

 

▼Primary Fractureタブ

・Fracture Level
実行する再帰粉砕のレベル数を設定するパラメータとなっています。大きくすることによって粉砕回数が上がり、分割したものをさらに分割して細かいパーツを作ることが可能です。
Fracture Levelを変更するとすぐ下の数字のタブが増減します。そちらを切り替えることで、各回の設定を個別に行えます。

以下の画像の左はFracture Levelが2、右はFracture Levelが5の時の結果です。

・Cell Points
以下の設定を使用して、分割数を直接的に操作することができます。

Scatter Fromには、以下の選択項目が用意されています。
Volume
自動で生成したFogボリュームに基づいてポイントを散布し、分割します。
Attribute
入力ジオメトリ内の指定したポイントアトリビュートに基づきポイントを散布し、分割します。

・Scatter Points
ジオメトリ内に散布するポイントの数を設定できます。多くすることによって分割数を増やすことができます。
以下の画像は、左がScatter Pointsを5、右がScatter Pointsを50に設定した時の結果です。

・Scatter Seed
散布するポイントのランダムシードの値を設定します。値を変更することで、ポイントのパターンを切り替えられます。

・Input Points
Scatter Fromが「Attribute」となっている際に読み込むアトリビュートを指定するパラメータです。デフォルトではdensityが入力されています。RBD Material Fracture ノード の上流で RBD Paint ノードを使用すると、アトリビュートをジオメトリへのペイントで設定できます。RBD Paintノードのデフォルトもdensityになっています。

・Fog Volume
Scatter FromをVolumeに設定している場合に編集可能となります。パーツのディテールに関連する設定を行います。

・Volume Resolution
fogボリュームの解像度の設定をすることができます。細かなパーツを作る際には高い値を設定する必要がありますが、処理は重くなります。

・Noise Frequency 
ノイズの周波数を設定できます。値を大きくすると、細かいディテールを追加することができます。

・Cutoff Density
この数値以下の密度が破棄されます。Volume Resolutionの値を極端に小さくすると分割が反映されなくなるので、注意が必要です。

これらの項目は、Fracture Levelで1より上の値が入っている場合に追加される数字のタブを、それぞれクリックして切り替えることでレベル2以降の破片についても個別に調整することができます。

 

▼Chippingタブ

・Enable Chippingにチェックを入れることにより有効になります。

Chippingは、破片の角を切り落として切れ端を追加することができます。以下の画像は、Chippingを無効にしている時と有効にした時の比較です。 

・Overall Ratio
破片の中から切れ端を作成する全体比を設定することができます。大きくすることによって、切れ端を多くすることができます。以下の画像は、Overall Ratioが0.5の時と2の時の比較になります。

 

▼Detailタブ

このタブのパラメータでは、破片にノイズを加えることで、ディテールを追加することができます。

・Detail Size
ディテールを追加するポリゴンのサイズを設定することができます。小さくすることにより、さらにディテールを得られます。

・Edge Detail

チェックを入れることにより、破片のエッジにディテールを追加することができます。以下の画像の左がこちらの機能を有効にする前のもので、右が効果を有効にしたものです。

   

・Noise Height
断面のノイズの大きさを調整することができます。しかし、大きくしすぎると形状が破綻してしまうので注意が必要です。以下の左側の画像は0.1、右側の画像は0.5の時の結果です。それぞれの下の画像は、追加でExploded Viewノードを使用して断面を確認できるようにしたときの画像です。

   
   

・Noise Element Size
ノイズのかかる量を調整することができ、数値が大きくなるにつれて面が平らになっていきます。

・Interior Detail
こちらもディテールを調整するものですが、Edge DetailはBooleanを使ってエッジのディテールを取得しているのに対して、Interior Detailは表面からの距離に応じたスケールのかかったノイズを追加することができます。

・ Depth Volume Voxel Size
深度のサンプリングに使用するSDF内のボクセルのワールド空間サイズを調整することができます。数値が大きくなるにつれてディテールが荒くなっていきます。

・Noise Amplitude
変位量のスケールを調整することができます。数値を大きくしすぎたり、逆に小さくしすぎたりすると、ポリゴンが裏返ってしまいますので注意が必要です。

・Noise Type
内側のポイントに追加するノイズのタイプを調整できます。

・Frequency
ノイズの周波数を調整することができます。値が大きいほど細かいディテールを追加することができます。

 

▼Constraintsタブ

このタブでは出力されるコンストレイントジオメトリにコンストレイントプロパティを適用することができます。コンストレイントジオメトリは、シミュレーション時に破片同士をつないだり、引き寄せあったりするために使用するジオメトリです。「RBD Constraint Properties ノード」を使用することにより、さらに高度なセットアップを行えます。

・Glue Constraint Name
DOPネットワークで使用するコンストレイントデータのData Nameを指定します。例えば、Glue Constraint Relationshipノードでデータネームを指定する際に、こちらで設定した名前を使用します。

以下の画像は、左がRBD Material Fracture ノードの画像、右がGlue Constraint Relationshipノードの画像です。以下の画像のように、RBD Material Fracture ノードのConstraintタブで設定したData Nameと同じ名前をGlue Constraint RelationshipノードのData Nameに入力することで、RBD Material Fractureノードで作成したコンストレイントを使用してシミュレーションが行えます。

   

・Primary Strength
最初の分割での接着の強度を設定することができます。

・Level Multiplier
粉砕レベルが上がるごとにPrimary Strengthから乗算する値を設定できます。

・Chipping Glue Strength
切れ端の破片の接着強度の設定をすることができます。

・Strength Variance
各接着強度をランダムに変更させる範囲の設定ができます。

 

▼おまけ(RBD Constraint Properties ノード)

最後に少し「RBD Constraint Properties ノード」の紹介をしたいと思います。

このノードは先ほど紹介しました「Constraintsタブ」の補足になります。このノードを用いることにより、さらに高度にコンストレイントの設定をすることが可能になります。

今回はこちらで扱っているGlueのコンストレイントに関してのみ紹介をしていきます。

・Constraint Group
編集したいコンストレイントアトリビュートのプリミティブを設定できます。ここにはRBD Material Fractureノードで設定しているプリミティブが反映されます。
例えば、回帰のレベル(Fracture Level)を2に設定してChippingを有効にしている際は回帰の2回分とChippingの合計3つのGroupが作成されます。

 

・Constraint Name
DOPネットワークで使用するコンストレイントデータのData Nameを指定します。例えば、Glue Constraint Relationshipノードでデータネームを指定する際に、こちらで設定した名前を使用します。既存のコンストレイントに編集を加えたい場合、RBD Material Fractureノード内で指定したConstraint Nameと同じものを指定する必要がありますので注意が必要です。

・Strength
接着の強度設定ができます。-1とした際には壊れなくなります。

・Strength Variance
各接着強度をランダムに変化させる範囲を指定できます。

・Half-Life
接着の力積が半減するまでの秒数を設定できます。

・Propagation Rate
各接着に対して衝撃が伝わる速さを設定できます。

 

以上がRBD Material Fractureノードの「コンクリート」に関しての説明になります。次回以降の記事では、残りの「ガラス」「木材」について紹介致します。

こちらの記事で利用しました.hipファイルは、こちらのURLよりダウンロードが可能です。ダウンロードにはインディゾーンHoudini AUPユーザーの方に配布しております、パスワードが必要になりますので予めご了承ください。