UnrealEngineのPluginsウィンドウでApex Destructionが有効になっていることを確認します。
UnrealEngineに読み込んだメッシュデータを右クリック>Create Destructible Meshを選択します。
Destructible Meshが作成されます。
作成されたDMをダブルクリックで開き、Fractture Meshをクリックした後Explode Amountを使用してどのように粉砕されたのか確認可能です。
Enable Impact Damgeを有効にし、衝撃でジオメトリが壊れるシミュレーションが実行できるようにします。
Saveをクリックし、ウィンドウを閉じます。
ビューポートにドラッグしてDMジオメトリを作成。
Simulate Physicsを有効にします。
Simulateを行うと
地面にぶつかって岩が壊れます。
壊れた後の形状の見栄えをよりよくするためにHoudiniの出番です!
Houdiniにジオメトリを読み込みます。(Houdiniの基本単位はメートルです。UnrealEngineとデータをやり取りする場合大きさに注意してください)
RBD Material Fractureを使用しこの岩を壊してみましょう!
RBD Material Fractureを接続するとすぐにジオメトリを粉砕することができます。
どのように分割されたのかを確認するにはRBD Explode Viewを接続すると便利です。
デフォルトでMaterial TypeはConcreteに設定されています。
その他、Wood、Glassと素材タイプを切り替えることが可能です。
Primary Fractureタブを確認すると、Fracture Levelが2に設定されており
1段階目で5個に分割し
2段階目でその5個に分割したものをさらに5分割しています。
今回はわかりやすくするために2段階目のFractureを削除し、1段階目のScatter Pointsを30にしました。
プリミティブアトリビュートを確認するとpiece0から
29までのちょうど30個のピースが作成されたことがわかります。
結果をみてみると、粉砕された断面があまりにもきれいすぎますね。
DetailタブでEdge Detailを有効にし、Detail Sizeを調整します。デフォルトは0.05ですが少し細かすぎたのでここでは0.2としました。
エッジが直線からランダムになり、断面にもディティールが追加されています。
この粉砕したデータをFBXとしてUnrealEngineに出力します。
正し、各ピースをそれぞれ塊として出力する必要があります。
つまり、各ピースを1つの連続した塊だと認識するアトリビュートが必要になります。
Connectivityノードを使用し、ConnectivityTypeをPrimitiveに変更します。
これで連続した塊ごとにClassが設定されます。
Attribute TypeをStringにすることで、Prefixにpieceと入力され
各塊ごとに1つの値が設定されました。
Class毎に色分けしてみました。
ConnectivityをROP Fbx Outputに接続し、出力します。
その際にBuild Hierarchy from Path Attributeを有効にし、Path Attributeをclassに設定します。
この機能は、プリミティブのStringアトリビュートを使用し、その値は、プリミティブが作成されるシェイプノードへのパスとして扱われます。
※出力する際にはメッシュの大きさに注意してください。
出力したFBXをHoudiniにロードしてみると各Class毎に異なるTransformとShapeが作成され、それぞれ独立したデータになっていることがわかります。
出力ができたら、UnrealEngineに戻ります。
Destructible Meshを開き、Import FBX Chunksをクリックします。
FBXが選択できるため、出力したFBXを読み込みます。
すると下記のようにエッジおよび断面にディティールが追加されたHoudiniの結果を読み込むことができました。
シミュレーションを行い結果を確認してください。
より複雑は設定は下記チュートリアルのステップ2をご確認ください。
https://www.sidefx.com/tutorials/real-time-destruction/