1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RBD Material Fracture [Mardini2024]

Last updated at Posted at 2024-04-30

これはMardini2024のDay13 RBD Material Fractureの動画を視聴してまとめたものです。

動画

image.png

公式のサンプルファイル

Day12 Vellum Configure Grains | Day13 RBD Material Fracture | Day14 Cloud Shape Generate

RBD Material Fractureノードは、ジオメトリをマテリアル(材質)に基づいて破壊するために使用されます

image.png

要約

  • コンクリート、ガラス、木材などの材質タイプを選択できます
  • ノイズパターンやスキャッタリングされたポイントに基づいて破壊パターンを制御できます
  • チッピングやエッジのDetail、内部のDetailを追加して、リアルな破壊表現が可能です
  • プロキシジオメトリを使用して、シミュレーションのパフォーマンスを最適化できます
  • 破壊後のピースをつなぐコンストレイントの強度を調整できます
  • 破壊をピースごとに適用することで、均一な破壊が可能になります
  • ガラスの破壊では、放射状と同心円状のクラックの強度を個別に制御できます
  • RBD Connected FacesとRBD Disonnected Facesを使用して、ガラスの破壊をより現実的に表現できます

サンプル

image.png

RBD Material Fractureノードの基礎の例

image.png

複数のジオメトリを破壊する場合の例

image.png

ガラスの破壊をシミュレーションの例

image.png

木材の破壊をシミュレーションの例

image.png

RBD Material Fractureノード

image.png

RBD Material FractureノードはSOPレベルで作成します。ジオメトリを接続することで、内部のエッジや面を持つ破壊状態を作ることができます。

  • ジオメトリを作成し、「RBD Material Fracture」ノードを追加します
  • 材質タイプ(コンクリート、ガラス、木材など)を選択します ※デフォルトはコンクリートです
  • 破壊表現が見えにくい場合は、ExplodedViewを使用できます

image.png

コンクリート

image.png

ガラス

image.png

木材

image.png

Primary Fracture:破壊のレベルとスキャッタリングパラメータ調整

実際の破壊の形状は、このPrimaryFractureによって設定されます。デフォルトでは2つのFractureLevel(破壊レベル)があります。レベル1とレベル2のタブがあります。
image.png

デフォルトではこの設定ですが、実際にはいい感じに値を変更したりFracture Levelを追加したりします。

image.png

仕組みとしては、ボリューム内にポイントをばらまいて(スキャッタリングして)います。
フォグボリュームは、ノイズパターンの影響を受けます。破壊しようとしているジオメトリが小さいほど、Frequency(周波数)とResolution(解像度)を上げる必要があります。場合によってはノイズパターンが破壊しようとしているジオメトリをカバーできない状況になることがあるからです。

  • 小さいジオメトリを扱う場合は、Frequencyを上げる

ここで、Fracture Levelを2から1に落としてみると、ピースの数は5つになります。
各ポイントがボリューム内でスキャッタリングされ、各ピースの中心点になります。

image.png

ジオメトリスプレッドシートでもPiece数を確認できます。

image.png

Scatter Seedを変更すると、中心となるポイントの分布が変化し、フラクチャの形状が変化します。
image.png

そこまでランダムに分布させたくない場合は、RBDMaterial Fractureの4番目の入力を使って、フラクチャの発生箇所を正確に定義することができます。Scatter(Force Total Count:20)をSphereの下に配置し、GroupでSphereのプリミティブの上部を選択します。

image.png

image.png

しかしそのままの設定では何も変化はありません。ScatterPointを0に設定し、代わりにInput Pointsを有効にします。もしFracture Levelが2であれば1に。これで入力したポイントを元に破壊することができます。ポイントが散布された場所が最もフラクチャの破片が集中しています。便利!ここで一度減らしたFracture Levelを元に戻すと、Fracture 1では入力ポイントベースで、Fracture 2ではボリュームベースで組み合わした状態で破壊することができます。

image.png

Detail:エッジと内部のDetail追加

現状すべてのエッジが完全に直線であり、小さな欠けもありません。もう少し複雑な感じにしたい場合は、チッピングを使用します。

image.png

Enable Chippingを有効にすると、小さな破片のフラクチャージオメトリができます

image.png

チッピングを一度無効にして、Detailタブに移動します

image.png

Detailタブ内は、エッジの形状などを制御することができます。ここでEdge Detailを追加すると、内部ジオメトリの解像度が上がり、エッジに形状が追加されます。Noise Height(高さ)とNoiseElementSize(ノイズサイズ)でノイズを制御できます。このノイズはジオメトリのサイズに依存します。大きなジオメトリでは、それに応じたノイズサイズにする必要があります。

image.png

内部により複雑なノイズを追加する場合、ここのInterior Detailを有効にします。これでけっこう現実的な破壊表現になります。

image.png

image.png

Proxy Geometry:プロキシジオメトリの設定

Proxy Geometryは、ノイズを加えた高解像度メッシュの低解像度バージョンで、シミュレーションに使用するものです。
RBD Material Fractureノードの3番目の出力から確認できます。これがシミュレーションされるものです。

image.png

プロキシの他の設定は、Convex Decomposition(凸分解)、PackedSphereがあります。

image.png

これは前回の記事でも見たように、Vellum Configure Grainノードに関連しています。最大球、最小半径、最大半径、入力ジオメトリの解像度を定義するボクセルサイズなど設定できます。

Constraints:破壊後のピースをつなぐコンストレイント強度

image.png

Constraintsタブのデフォルトでは、すべてが接着された状態となります。つまりBulletソルバー(GroundPlane追加)に入れて実行しても壊れません。なぜ壊れないかというと、ConstraintsのPrimary Strengthが非常に高いためです。

image.png

image.png

デフォルトでは10000という大きい値になっているので、10に下げてみます。もう一度落下させると今後はバラバラになります。

image.png

RBD Material Fracture + RBD Exploded View

これらのコンストレイントの状態を表示したい場合は、RBD Exploded Viewが便利です。

image.png

  • 白い輪郭線:プロキシジオメトリ
  • 各ピースを接続するコンストレイントのプレビューが可能

image.png

複数のジオメトリを破壊する場合

image.png

image.png

ボックスの束を持つこのジオメトリを使った1ピースあたりのフラクチャー例

image.png

デフォルトでは、RBD Material Fractureを使用するとジオメトリが破壊された状態になります。しかし破壊表現としては微妙で、フラクチャがされていないものもあれば、一部のピースが他のピースよりも多くフラクチャができているのが確認できます。

image.png

Fracture Per Pieceを有効にすることでこれを修正します。チェックを入れると均一な結果になりました。
Piece のAttributeを使用して、ピースごとに破壊を適用します。

image.png

ガラスの破壊をシミュレーション

image.png

image.png

少し角度が付けられたBOXにRBD Material Fracture(ガラスタイプに設定)が接続されています。

まず、第4インプットに入力ポイントを入れない場合を見てみます。

image.png

1つの破壊ポイントが追加されます

image.png

これはImpact Pointsタブで設定している1ポイントです。Scatter Seedによって位置が変わります。
当然このポイントを増やすと破壊点の数を増やすことができます。下図はポイントを3にした場合です。

image.png

しかしここに破壊点がほしい。という場合は指定した場所にインパクトが欲しいですよね。その場合は先ほどと同様に第4入力に入力ポイント(Addノードで追加したポイント)を接続します。Addノードの位置を移動させるとインパクトのポイントも追従するので便利です。

image.png

image.png

Cracksタブでは、Radial Cracks(放射状のひび:中心から出ている真っ直ぐな線)とConcentric Cracks(同心円状のひび:ひびの輪)のパラメータを調整できます。

image.png

コンストレイントタブの下で、放射方向の強度と同心円方向の強度それぞれの強度を調整できます。先程の設定同様、デフォルトは非常に大きな値になっているので、

image.png

Bulletソルバーでガラスの落下と破壊をシミュレーションする場合は、Radial Strengthを10000から5に。Concentric Strengthを10000から20に変更します。

  • この2つの間の比率を維持することが大事です。同心円方向の強度は放射方向の強度の4倍以上です。もちろん、ガラスの種類によって異なりますが、基本的に放射方向の強度は同心円方向の強度よりも低くなります

image.png

RBD Material Fracture + RBD Connected Faces

image.png

ガラスを使用するのに非常に便利なノードは、RBD Connected Faces(粉砕ジオメトリの内側フェースの反対側にあるフェースのプリミティブ番号とそこまでの距離を格納してくれます)です。RBD Connected Facesノード内のCreate Constraint(コンストレイントの作成)をまず無効にしてください。そうしないと、RBD Material Fractureからのコンストレイントが上書きされてしまいます。

image.png

このノードは異なるエッジ間の距離をチェックしてくれます。その距離情報を後ほど使用して、互いに近すぎる面を削除します。

image.png

RBD Material Fracture + RBD Disconnected Faces

RBD Bulletソルバーを接続し、今度はRBD Disconnected Faces(繋がったフェースが分離されたタイミングを検知してくれます)を続けてつなぎます。

image.png

やりたいこととしては、「Delete Connected(繋がってたフェースを削除する)」モードを使用して内部の面を削除します。かなり低い距離のしきい値を使用することで融合ガラスが得られます。

融合ガラス(FUSED_GLASS)

image.png

Exploded Viewで見ると、内部の面が削除されていることがわかります。

image.png

融合ガラスがある場合とない場合を用意することで、レンダリング時に活用することができます。
Stageに移動してみるとガラスのネットワークが用意されています。

image.png

image.png

左のFused_glassは地面に衝突して初めて亀裂が現れ始めますが、右のUnfused_glassは地面にぶつかって壊れる前にすでに最初から亀裂が見えるのがわかります。右よりも左のほうが良さそうです。RBD Connected FacesとRBD Disconnected Facesの組み合わせは、ガラスのマテリアルタイプを扱う際に本当に便利です!

木材の破壊をシミュレーション

image.png

image.png

RBD Material Fractureのタイプにはウッドタイプがあります。
基本的にこれらのパラメータは木材の外観を制御するために用意されているものです。

image.png

興味深い機能として、Constraintsタブ内に「Switch to Soft Constraint when Broken」機能があります。これはジオメトリが壊れる際、ソフトコンストレイントに切り替えが行われます。結果として、木材が剛体っぽく壊れないようにすることができます。木材には少し曲がりがあるためです。

image.png

まとめ

RBD Material Fractureノードを使ってジオメトリを材質に基づいて破壊し、リアルなシミュレーションを作成できます。
単一のジオメトリや、複数のジオメトリのセット、またはさまざまなタイプの材質であろうと、ジオメトリを破壊するための最初の選択肢となるほど便利なノードです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?