コライダーを使ってアバターの髪や服が身体にめり込むのを防ぐ

スポンサーリンク
スポンサーリンク

Dynamic Bone Collider

ダイナミックボーンでアバターを部分的に揺らすと、髪や服が身体にめり込んでしまう。これを防ぎたいときは、Dynamic Bone Collider(以下コライダー)を利用します。

コライダーは衝突判定を設定するコンポーネントです。

めり込みが発生するオブジェクトに当たり判定を付与することで、揺れものの可動範囲を制御します。

スポンサーリンク
スポンサーリンク

コライダーの基本的な使い方

めり込みを防ぐためには、双方のオブジェクトにコライダーを設定しなければなりません。

例えば、髪が身体にめり込む場合は

  • 身体

この両方に衝突判定を追加する必要があります。

髪の衝突判定はDynamic Boneの「Radius」や「Radius Distrib」、身体の衝突判定はDynamic Bone Colliderで設定します。

 

全体の手順は、次のような流れになります。

  1. 髪に当たり判定を追加(DynamicBoneのRadius + Radius Distribを設定)
  2. 身体に当たり判定を追加(DynamicBoneColliderを追加)
  3. コライダーを仕込んだオブジェクトを、髪のDynamicBoneにセットする
  4. コライダーの当たり判定(位置や範囲)を調整する

順番は前後しても構いません。

「髪のめり込み防止」を例に設定方法を解説します。

スポンサーリンク

Dynamic Boneの設定

髪に当たり判定を追加

まず髪に当たり判定を付与します。

揺れ具合については前回の記事でやったので、コライダー関連の項目のみ説明します。

各項目の説明

Radius

値を入力すると、当たり判定が追加されます。

例:0.02~0.05などの値を入力

白いワイヤーフレームは、当たり判定の形状を示すためのギズモです。

ギズモ(Gizmo)とは?
シーンビューで編集する際に、位置や範囲などの要素を可視化するためのシステムです。

 

Radius Distrib

Radius Distrib

他のDistrib項目と同じような機能です。

対象のボーンとそれに連なる配下のボーン(の当たり判定)を、異なるサイズに変更できます。

グラフの曲線を設定することで、以下のような調節が可能です。

  • 根元の判定は大きくして、先端は小さくする
  • 根元の判定は小さくして、先端は大きくする
  • 根本と先端は大きくして、中間だけ小さくする
  • 根本と先端は小さくして、中間だけ大きくする

 

Colliders

Colliders

ここに衝突判定を設定したコライダーオブジェクトをセットします。

Collidersの設定手順
  1. コライダーの数をSizeに入力
  2. Elementにドラッグアンドドロップ

スポンサーリンク

Dynamic Bone Colliderの設定

次に身体側の当たり判定を作成します。

コライダー作成

身体のボーンに直接仕込むか、子オブジェクトを作成してそこにコライダーコンポーネントを追加してください。

 

今回は後者の方法で設定します。

例えば「Spine」にコライダーを作成したい場合は、次のように操作します。

コライダー作成

  1. 「Spine」を右クリックして、「Create Empty」を選択
  2. 作成された「GameObject」の名前を「Spine Collider」などに変更する
  3. 「Spine Collider」にDynamic Bone Colliderをアタッチする

コライダーをDynamic Boneにセット

身体のコライダーを作成したら、髪にセットします。

コライダーをDynamic Boneにセット

  1. Dynamic BoneのColliders項目を開く
  2. セットしたいコライダー数を「Size」に入力
  3. 作成したコライダーオブジェクトをElementにドラッグアンドドロップ

これで双方の当たり判定が有効になりました。

各設定項目の調整

コライダーの調整

最後にコライダーの形状や位置などを変更しましょう。

シーンビューをワイヤーフレーム表示に切り替えて作業すると調整しやすいです。

Center

当たり判定の位置を変更できます。

Radius

当たり判定のサイズを変更できます。

例:0.0004~0.0006などの値を入力

Height

当たり判定の形状をDirectionで指定した方向に伸ばします。

値を大きくすると幅が広くなり、小さくすると狭くなります。

視覚的にはギズモが2つに分裂しているように見えますが、実際の当たり判定は間の部分にも存在します。

例:0.002~0.005などの値を入力(球状の当たり判定でよければ0でOK)

Direction

当たり判定の形状をどの方向に伸ばすか設定できます。

Xにすれば横長、Yは縦長、Zなら前後に長い形状の当たり判定になります。

Bound

接触時に外側/内側どちらへ反発するか設定できます。

基本的には「Outside」を使います。

 

再生モードで動作確認

ある程度設定できたら、再生モードで動作を確認します。

再生ボタンを押して、シーンビューに切り替えてからアバターを動かしてみましょう。

 

めり込みが改善されていなければ、当たり判定の形状や位置・サイズを変更します。Dynamic Boneの揺れ具合を変えないと貫通を回避できないケースもあります。

これについては調整→動作確認を繰り返して、最適な設定を探すしかないですね。

再生モード中に加えた変更は保存されないので注意

 

再生モード開始時にゲームビューに切り替わらないようにする

SceneタブとGameタブが同じウィンドウ内にあると、再生ボタンを押す度にGameタブに切り替わってしまいます。

これが鬱陶しいときは、Gameタブを適当な場所に設置するか、別のディスプレイなどに表示させておくと快適です。(ドラッグで移動できます)

移動後はSceneタブのあるウィンドウからGameタブを消しておきましょう。(Gameタブを右クリック → Close Tab選択)

 

まとめ

Dynamic Bone Collider まとめ

DynamicBoneColliderを利用して、アバターの髪や服が身体にめり込むのを防ぐ方法を紹介しました。

最後にポイントをまとめておきます。

当たり判定の追加手順

  1. Dynamic BoneのRadiusに値を入力
  2. 揺れものが貫通する部分にコライダーを作成
  3. Dynamic Boneにコライダーをセット

設定項目

Dynamic Bone

  • Radius:衝突判定のサイズ
  • Radius Distrib:根元から先端にかけての衝突判定サイズ調整
  • Colliders:コライダーをセットするところ

Dynamic Bone Collider

  • Center:衝突判定の位置
  • Radius:衝突判定のサイズ
  • Height:Directionで設定した方向に衝突判定を伸ばす
  • Direction:形状の方向指定
  • Bound:接触時の反発方向
スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク
Unity
のしろぐ

コメント

タイトルとURLをコピーしました