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

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

PMDをmmd_toolsで読み込んでMecanimHumanoidにする

 BlenderにはPMD/PMXをインポートするmmd_toolsというアドインがあるので、それでpmdをインポートしてみた。
 これならテクスチャも初めから貼られている。vmdのモーションもインポートしてみるときちんと動く。
 fbxでexportする。
 fbxとテクスチャをいっしょにUnityのAssetフォルダにD&Dする。
 fbxに対して、humanoidでconfigureする。
 赤にはなったけど、予想外にうまくマッピングできている。
f:id:yasu9780:20161114163534p:plain
 手首が親指にマッピングされているので直す。
 手の方は人差し指、親指のマッピングが間違ってるので治す。
 なお、humanoidには親指のボーンが三つあるのに対し、もとのpmdには二つしかない模様。
 mmd4mecanimの変換モデルを確認すると、三つ目の親指近位のボーンを追加している模様。
 親指のボーンは二つだけ登録して、三つ目の近位は無しということで、applyしてdoneする。
 出来上がったFBXを、sceneにドロップする。
 剛体と思われる余計なものをまとっている?
 それらをまとめて削除する。

f:id:yasu9780:20161114163539p:plain
 左がmmd_tools経由 右がmmd4mecanim経由

 humanoidのアニメーションを適用して、mmd4mecanimで変換したモデルと比較。
 ほぼうまく動いている。IKあたりまで大丈夫かは未検証。
f:id:yasu9780:20161114163543p:plain
 左がmmd4mecanim経由 右がmmd_tools経由 

 細かく比較すすると、肘という腕が曲げたときに細くなっている。
 これはウェイト関係の問題かもしれない?
 blenderで調整する必要がありそう。
 もしくはunity上でマッスルの調整でできる?
 このへんも解決できれば、mmd4mecanimは使わないでも済むかも。


github.com


ブランチで開発されている新版に変えてみると、boneを英名に変更するが追加されていて、physics関係を読まないみたいな設定でimportすると
humanoidのマッピングが初めからオールグリーンになった。unityに持ってきても剛体らしいものはなくなった。
ただし、前腕が細くなっている現象はそのままだった。
github.com


腕が細くなる問題は、humanoidのmappingが間違っているせいでした。
以下のようにarmをmappingすると、ほぼ差異はなくなったように見えます。
f:id:yasu9780:20161114180617p:plain