要件
Unity : 2021.3.18f1
MagicaCloth2 : 2.0.0
はじめに
3Dキャラクターのスカートや胸、髪といった箇所を
揺らすことができるアセットMagicaCloth2 を紹介します。
これまで、揺れものアセットといえばDynamicBone(ダイナミックボーン)か
前身のMagicaClothが個人的にお気に入りでした。
今回、MagicaClothの新バージョンMagicaCloth2が発売ということで
MagicaCloth2がどんな感触なのか実際にさわっていきたいと思います!
制約条件:Unity 2021.3.16 (LTS) 以上
導入
導入はUnity内のパッケージマネージャーから行います。
ウインドウ→パッケージマネージャー
下記画像の順番でダウンロードを行います。
①マイアセットを選択
②検索窓にmagicaと入力(探しやすくするため)
③Magica Cloth2を選択
④ダウンロードをクリック
ダウンロードが終了したらインポートを押してプロジェクトに取り込みます。
MagicaCloth2がアセット直下にあれば完了です。
MagicaCloth1(2と区別するため1と書きます)の場合は、
別途、BurstとCollectionsというのパッケージも導入する必要がありました。
それがMagicaCloth2では一緒にインポートされるようです。
これは前より楽になってて嬉しい!
セットアップ
MagicaCloth2には、
ボーンを揺らすBoneCloth、
モデルを形成している点群を揺らすMeshClothがあります。
(MagicaCloth1にもあります。)
BoneClothはモバイルといった負荷をかけられない場合に使用し、
MeshClothは負荷がかかっても大丈夫なデスクトップPC向けのようです。
本記事ではBoneClothを使用していきたいと思います。
使用アセット
モデルやアニメーションがないと動きを確認できないため
以下のアセットを使用し確認します。
ステージはなくても良いですが雰囲気を出したかったのでついでに入れました。
モデル:Akane
アニメーション:Runner Action Animation Pack
ステージ:Toon Fantasy Nature
BoneClothモード
キャラクターにMagicaClothコンポーネントを追加
キャラクターにMagicaClothコンポーネントの追加が必要です。
追加の方法はキャラクターを右クリックし、
→Create Other
→Magica Cloth2
→Magica Cloth
を選択します。
すると、キャラクターの配下にMagicaClothのオブジェクトが追加されました。
このオブジェクトをクリックしてみると、MagicaClothコンポーネントが確認できます。
いろいろと表示されますが、ざっくり次の3種類で認識しておけば良さそうです。
・情報ウインドウ
・揺れもの対象の設定
・パラメーター設定
BoneClothモードへの設定
MagicaClothコンポーネントのCloth Typeの選択欄をクリックし
Bone Clothを選択します。
対象のボーンを設定
BoneClothモードでは揺らしたい対象のTransform情報を登録する必要があります。
登録が必要なのは、起点となるTransform情報です。
なにを言っているのかよくわからないと思いますので実際にやっていきます。
モデルのスカートを揺らす場合で設定していきます。
今回のモデルの場合、スカート起点は次の3つになります。
このスカートの起点となるTransform情報を持つゲームオブジェクトを
次の画像のようにRoot Bonesに登録します。
揺れのプリセットを選択
次にパラメーター設定を行います。
本来、パラメーター設定はかなり大変なのですが
MagicaCloth2ではパラメーターのプリセットがありますので利用していきます。
(MagicaCloth1にもあります。)
MagicaClothコンポーネント
→Preset
→Skirt
これで揺れの設定完了です!
動作確認1
再生してみると次のようになります。
プリセットを適用するだけで充分ですね!
MagicaCloth2
— まる|アプリ開発 拙著:もっと早く教えてほしかった!Unity C#入門 (@maruappdev) 2023年2月14日
左:設定なし
右:スカートにBoneCloth設定適用
(コライダー設定なし)
※ブログ掲載用 pic.twitter.com/6p40EQLA2w
貫通防止設定
ここで揺れものの設定を終わっても良いと思いますが、
スカートが足にめりこんでいるため貫通防止対策を行います。
赤枠:スカートが足にめりこんでいる
BoneClothモードでの貫通防止対策は、
コライダー衝突判定とバックストップという衝突制御が用意されています。
今回はコライダー衝突判定のみを設定していきます。
詳細は公式ページをご確認ください。
コライダー衝突判定
コライダー衝突判定は、侵入してほしくない範囲を指定するものです。
コライダーの形状は球やカプセル、平面が用意されていますので
適当な形状を選択し設定を行います。
今回は、カプセル形状のコライダーを足の付け根から膝にかけて設定していきます。
カプセルコライダーの生成
左足の太もものオブジェクトにコライダーを設定していきます。
コライダーを設定したい位置のオブジェクトを右クリックし
→Create Other
→Magica Cloth2
→Magica Capsule Collider
すると、このようにコライダーが出現します。
この先、設定がやりづらいので
シーンウインドウの表示モードをWireFrameにしておきます。
(元に戻す場合は一番上のShadedを選択してください)
左:表示モード選択画面 右:WireFrame適用後
カプセルコライダーのパラメーター設定
あとは生成したカプセルコライダーの各パラメータを調整し
モデルの足の形に沿わせます。
Sのボタンを押すことで
コライダーの始点と終点の大きさをそれぞれ設定することができます。
微調整したいときがあるのでこれは嬉しいですね!
左:Sボタン押下前 右:Sボタン押下後
結果このように調整しました。
右足と両膝下も同様に設定します。
コライダーの登録
作成したコライダーをMagicaClothコンポーネントへ登録します。
MagicaClothコンポーネント
→ColliderCollison
→ColliderListへコライダーを登録
ColliderCollisionの設定
いよいよ最後の設定です。
設定項目は3つありモード、半径、Frictionがあります。
説明の都合上半径からご説明します。
・半径
揺れものとして設定したTransformの位置でコライダーと干渉し合う球が作られるのですが、
この球の大きさを変更するのが当項目になります。
左:半径=0.020設定 右:半径:0.100設定
大きくしすぎると常時干渉してしまうため
常には干渉しないけどなるべく大きくなるように設定しておきます。
とりあえず半径は0.047で設定しました。
・モード
モードは2種類あり、
先ほど大きさを設定した球のみを捉えるポイントモード
球同士を結んだ線で捉えるエッジモードがあります。
コライダー設定なしとモード設定別の挙動の違いは以下です。
左:コライダー設定なし
— まる|アプリ開発 拙著:もっと早く教えてほしかった!Unity C#入門 (@maruappdev) 2023年2月14日
中:コライダー設定(ポイントモード)
右:コライダー設定(エッジモード) pic.twitter.com/Q4UFnEzfdU
エッジモードの方が高負荷なようなので基本はポイントモードで良いと思います。
・Friction 公式のガイドをそのまま引用します。
摩擦(friction)はコライダーと頂点が接触したときの滑りにくさです。
値を大きくすると滑りにくくなります。
今回のスカートはコライダーとあまり接触しない条件なので
違いがよくわかりませんでした。
短いスカートだと違いがはっきりしそうです。
いろいろアニメーション
せっかく設定したのでいろいろアニメーションしてみました。
アニメーションいろいろ pic.twitter.com/MZIPN2Bigf
— まる|アプリ開発 拙著:もっと早く教えてほしかった!Unity C#入門 (@maruappdev) 2023年2月15日
おわりに
MagicaCloth2は前作より導入、設定が簡単になっており、
より素晴らしいアセットになっていました!
なによりパラメーターのプリセットがあるので
慣れてくれば文字通り秒で設定可能になります。
DynamicBone(ダイナミックボーン)も同じくらい設定が簡単ですが、
MagicaCloth2より微調整ができないことと
毎回パラメーター探しのネットの旅をすることを考えると
自分で設定するならMagicaCloth2一択といった感じです。
ただ、Boothで購入した3DモデルにはDynamicBoneで
揺れもの設定がされていることが多い現状なので
Boothの3Dモデルをそのまま使うなら
まだまだDynamicBoneの出番はあるかなという印象です。
なにかの参考になれば幸いです。
ではでは〜。