3DCG系のプロジェクトを進めており,モーションを購入した.
モーションパッケージ 第1弾 ”スタンダード①”
https://booth.pm/ja/items/2610761
モーションキャプチャで収録したデータが,FBX形式で入っている.
特になんの知識もなかったので,適当にポンっとやればMMDモデルで動かせると思っていたが,現実は甘くなかった.
Live Animationというツールを使う方法や,AutoRigProを使ってBlenderでリターゲットする方法などがあることが判明したが,どれも自分の思うようにいかなかった.
丸3日費やして方法を見つけたので,メモしておく.
0. 流れ
FBX → BVH をBlenderで行う
BVHの座標軸をBlenderで修正する
BVH → VMD を有志ツール(後述)で行う
1. FBX→BVH
まずはBlenderにFBXを読み込む.が,標準の読み込み機能ではなぜかボーンの向きがひっちゃかめっちゃかになってしまう.
埒が明かないので,有料アドオンを購入した.こちらでは正常に読み込める. Better Fbx Importer & Exporter https://blendermarket.com/products/better-fbx-importer--exporter
Blenderくん,頼むよ…
読み込めたら,ファイル
>エクスポート
>bvh
から書き出す.
2. BVHの座標軸の修正
Blenderは上がZの右手系なのに対し,MMDは上がYの右手系であるため,データを回転する必要がある.ファイル
>インポート
>bvh
のウィンドウの右側のトランスフォーム
の欄を以下のように変更する.
読み込んだら,FBXのときと同様の手順で再度BVHにエクスポートする.
3. BVH→VMD
ゆきときプロジェクト様のBVH to VMD Converterを使わせていただく. 【無料】BVH to VMD Converter https://booth.pm/ja/items/3242387
このツールには以下の3つの機能がある:
1. ボーン名の変換
対照表に従い,BVHのボーン名をMMDのボーン名に変換する
2. 角度補正
(未検証,ミリしらで書いてる)BVHはTポーズからの相対角度,VMDはAポーズからの相対角度でモーションを記録しているっぽい.オフセットを設定することでこの角度差を補正できる.
3. VMDへの変換
上の2つの変換を施した上で,VMDに変換してくれる
まさに神ツール.ありがとうございます.
ボーンマップに今回のボーン名がないため,手動で追記する.追記したAutoBoneMap.csv
をここに置いておくので,自己責任で使ってください.
Convert
をクリックすると変換される.
4. MMDで読み込む
出力したvmd
ファイルをMMDで読み込むと,モーションが反映されると思う.もし向きや角度がおかしかったら,2の座標軸を見直したり,3のcsvのオフセット値を変えてみたりすると良いだろう.また,足のIKをオフにする必要があるので注意.