厚みのある布にソフトボディを適用するには
https://www.youtube.com/watch?v=gtUcF2C08w8
今回は厚みのある布に対して、ソフトボディをうまく適用する方法をご紹介します。
まずは単純に厚みのない板に対してソフトボディを適用してみましょう。球体と板状の平面のメッシュを作ります。この平面が重力に従って落下し球体に布のようにかぶさるというシーンを作りたいので、球体にはスタティックリジッドボディを、平面にはアクティブリジッドボディを適用します。アクティブリジッドボディに対しては、タイプをリジッド(剛体)からソフトボディへと変更しておきます。平面を球体の上に来るよう移動させたら、シミュレーションをキャッシュして再生して動きを確認してみます。
デフォルト設定の単純な動きですが、平面が球体にうまくぶさるようになりました。ただしこの平面には全く厚みがないため、角度によっては裏が見えない状態となっています。マテリアルの設定で両面オプションをオンにして、裏面も可視状態にすることは可能ですが、きちんと厚みをつけた状態で同じようにダイナミクス処理を行いたくなるかもしれません。
それではいったんダイナミクスの設定を解除した上で、厚みをつけ、もう一度まったく同じ設定でシミュレーションを行ってみましょう。平面を選択し、ダイナミクスメニュー > ダイナミクス除去をクリックし、ダイナミクスの設定を解除します。厚みツールで厚みをつけたら、先ほどと同じようにアクティブリジッドボディを適用します。
シミュレーションをキャッシュして確認してみると、きれいにシミュレーションできていません。裏側に当たる面が表に出てたりするために、プレビューでレンダリングを確認してみても、非常に汚い状態になってしまいます。
これを解消するために発想を逆に変えて、厚みのない平面に対してソフトボディを適用しシミュレーションした後、その変形した状態に対して厚みをつけるようにしてみます。
新たにメッシュレイヤーを一つ作成し、メッシュオペレーションを利用して厚みをつけます。まずはソフトボディを適用しているメッシュを、新しいメッシュのベースとして取り込みたいので、オペレータ追加 > 編集 > Merge Meshを追加し、(ソースを追加)から平面のメッシュを取り込みます。さらに取り込んだ平面メッシュに対して厚みをつけたいので、オペレータ追加 > ポリゴン > Thicken で厚みをつけます。
この設定を行うことで、ダイナミクスの演算処理は厚みを持たないため演算対象が少ないために、計算負荷も軽いままですし、さらに演算の結果に対して厚みをつけるため、裏面が突き破るといったようなおかしな現象も発生しません。また、ダイナミクスの設定はそのまま生きていますので、パラメータを変えて自由に何度でもトライアンドエラーで設定を変えて試すことができます。このように、プロシージャルモデリングは既に変形しているメッシュに対して、その影響を変えること無く、さらに処理を重ねたいといった場面でも便利に使えます。