(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発しているゲームです!


髪や胸、スカート等を簡単かつ自然に揺らせる Magica Cloth【Unity】【アセット】


このエントリーをはてなブックマークに追加


この記事でのバージョン
Unity 2019.4.14f1
Magica Cloth 1.10.2


はじめに

今回は髪や胸、スカート等を簡単かつ自然に揺らせるMagica Clothというアセットの紹介です!

Magica Cloth | Physics | Unity Asset Store


イメージとしては以下のような感じで、かなり自然な揺れものを実装する事が可能で、

ちょっと使ってみた感じ同系統の人気アセットDynamic Boneより簡単に使えます。

しかもドキュメントは日本語対応でかなり分かりやすいです。

ただし、Unity2018.4.0(LTS)以上でないと使えません。

f:id:kan_kikuchi:20210721204254g:plain


ちなみにVRで使う事も可能です。



なお、記事中では以下のアセットを使っています。

Dreamscape Nature: Meadows | 3D Fantasy | Unity Asset Store




準備

Magica Clothを使うには最初にちょっとした準備が必要です。

なお、Unityのバージョンによって微妙にやり方が異なるので詳しくはドキュメントを参照の事。

(今回はUnity 2019.4.14f1を使用)



まずはお馴染みPackage Managerで、

f:id:kan_kikuchi:20210722100848j:plain


Burstをインストールします。

f:id:kan_kikuchi:20210722101015j:plain


続いてJobsもインストールします。

なお、AdvancedからShow preview packagesにチェックを入れる必要があります。

f:id:kan_kikuchi:20210722101029j:plain


最後にMagicaPhysicsManagerというPrefabをHierarchyに設置します。

f:id:kan_kikuchi:20210722101208j:plain



揺れ物の実装方法

ここからは本題の揺れ物の実装方法です。

Magica Clothにはボーン単体を揺らすBoneSpring、Meshの頂点を揺らすMeshSpring、

メッシュにボーンが組み込まれた髪などを揺らすBoneCloth等、

いくつもの機能があるのですが、今回は例としてMeshClothという

スカートなどの複雑な動きと衝突判定をシミュレーションする機能の実装方法を紹介します。



まず、モデルのアセットのRead/Write Enabledにチェックを入れます。

f:id:kan_kikuchi:20210722114307j:plain


次にMagicaRenderDeformerというコンポーネントを

スカートのRendererと同じオブジェクトにAddします。

なお、以下の例のようにスカートと体のRendererが一緒になっていても大丈夫です。

f:id:kan_kikuchi:20210722114521j:plain


さらにMagica Virtual Deformerというオブジェクトを作成し、

f:id:kan_kikuchi:20210722114553j:plain


先程追加したMagicaRenderDeformerを登録します。

f:id:kan_kikuchi:20210722114652j:plain


ここでCreateボタンを押すとデータが作成され、さらにOpen Cloth Monitorボタンを押すと、

Scene上で仮想メッシュのポリゴンの形状が表示されます。

f:id:kan_kikuchi:20210722115110j:plain


上記の例のように細かいメッシュになると負荷が高くなってしまうため

以下の2つのパラメータを調整して許容出来るぐらいまでメッシュを荒くします。

(てきとうにメッシュを減らし、動きがおかしかったら増やしていく感じ)

f:id:kan_kikuchi:20210722115131j:plain


次はMagica Mesh Clothを作成し、

f:id:kan_kikuchi:20210722115336j:plain


先程作成したMagica Virtual Deformerを登録します。

f:id:kan_kikuchi:20210722115344j:plain


さらにMagica Mesh ClothのStart Point Selectionボタンを押して、

各ポイントの調整を行います。

f:id:kan_kikuchi:20210722115358j:plain


なおポイントの種類は3種類あり、緑が動くポイント赤が動かないポイント

灰色がそもそも無視する(処理しない)ポイントで、各色ボタンを押した後、

Scene上で各ポイントをドラックし、色を変える感じです。

色が設定し終わったらEnd Point Selectionを押すのも忘れずに。

f:id:kan_kikuchi:20210722101808j:plain
f:id:kan_kikuchi:20210722115521j:plain


各ポイントの動きはParametersから設定するのですが、細かい設定は難しいので、

とりあえずPresetから好きな設定を選び、Createを押してMesh Clothの生成を完了させます。

(あとは動きを見ながらParametersを調整する感じ)

f:id:kan_kikuchi:20210722115732j:plain


最後にMesh Clothが衝突するコライダーを設定します。

コライダーはUnity標準の物ではなく、Magica Cloth特有の物があります。

f:id:kan_kikuchi:20210722102225j:plain


これを手や足などのスカートにぶつかりそうな場所に配置し、

f:id:kan_kikuchi:20210722115949j:plain


当たり判定を行いたいMagica Mesh ClothのCollider Listに登録します。

f:id:kan_kikuchi:20210722120005j:plain


これで最初のようなスカートの動きになります。

f:id:kan_kikuchi:20210721204254g:plain