ここではMagicaClothの簡単な構成要素と、最も使用頻度が高いBoneClothの素早いセットアップ方法を説明します。
Magica Clothの構成要素
MagicaClothは以下のコンポーネントから構成されています。
用途により使用するコンポーネントが変わります。
サンプルシーンについて
各コンポーネントについての簡単なサンプルシーンが用意されています。
サンプルシーンの中身をみることで、各コンポーネントの大体の動きが把握できるかと思います。
サンプルシーンはMagicaCloth/Exsample/Sceneフォルダにあります。
サンプルシーン名 | 説明 |
BoneClothSample | ボーンクロスの簡単なサンプルです。 |
BoneSpringSample | ボーンスプリングの簡単なサンプルです。 |
MeshClothSample | メッシュクロスの簡単なサンプルです。 メッシュクロスがRenderDeformer/VirtualDeformerと連動していることに着目してください。 |
MeshSpringSample | メッシュスプリングの簡単なサンプルです。 |
UnityChanClothSample | UnityちゃんにBoneCloth/MeshCloth/MeshSpringを組み込んだサンプルです。 BoneClothは髪とリボンの制御、MeshClothはスカートの制御、MeshSpringは胸揺れの制御に使用されています。 VirtualDeformerが複数のRenderDeformerと連動していることに着目してください。 |
プリセットについて
クロスを制御するパラメータには多くのプロパティがあり、最初からすべてを把握するのは困難です。
そこで、使用頻度の高いクロス制御(髪、小物、スカートなど)のパラメータをプリセットとして収録してあります。
クロスのセットアップではまずこのプリセットを読み込み、その上で動きを見ながら調整していくのが簡単かと思われます。
また、プリセットは独自に保存が可能なため、ユーザーが自分用のプリセットを作成し再利用したり、自身のコレクションを他のユーザーに配布することも可能です。
ビルドインのプリセットファイルはMagicaCloth/Presetフォルダに格納されています。
Bone Clothの簡単セットアップガイド
前置きはここまでとして、Unityちゃんモデルを使用してBoneClothのセットアップ方法を説明していきます。
Physics Managerをシーンに配置する
最初にMagicaClothを動作させるためにはMagicaPhysicsManagerをシーンに配置する必要があります。
すでにプレハブ化されていますので、次のプレハブをシーンに配置してください。
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]ボタンを押してデータに反映してください。
クロスの振る舞いを制御するパラメータの設定を行います。
ただ前述の通りパラメータの設定はある程度の経験が必要なため、まずはプリセットを読み込み簡単にセットアップしてみましょう。
[Paramaters]の右にある[Load]ボタンを押します。
エクスプローラーからビルドインプリセットの[BoneCloth_LongHair.json]を選択して読み込んでください。
ビルドインプリセットはMagicaCloth/Presetフォルダにあります。
これでロングヘアの大体のパラメータが設定されました。
(※実際にはここから利用するモデルの構造に合わせて調整が必要です)
以上で一連の設定が完了したので[Create]ボタンを押してデータを作成します。
問題がなければBoneClothのステータスアイコンが「白」に変わり、クロスの情報が表示されます。
この状態であれば起動可能となります。
実際にUnityを実行してテストしてみましょう。
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ではクロスごとに判定するコライダーを選別できます。
また、パラメータの[Collider Collision]タブにチェックが入っていることを確認してください。チェックが外れていると衝突判定が行われません。
最後にBoneClothのパーティクルサイズを調整します。
BoneClothオブジェクトをHierarchyで選択すると、シーンビューにクロスパーティクルが黄色(固定)、白(移動)として表示されています。
このときの球の大きさが各パーティクルの当たり判定サイズとなります。
(※表示は後述するクロスモニターで様々な状態を表示可能です)
この状態でBoneClothパラメータの[Radius]パネルを開き、start/endのスライダーを動かしてみてください。
シーンビューのパーティクルサイズが変化したと思います。
すべてのパラメータ設定においてstartが固定(ルート)のパーティクルを示しており、endが移動パーティクルの末端を指しています。
このようにして実際の衝突パーティクルサイズを調整します。
最後に調整したコライダーやパラメータをクロスに反映するため[Create]ボタンを押します。
MagicaClothではこのように調整したパラメータをデータに反映するため、[Create]ボタンを押す必要があります。
これでコライダーの設定が完了です。
Unityを実行してみましょう。
今度は髪のパーティクルが本体と衝突し、突き抜けることがなくなったはずです。