BLOG ブログ

2024-01-24

簡単な破壊のシミュレーション

簡単な破壊のシミュレーション

こんにちは。デザイナーのKです。
今回はHoudiniを使い、簡単な破壊のシミュレーションを行います。

まずは壊れるオブジェクトと動かない床や壁の役割をするオブジェクトを作成します。

SOPノードの全体図の左側のノード(Static_OUTとStatic_OUT1)が壁の役割のオブジェクトです。
ボックスを変形させて、Transformで位置を移動します。
Nullノードは読み込むときにわかりやすくする為に付けたものです。
SOPノードの全体図の右側のノード(Break_OUT)が壊れるオブジェクトです。
ボックスを破壊した位置にTransformで移動させて、Voronoi Fratureでバラバラに分割しています。

■SOPノードの全体図

Scatterはバラバラに分割する時に使用しているポイントで、Attribute Trasferでポイントの密集度合いを調整して、一部を細かくなるようにしています。

次にDOPNetworkノードを作成してシミュレーションを行います。
左側のノードで動かないオブジェクト、右側のノードで壊れるオブジェクトを読み込んでいます。
その二つをそれぞれStatic Solover、Rigidbody Solverに繋ぎます。
そして二つのノードをMergeしてGravityを繋いでOutputに繋いで出力します。

■DOPノード内の全体図

Static Object:SOPで作成したボックス(壁の役割をしている)を読み込んでいるノードです。二つボックスがあるので今回は二つ使用しています。
Graoud Plane:地面を作るためのノードです。(SOPで地面を作成してもいいのですが、今回はDOP内で地面を作成しています)
Rbdpacked Object:破壊されるオブジェクトを読み込んでいます。
Static Solver、Rigidbody Solver:シミュレーションを計算するノードです。
Gravity:重力を加えるノードです。

■シミュレーションした動画

小さい破片が転がりすぎているので、転がり具合を抑えたいと思います。
そのときはRbdpacked ObjectのPhysicalタブ内にある「Bounce」「Friction」Bullet Dataタブにある「Cloosion Padding」の数値を変えることで見た目を調整できます。
今回はCloosion Paddingの数値を0.02から0.001に変更した動画です。

これで破片の頃が割り具合が大分抑えられたと思います。

シミュレーションと聞くと難しい印象ですが、最低限の必要な箇所だけだと簡単なのでぜひ使ってみてください。

トリサンをもっと知る