今回のテーマは、「Magica Clothの使い方 スカートや胸を揺らす方法」です。
Magica ClothはAssetsストアで購入できるクロスシミュレーション揺れものアセットです。有料アセットの中でもトップクラスのクロスシミュレーションを実現できるだけでなく、日本人が開発しているため日本語のドキュメントが充実しています。操作そのものも比較的に簡単なので非常に使いやすいアセットです。
今回は、そのアセットを使ってスカートと胸を揺らす方法を紹介します。
Magica Cloth
Magica Clothは以下から購入できます。
また、公式のドキュメントは以下から確認できます。
開発環境
この記事は Unity 2020.3.30f1 で作成しています。
また、この記事ではキャラ動作の確認のためにMagica Clothのサンプル内のUnityChanAction及び、UnityChanClothSampleシーンを利用しています。
使用するモデル
今回は以前の記事で紹介した、MMDモデルから変換したさくらみこさんのモデルを例にして説明します。 スカートと胸部にボーンが入っているモデルなら他のモデルでも同じように設定することが可能です。
同じモデルで試したいという方は以下の記事を参考にして下さい。
前準備
「Mgica Cloth」を利用するには、アセットをインポートする前にUnity公式の「Jobs」アセットと「Burst」アセットをインポートする必要があります。
Jobsのインストール方法
Jobsのインストールは、Unityのバージョンによって異なります。ここでは、Unity2020でのインストール方法を紹介しています。(公式ドキュメントにUnity2019 とUnity2021の方法も紹介されていますので、他のバージョンを利用されている方はそちらをご確認下さい。)
まず、「Project Settings…」をクリックします。
Package Managerの[Advanced Seettings]>[Enable Preview Packages]にチェックを入れます。
「プレビュー版です。製品化に至っていません。テスト用としてお使い頂き意見を下さい。」という旨のメッセージが出てくるので「I understand」を選択します。
これでパッケージマネージャからJobsをインストールすることができます。
Unityエディタの[Windows]>[Package Manager]をクリックして、パッケージマネージャを開き「Packages:Unity Registry」を選択、「Jobs」を選択してInstallをクリックします。これでインストール完了です。
Burstのインストール方法
「Burst」はPackage Managerからそのままインストールすることができます。
[Windows]>[Package Manager]を開き、「Unity Registry」を選択、burstで検索すると、Burstがでてくるので、そのままインストールします。これでインストール完了です。
Magica Clothのインポートと事前準備
[Windows]>[Package Manager]を開き、「My Assets」を選択して「magica」で検索して「Magica Cloth」を見つけます。
「Download」してから「Import」をクリックして全てにチェックが入った状態でインポートします。
インポートすると、ProjectのAssets直下に「MagicaCloth」フォルダができます。
[Assets]>[MagicaCloth]>[Example]>[Scene]>UnityChanClothSample.unityをクリックして、サンプルが動作するか確認してみましょう。問題なければ、元のシーンに戻ります。
元のシーンに戻ったら、そのシーンのHerarchyにMagica Clothの物理エンジンプレハブを追加しておきましょう。 [Assets]>[MagicaCloth]>[Res]>[Prefab]>MagicaPhysicsManager.prefabをドラッグアンドドロップでHierarchyに置いておきます。
これでMagicaClothの前準備は完了です。
モデルの設定を変更する
Magica Clothを設定する場合、モデルの設定でFBXなどのインスペクターから[Model]>
[Read/Write Enabled]にチェックが必要です。
チェックを入れたら、「Apply」を押して反映させます。
Magica Clothでスカートを揺らす
今回利用するモデルには、スカートにボーンが入っているので、これを利用してスカートを揺らす設定を行います。
※ボーンが入っていない場合でも揺らす方法があるので、それはまたの機会に紹介するかもしれません。
「Magica Cloth」には、「BoneCloth」という機能があります。これはモデルにボーンが設定されている箇所に固定する箇所と接続されているボーンで揺らしたい箇所を設定することで簡単にクロスシミュレーションを行うことができます。
Magica Bone Clothの追加
まずモデルをHierarchyにドラッグアンドドロップします。
次に、そのモデルのルートとなる部分で右クリックをして、[Create Other]>[Magica Cloth]>[Magica Bone Cloth]を追加します。
揺らしたい対象ごとに「Magica Bone Cloth」を追加するので、名前を「skirt_Magica Bone Cloth」に変えておきます。
Root Listとパーティクルポイントの設定
スカートを揺らす際に、ルートとして固定する部分を設定します。どこがそれにあたるかはモデルよって異なりますので、モデルの設定の中から探す必要があります。
今回利用しているモデルでは、12個のスカートの親となるルートが存在したのでこれを「skirt_Magica Bone Cloth」のインスペクタにある「Root List」に追加します。
そして今回のような、複数のボーンを組み合わせて布を表現しているような場合、Connection Modeを「Mesh Automatic」に変更します。
そして、「Start Point Selection」をクリックします。
すると、スカートに丸い点が表示され、インスペクターも以下のような画面表示に変わります。
「Move Point」をクリックした状態でモデルの点をクリックすると緑色に、「Fixed Point」をクリックした状態でモデルの点をクリックすると赤色になります。
- Move Point(移動パーティクル)…揺れる部分のジョイントに設定
- Fixed Point(固定パーティクル)…揺らしたくない部分のルートに当たる部分に設定
「Move Point」と「Fixed Point」をスカートに設定すると以下のような見た目になるはずです。
わかりやすいように、シーンの表示「Wireframe」表示にしています。
また、Pointの設定時はクリック時にドラッグアンドドロップすることで色を塗るよう設定することができます。
設定が完了したら、「End PointSelection」をクリックします。
これで、パーティクルの設定が完了しました。
制御パラメータの設定
パラメータの設定は、設定項目が多く一から設定するのは難しいのですが、プリセットが用意されているので、今回はそれをベースに設定します。
PrametersのPresetからスカートにあっていそうなプリセットを選択します。
今回のモデルのスカートは少し硬そうなので「DynamicBoneStyle_HardSkirt」を選んでみました。
これでパラメータは自動で設定されてそれなりに揺れが見える状態になるのですが一点パラメータの設定しておきます。
Parameterの「World Influence」を開いて、「Influende Target」に軸となるボーンを設定します。スカートの場合、腰のボーンがそれにあたります。これを設定しておくことで、腰ボーンを中心に、移動の影響を制御できるようになります。(公式ドキュメントでも推奨されています)
今回利用しているモデルの腰はHipMasterTipがそれにあたったのでそれを設定しています。
この設定をしている場合、「Movement Influence」と「Rotation Influence」の値を小さくすることで揺れを小さくすることができます。
今回のスカートは硬そうなスカートなのでここの値を少し下げておきます。
これで一度、インスペクターの一番下にあるCreateをクリックしてパラメータを確定し、再生して動作を確認してみましょう。
自然な感じで揺れているかなと思います。ただ、足がスカートを貫通してしまっています。
次に当たり判定を設定することでこの問題を解決します。
当たり判定の設定
Magica Clothで当たり判定を設定するには、Magica Clothのコライダーをjointと同じ位置に設定してやる必要があります。
今回は腰の部分に1つと、左右の太ももの位置に2つで合計3つのコライダーを設定していきます。
コライダーの追加は、右クリックから[Create Other]>[Magica Cloth]の中にある[Magica Sphere Collider],[Magica Capsule Collider], [Magica Plane Collider]の球、カプセル、板の3の中から選びます。今回は、球とカプセルを利用します。
各ボーンのルートとなる部分にコライダーを追加します。腰にSphere、太ももの部分にCpsuleコライダーを追加しました。
各コライダーの位置をTransformで設定します。
サイズは球の場合は、MagicaSphereColliderのRadiusで設定します。
また、カプセルの場合は、MagicaSphereColliderのLengthで長さ、Start Radiusでスタート部分の大きさ、End Radiusで最後の部分の大きさを調整します。
それらを調整して以下のようになりました。
※この当たり判定の調整は実際に動かしてみながら違和感のないように調整していくことになるので最初はそれなりで良いと思います。
この設定した当たり判定をさきほど作成した「skirt_Magica_Bone_Cloth」に設定します。
「skirt_Magica_Bone_Cloth」のインスペクターを開き、「Collider」の項目を探します。
ここのCollider Listに先程生成した3つのコライダーを追加します。
次に、Parameterの[Collider Collision]をオンにして、コライダーの当たり判定が機能するようにします。
最後に、Parameterの[Pnenetration]にチェックを入れます。これを設定しておくことで、予めコライダーの情報を記憶しておき、そのコライダーの裏面に回り込む現象を防止できるようになります。
最後に、再度インスペクターの一番下にあるCreateを押して反映させます。
これでスカートの設定は完了です。再生して確認してみましょう。
無事貫通せずにいい感じにスカートの揺れを表現することができました。
もしうまくいかない、思っていたのと違うという場合は、パラメータを変更して色々試してみましょう。
また、当たり判定がうまくいかないという場合は、インスペクターの「Open Cloth Monitor」を開いて各コライダーの状態を確認しながら、再生し、Sceneタブで動作を確認してみると原因がわかりやすいです。
Magica Clothで胸を揺らす
胸を揺らす場合も胸にボーンが入っている場合、スカート同様にCloth Boneを利用することで簡単に揺らすことができます。
胸ように[Create Other]>[Magica Cloth]>[Magica Bone Cloth]を追加します。ここでは名前を「mune_Magica Bone Cloth」とします。
胸のルートとなるボーンをRoot Listに追加します。
胸の場合はConnection ModeはLineのままにします。左右の胸がお互いに干渉しない形で揺れます。
「Start Point Selection」をクリックして、パーティクルポイントを設定します。
Parameterを「Preset」から選択します。残念ながら胸のPresetは存在しないので、今回も「DynamicBoneStyle_HardSkirt」をベースに作成していきます。
これをそのまま適用すると揺れすぎるのでスカート同様、Parameterの「World Influence」を開いて、「Influende Target」に軸となるボーンを設定します。
あとは好みで「Movement Influence」と「Rotation Influence」を小さくして揺れ幅を小さくします。
これで設定完了です。Createを押して設定を反映させましょう。
公式では見ることのできない素晴らしい揺れを表現できました!
まとめ
今回、「Magica Clothの使い方 スカートや胸を揺らす方法」を紹介しました。
- Jobsのインストール方法
- Burstのインストール方法
- Magica Clothのインポートと事前準備
- モデルの設定を変更する
- Magica Clothでスカートを揺らす方法
- >Magica Bone Clothの追加
- >Root Listとパーティクルポイントの設定
- >制御パラメータの設定
- >当たり判定の設定
- Magica Clothで胸を揺らす方法
この記事では、「Magica Bone Cloth」を使用したクロスシュミレーションの実装方法を紹介しましたが、Magica Clothでは他にも「Magica Virtual Deformer」「Magica Bone Spring」「Magica Mesh Cloth」「Magica Mesh Spring」といった別の実装方法も存在していますので機会があれば紹介したいなと思います。
今回の記事が、皆さんの助けになると嬉しいです。
もしこの記事が気に入りましたら、ぜひテクリエイトへのブックマーク登録をして頂けると喜びます。
以上、おつかれさまでした!
© Unity Technologies Japan/UCL
モデル:©2016 cover corp. https://3d.nicovideo.jp/works/td74928