Created on | Updated on

【初心者向けHoudiniトライアル011】RBD Material Fractureでできたグループを使いまわす!

このチュートリアルは「【初心者向けHoudiniトライアル010】割れる前にひびがみえちゃう!RBD Disconnected Facesでばっちり修正!」の続きです。

使用するHoudiniバージョン

Houdini 18.0.460

ここまでの問題

何かが衝突してガラスが割れたシーンを作りました。ここでレンダリングして問題に気が付きます。

mceclip0.png

上のガラスに全くひびが入っていない!!!

RBD Disconnected facesによって、破片同士がくっついている場合、その間を削除してしまっているため、ひびを形成する破片がなくなりレンダリングに反映されていません。これではおかしいのでひびを残す部分も追加したいと思います。

破片間のひびわれグループを取り出す

  • RBD Disconnected facesにてひびわれを削除するか決定しているためその前にあるsortからOutputをもう一つ伸ばし、Nullを接続します。

このNullの下でいくつかのひびわれを取り出していきましょう!

mceclip1.png

はじめに取り出したいひび割れは衝突した場所から放射状に広がっているひび割れです。

mceclip2.png

現在のGroupをビューポートで確認します。

  • ビューポートでDisplay group and attribute listを有効にします。

mceclip3.png

  • ビューポート右上にリストが表示されますが、歯車アイコンからPrimitivesグループのみを表示するように変更します。

mceclip4.png

様々なGroupができていることがわかりますが、この中にglass radialinsideというグループがあります。

mceclip5.png

このグループにマウスカーソルをあわせると必要な放射状に延びるひびわれであることがわかります。

mceclip6.png

  • 先ほど追加したNullの下にsplitを追加します。

mceclip7.png

これは条件によりTrueとFalseの判断を行うことができます。ここで条件を設定します。

  • Groupの右側にあるドロップダウンボタンから先ほど確認したglass_radialinsideを選択します。

mceclip8.png

ビューポートにはglass_radialinsideのみ表示されます。

mceclip9.png

この中から任意のプリミティブを選択します。

  • Splitの左側の出力をクリックし、Groupを追加します。

mceclip10.png

  • Group Namaにglass_cracksと入力します。
  • これはプリミティブのグループなので、Group TypeはPrimitivesに設定します。
  • Base Group横の選択ボタンをクリックします。

mceclip11.png

  • 下記のように衝突した瞬間に発生させたいひび割れ部分を選択します。

横隣り同士を選択する部分も追加します。横並びでひびがはいればその間にもひび割れが入ります。

mceclip0.png

  • Splitの右側の出力に新しいSplitをつなぎます。

mceclip1.png

  • 2つめのsplitの条件はglass_concentricinsideに設定します。

mceclip2.png

このグループは同心円状のひびわれグループです。

mceclip3.png

  • 先ほど作成したGroupを複製するために、Altキーを押しながらgroupをドラッグして話します。
  • 複製したgroupを2つのSplitの左側の出力と接続します。

mceclip4.png

  • Base Groupに入力された番号をすべて削除し、その後選択ボタンをクリックします。

mceclip5.png

  • 放射状に入ったひびわれが横に並んでいる場所をつなぐひびわれを選択します。

mceclip6.png

  • Mergeノードを選択し、2つのGroupノードをつなぎます。

mceclip7.png

  • 2つ目のSplitの右側に3つ目のSplitを追加します。

mceclip8.png

  • 3つ目のSplitの条件はglass_chippinginsideに設定します。

mceclip9.png

mceclip10.png

  • 先ほどと同様にGroupノードを複製し、3つ目のSplitノードと接続します。

mceclip11.png

  • Base Groupに入力された数字をすべて削除後、選択ボタンをおしいくつかの大きめの破片を選択します。

mceclip12.png

  • 3つめのグループもMergeに接続します。

mceclip13.png

  • 3つ目のSplitの右側出力を引っ張り、Altを押しながら何もない部分をクリックします。

ここではネットワークを見えやすくするためのDotを追加しました。

mceclip14.png

  • Dotから、Mergeに接続します。

mceclip15.png

これで再度すべての破片とひびを統合することができました。

mceclip16.png

また、選択したひび割れはすべてglass_cracksというグループに登録しています。
このglass_cracksに登録したプリミティブはつながってないというように設定すれば問題は解決します。

RBD Connected Facesにてプリミティブがつながっているかどうかを格納するアトリビュートとしてFace Attributeというアトリビュートを追加しています。

RBD Connected Facesを確認するとデフォルトのままにしていたのでfaceidというアトリビュートに格納しています。

mceclip17.png

faceidに格納される値を確認します。
Unpackされるまでプリミティブアトリビュートを取得することができません。

  • UnpackにDisplay フラグを設定します。
  • Unpack上にマウスカーソルを置き表示されたリングからNode Infoを選択します。

mceclip18.png

  • 表示されたウィンドウでfaceidをクリックします。

mceclip0.png

  • ビューポートでビジュアライザが有効になり、faceidが表示されます。

mceclip1.png

この時削除されていない破片(間に入っているひび割れ以外)のfaceidは-1という数字で登録されていることがわかります。そのため、表示したいひび割れを登録したglass_cracksグループのプリミティブにも‐1を割り当てればいいことがわかります。

  • glass_cracksを統合したMergeノードの下にAttribute Wrangleを追加します。

mceclip3.png

  • Attribute Wrangleにて、下記のように設定します。
    Groupはglass_cracksを指定
    Run OverはPrimitivesに設定
    VEXとして下記の指揮を入力します。

@faceid = -1 ;

mceclip4.png

glass_cracksに-1 を設定する前

mceclip5.png

glass_cracksに-1 を設定した後

mceclip6.png

これで任意のひび割れのfaceidを設定することができました。
後は、Sortして、RBD disconnected faceを追加します。

  • unpackの下のsortとRBD disconnected faceを選択し、Altキーを押しながらドラッグして複製します。

mceclip7.png

  • 複製したノードをAttribute Wrangleの下に接続します。

mceclip8.png

ここまでの結果をレンダリングしてみましょう。

  • Render Viewを開き、Renderボタンをクリックします。

このように部分的なひび割れを残すことができました。

mceclip9.png

しかし、このままだと1フレームから結局日々がはいってしまいます。そこで、Switchノードを使用しひび割れが最初から入った状態と入っていない状態を切り替えます。

  • ビューポートのビジュアライザをクリックしてオフにします。

mceclip10.png

  • RBD Bullet Solverの中に入ります。
  • 丁度Sphereがガラスに当たるフレームを確認します。

    このシーンでは6フレーム目でした。

mceclip11.png

  • RBD disconnected faceの下にSwitchノードを追加します。

mceclip12.png

  • 次に最初からひび割れを追加したRBD disconnected faceをSwitchノードに接続します。

mceclip14.png

Swtichのパラメータを見ると下記のようになります。
0と1を切り替えて出力するためにSelect Inputに条件式を入力する必要があります。

mceclip15.png

先ほどSphereが衝突するフレームを確認したのでそれを条件に使用します。

  • Select Inputに$F>5と入力します。

5フレームまでは0番目の入力が使用され、6フレームで1番目の入力に切り替わります。

mceclip18.png

5フレームまでは0番目が実線となり

mceclip17.png

6フレームからは1番目が実線となります。

mceclip19.png

  • 5フレームをレンダリングするとひび割れがありません。

mceclip20.png

  • 6フレームをレンダリングするとひび割れが・・・・!

mceclip21.png

ガラスが壊れたフレームまでいってレンダリングを行います。
壊れていない上の部分にもひびがはいっていていい感じ出すね!

mceclip22.png

ここまででRBD Material Fracture、RBD connected face、RBD Bullet Solverなどを使用した設定は終了となります。お疲れさまでした!

問題が解決しない場合は、Born Digital サポートまでお問い合わせ下さい。

サポート問い合わせ