BlenderにはPMD/PMXをインポートするmmd_toolsというアドインがあるので、それでpmdをインポートしてみた。
これならテクスチャも初めから貼られている。vmdのモーションもインポートしてみるときちんと動く。
fbxでexportする。
fbxとテクスチャをいっしょにUnityのAssetフォルダにD&Dする。
fbxに対して、humanoidでconfigureする。
赤にはなったけど、予想外にうまくマッピングできている。
手首が親指にマッピングされているので直す。
手の方は人差し指、親指のマッピングが間違ってるので治す。
なお、humanoidには親指のボーンが三つあるのに対し、もとのpmdには二つしかない模様。
mmd4mecanimの変換モデルを確認すると、三つ目の親指近位のボーンを追加している模様。
親指のボーンは二つだけ登録して、三つ目の近位は無しということで、applyしてdoneする。
出来上がったFBXを、sceneにドロップする。
剛体と思われる余計なものをまとっている?
それらをまとめて削除する。
左がmmd_tools経由 右がmmd4mecanim経由
humanoidのアニメーションを適用して、mmd4mecanimで変換したモデルと比較。
ほぼうまく動いている。IKあたりまで大丈夫かは未検証。
左がmmd4mecanim経由 右がmmd_tools経由
細かく比較すすると、肘という腕が曲げたときに細くなっている。
これはウェイト関係の問題かもしれない?
blenderで調整する必要がありそう。
もしくはunity上でマッスルの調整でできる?
このへんも解決できれば、mmd4mecanimは使わないでも済むかも。
ブランチで開発されている新版に変えてみると、boneを英名に変更するが追加されていて、physics関係を読まないみたいな設定でimportすると
humanoidのマッピングが初めからオールグリーンになった。unityに持ってきても剛体らしいものはなくなった。
ただし、前腕が細くなっている現象はそのままだった。
github.com
腕が細くなる問題は、humanoidのmappingが間違っているせいでした。
以下のようにarmをmappingすると、ほぼ差異はなくなったように見えます。