BoneClothスタートガイド

Bone Clothのセットアップ

ここではUnityちゃんモデルを例としてBoneClothのセットアップ方法を説明していきます。
このガイドは「基本セットアップガイド」の続きとなりますので、基本的なシステムの構成の説明は除きます。

BoneClothはUnityのTransformを操作するクロスシミュレーションです。
予めメッシュにボーンが組み込まれた「髪」などを揺らす場合に最適です。

Bone Clothの導入

Unityちゃんモデルには後ろ髪にボーンが仕込まれているため、これをBoneClothで動かす設定を行います。
最初に動かすべきボーンの構造から根元となるTransformを確認しておきます。

 

キャラクタにBoneClothを追加します。
Hierarchyウインドウで「右クリック」し、メニューから以下のように「Magica Bone Cloth」を選択してください。
BoneClothオブジェクトが生成されます。

 

インスペクタからBoneClothの設定が行えます。
インフォメーションに赤いアイコンがありますが、これは何らかの問題が発生していることを示しています。
現在はデータが設定されていないためエラーとなっています。

 

まず基準となるボーンを登録します。
先程確認した髪のルートボーン[J_L_HairTall_00]と[J_R_HairTall_00]をRootListに登録します。
ルートボーン以下の階層ボーンは自動で読み取ります。

 

次に登録したルートボーンから連動するボーンについて固定するボーンと移動するボーンをエディットします。
画像のように[Start Point Selection]ボタンを押してください。

 

パーティクルエディットモードに入るとインスペクタが変化し、またシーンビューにエディットされるボーンがギズモ表示されるようになります。

※ここで表示されるパーティクルサイズはエディット用のものです。実際の当たり判定サイズではありません。

エディットモードでは次の3タイプが設定できます。

項目 説明
 Move Point  移動パーティクルです。
物理エンジンの影響を受けるパーティクルはすべてこの移動タイプでマークする必要があります。
 Fixed Point  固定パーティクルです。
基本的には移動パーティクルのルートとして設定します。
固定パーティクルは移動はしませんが、連動する移動パーティクルの根元となる重要な役目があります。
従って移動パーティクルの始点として必ず固定パーティクルが必要です。
 Invalid Point  完全に計算から除外されるパーティクルです。
完全に計算不要なパーティクルはInvalidに設定するように心がけてください。
これにより計算負荷が下がります。

BoneClothの場合は最初に指定したルートボーンを「固定パーティクル」とし、それ以外を「移動パーティクル」に自動で設定されています。
手動で設定したい場合はこのパネルを利用してパーティクルタイプを選択し、シーンビューでマウスカーソルを「左ドラッグ」することで変更が可能です。
ただし移動パーティクルの始点部分には必ず固定パーティクルが必要となりますので注意してください。
すべての編集が完了したら、[End Point Selection]ボタンを押してデータに反映します。

 

クロスの振る舞いを制御するパラメータの設定を行います。

ただ前述の通りパラメータの設定はある程度の経験が必要なため、まずはプリセットを読み込み簡単にセットアップしてみましょう。
[Parameters]の右にある[Preset]ボタンを押します。

リストの中から[PonyHair]を選択して読み込んでください。

Presetボタンはv1.8.4から実装されたため、もしPresetボタンが無い場合は右にある[Load]ボタンを押し、MagicaCloth/Presetフォルダから[BoneCloth_PonyHair.json]を読み込んでください。

 

これで髪の大体のパラメータが設定されました。
(※実際にはここから利用するモデルの構造に合わせて調整が必要です)

以上で一連の設定が完了したので[Create]ボタンを押してデータを作成します。

問題がなければBoneClothのステータスアイコンが「白」に変わり、クロスの情報が表示されます。

この状態であれば起動可能となります。
実際に実行してテストしてみましょう。
Unityちゃんの髪が本体の移動(アニメーションなど)に連動して物理制御されていれば成功です。

 

当たり判定(Collider)を設定する

ただこのままでは当たり判定が無いため、髪が体を突き抜けてしまいます。
これを防ぐためにはコライダー(Collider)を設定し、パーティクルの侵入を防ぐ必要があります。
MagicaClothのコライダーはUnityコライダーとは別物となりますので注意してください。

コライダーには次の3タイプが存在します。
この内人体に使用されるのは主にSphereColliderとCapsuleColliderです。

名称 説明
MagicaSphereCollider 球形のコライダー。
シンプルで最も軽量。
MagicaCapsuleCollider カプセル型コライダー。
先端と末端のサイズを変更可能。
球形コライダーより負荷が高い。
MagicaPlaneCollider 面コライダー。
主に地面で使用する。

 

腰や胸、腕にコライダーを追加してみましょう。
長い髪が人体を突き抜けないようにするためには、腰から胸、そして肩から腕にかけてコライダーを配置するのが基本となります。
まず、腰にスフィアコライダーを追加します。

Uniyちゃんモデルの腰ボーンを選択し、右クリックメニューから画像のように[Magica Sphere Collider]を追加します。
画像のようにオブジェクトが自動生成されます。

SphereColliderのインスペクタから半径を調整し、Transformから位置を調整して腰まわりがだいたい隠れるぐらいにコライダーを設定します。
(※ワイヤーフレームモードで設定すると見やすいです)

次に、腕にカプセルコライダーを追加します。
同じくUnityちゃんの腕ボーンを選択し、[Magica Capsule Collider]を追加します。
カプセルコライダーのインスペクタではカプセルの長さと先端と末端のサイズを調整できます。
同じように腕が隠れるぐらいの大きさに調整していきます。

このような作業を腰(Hip)、Spine(背中)などにも行い、最終的に画像のような設定を行いました。

BoneClothに先程作成したコライダーを登録します。
BoneClothのインスペクターの[Collider List] に、当たり判定を行うコライダーをすべて登録します。
MagicaClothではクロスごとに判定するコライダーを選別できます。

 

コリジョンパネルの設定を行います。
まず[Collision]パネルにチェックを入れます。
チェックが外れていると衝突判定が行われません。


次にもし各ボーンがアニメーションにより移動回転制御されている場合には、[Keep Shape]オプションを検討してみてください。
これはパーティクルの移動範囲をクロスシミュレーション前の姿勢を崩さないように強力に制限を掛けます。
この制限によりスカートなどのパーティクルが太ももを突き抜けて裏側にまわるような問題が大幅に改善します。
ただし制限により本来意図しないパーティクルの動きをする可能性もあります。
またアニメーション制御により、ある程度の当たり判定めり込み問題が回避されていることが前提となります。
まずはOFFにしてテストを行い、状態をみてからONにしてテストしてみるのが良いかと思います。

 

最後にBoneClothのパーティクルサイズを調整します。
BoneClothオブジェクトをHierarchyで選択すると、シーンビューにクロスパーティクルが黄色(固定)、白(移動)として表示されています。
このときの球の大きさが各パーティクルの当たり判定サイズとなります。
(※表示は後述するクロスモニターで様々な状態を表示可能です)

この状態でBoneClothパラメータの[Radius]パネルを開き、Radiusカーブのstart/endのスライダーを動かしてみてください。


シーンビューのパーティクルサイズが変化したと思います。
すべてのパラメータ設定においてstartが固定(ルート)のパーティクルを示しており、endが移動パーティクルの末端を指しています。
このようにして実際の衝突パーティクルサイズを調整します。

最後に調整したコライダーやパラメータをクロスに反映するため[Create]ボタンを押します。
MagicaClothではこのように調整したパラメータをデータに反映するため、[Create]ボタンを押す必要があります。

これでコライダーの設定が完了です。
Unityを実行してみましょう。
今度は髪のパーティクルが本体と衝突し、突き抜けることがなくなったはずです。

以上で、ボーンクロスの基本的なセットアップは完了です。