ダイナミックボーンでアバターを部分的に揺らすと、髪や服が身体にめり込んでしまう。これを防ぎたいときは、Dynamic Bone Collider(以下コライダー)を利用します。
コライダーは衝突判定を設定するコンポーネントです。
めり込みが発生するオブジェクトに当たり判定を付与することで、揺れものの可動範囲を制御します。
コライダーの基本的な使い方
めり込みを防ぐためには、双方のオブジェクトにコライダーを設定しなければなりません。
例えば、髪が身体にめり込む場合は
- 髪
- 身体
この両方に衝突判定を追加する必要があります。
全体の手順は、次のような流れになります。
- 髪に当たり判定を追加(DynamicBoneのRadius + Radius Distribを設定)
- 身体に当たり判定を追加(DynamicBoneColliderを追加)
- コライダーを仕込んだオブジェクトを、髪のDynamicBoneにセットする
- コライダーの当たり判定(位置や範囲)を調整する
順番は前後しても構いません。
「髪のめり込み防止」を例に設定方法を解説します。
スポンサーリンク
Dynamic Boneの設定
まず髪に当たり判定を付与します。
揺れ具合については前回の記事でやったので、コライダー関連の項目のみ説明します。
各項目の説明
Radius
値を入力すると、当たり判定が追加されます。
白いワイヤーフレームは、当たり判定の形状を示すためのギズモです。
シーンビューで編集する際に、位置や範囲などの要素を可視化するためのシステムです。
Radius Distrib
他のDistrib項目と同じような機能です。
対象のボーンとそれに連なる配下のボーン(の当たり判定)を、異なるサイズに変更できます。
グラフの曲線を設定することで、以下のような調節が可能です。
- 根元の判定は大きくして、先端は小さくする
- 根元の判定は小さくして、先端は大きくする
- 根本と先端は大きくして、中間だけ小さくする
- 根本と先端は小さくして、中間だけ大きくする
Colliders
ここに衝突判定を設定したコライダーオブジェクトをセットします。
Collidersの設定手順
- コライダーの数をSizeに入力
- Elementにドラッグアンドドロップ
スポンサーリンク
Dynamic Bone Colliderの設定
次に身体側の当たり判定を作成します。
コライダー作成
身体のボーンに直接仕込むか、子オブジェクトを作成してそこにコライダーコンポーネントを追加してください。
今回は後者の方法で設定します。
例えば「Spine」にコライダーを作成したい場合は、次のように操作します。
- 「Spine」を右クリックして、「Create Empty」を選択
- 作成された「GameObject」の名前を「Spine Collider」などに変更する
- 「Spine Collider」にDynamic Bone Colliderをアタッチする
コライダーをDynamic Boneにセット
身体のコライダーを作成したら、髪にセットします。
- Dynamic BoneのColliders項目を開く
- セットしたいコライダー数を「Size」に入力
- 作成したコライダーオブジェクトをElementにドラッグアンドドロップ
これで双方の当たり判定が有効になりました。
各設定項目の調整
最後にコライダーの形状や位置などを変更しましょう。
シーンビューをワイヤーフレーム表示に切り替えて作業すると調整しやすいです。
Center
当たり判定の位置を変更できます。
Radius
当たり判定のサイズを変更できます。
Height
当たり判定の形状をDirectionで指定した方向に伸ばします。
値を大きくすると幅が広くなり、小さくすると狭くなります。
視覚的にはギズモが2つに分裂しているように見えますが、実際の当たり判定は間の部分にも存在します。
Direction
当たり判定の形状をどの方向に伸ばすか設定できます。
Xにすれば横長、Yは縦長、Zなら前後に長い形状の当たり判定になります。
Bound
接触時に外側/内側どちらへ反発するか設定できます。
基本的には「Outside」を使います。
再生モードで動作確認
ある程度設定できたら、再生モードで動作を確認します。
再生ボタンを押して、シーンビューに切り替えてからアバターを動かしてみましょう。
めり込みが改善されていなければ、当たり判定の形状や位置・サイズを変更します。Dynamic Boneの揺れ具合を変えないと貫通を回避できないケースもあります。
これについては調整→動作確認を繰り返して、最適な設定を探すしかないですね。
再生モード開始時にゲームビューに切り替わらないようにする
SceneタブとGameタブが同じウィンドウ内にあると、再生ボタンを押す度にGameタブに切り替わってしまいます。
これが鬱陶しいときは、Gameタブを適当な場所に設置するか、別のディスプレイなどに表示させておくと快適です。(ドラッグで移動できます)
移動後はSceneタブのあるウィンドウからGameタブを消しておきましょう。(Gameタブを右クリック → Close Tab選択)
まとめ
DynamicBoneColliderを利用して、アバターの髪や服が身体にめり込むのを防ぐ方法を紹介しました。
最後にポイントをまとめておきます。
当たり判定の追加手順
- Dynamic BoneのRadiusに値を入力
- 揺れものが貫通する部分にコライダーを作成
- Dynamic Boneにコライダーをセット
設定項目
Dynamic Bone
- Radius:衝突判定のサイズ
- Radius Distrib:根元から先端にかけての衝突判定サイズ調整
- Colliders:コライダーをセットするところ
Dynamic Bone Collider
- Center:衝突判定の位置
- Radius:衝突判定のサイズ
- Height:Directionで設定した方向に衝突判定を伸ばす
- Direction:形状の方向指定
- Bound:接触時の反発方向
コメント