AIプログラムとかUnityゲーム開発について

探索や学習などを活用したAI系ゲームを作りたいと思います。

Clothコンポーネントでスカートの揺れを表現

衣服や布をシミュレートするClothという機能があるので試してみました。

モブ子は元々PMDデータで、MMD2MecanimでMecanimなHumanoidに変換してますが、HumanoidにはスカートのBoneはないので、そのへんは生かされない。
なので走ったりで太ももが上部に移動するとスカートをつきやぶってしまう。

clothコンポーネントをスカートに適用すれば、破たんの無い歩行ができるのではないか?
ただし、変換結果のmeshはスカートと体が一体になっていて、スカートのmeshだけにclothを適用できない。
これはPMDからFBXに変換するときの問題かもしれない。

現在はメタセコイアV4で、Unityのhumanoidボーンを適用する仕組みができているが、まだ有料版買ってないので無理(´・ω・`)
というわけで、まずは元のPMDをメタセコV4で読み込みスカートだけのmsqファイルで出力
それをOBJファイルに変換してUnityで読み込ませてみた。
スカートだけのmeshオブジェクトが出来上がる。

これをモブ子のボーンのhipMasterの子供として置いて、meshに対してclothコンポーネントを設定。
edit Constraintsを押して、布が固定な部分と動きやすい部分を設定する。

f:id:yasu9780:20161108020004p:plain赤色は固定、緑色は自由に移動できる。

f:id:yasu9780:20161108020037p:plain
設定はほぼデフォルト。
この布が影響を受けるコライダーを追加登録する。
ここでは右ふとももと左ふとももの二つ。
それぞれ、33:joint_LeftHipと59:joint_RightHipで、カプセルコライダーを追加している。
このボーンの番号は、もともとのPMDデータでの番号と一致する。元のボーン名は日本語なので、mmd2mecanimが英語に書き換えていると思われる。


もともとのスカートは消せないので、さらに上にスカートを追加して、そのスカートにclothを適用したことになる。
ちゃんとスカートだけmeshが分離されるような変換の仕組みが分かれば二重スカートは解消するのだけど(´・ω・`)
f:id:yasu9780:20161108020058g:plain
元のスカートと比べてきちんと太もものコライダーで布が持ち上がるようになった。
布らしい揺れも再現されている。
ちなみに、布と太もも、どちらもrigidbodyではないです。