RokokoやFreeMoCapでキャプチャしたモーションをMMDで使う方法
こんにちは、mf_Miiです。
色々なことに手を出しているものでNoteのジャンルもバラバラになってますね(笑)
今回はMMDに関するものです。調べても出てこないで一週間以上苦戦した後にようやくやり方を見つけましたのでご紹介したいと思います。
参考記事
ほぼ参考記事のままですので、元記事を参照することを強くおすすめします。
モーションデータを抽出する
まずは汎用的なモーションデータ(BVH)として抽出します。
Rokokoの場合はFBXの読み込みにBetter FBX Importer&Exporterを使うといいと思います。
FreeMoCapの場合は.blendファイルを普通に開いてください。
そして対象のアーマチュアを選択し、BVH出力します。

BVHの向きを変更します
先程出力したBVHファイルを読み込みます

このとき、MMDの座標軸と合わせるために向きを変更します

BVHを読み込んだら、読み込んだBVH(アーマチュア)を再度BVHで保存します。
BVHをVMD(MMDモーションデータ)に変換する
本当はBlender Animation Retargetingを使ってやろうと思ったのですがIKが邪魔をしてくれたおかげで上手くできませんでした。
なのでBVH to VMD Converterというソフトウェアを使います
設定ファイルをReadmeに従って作成します。
(このときBlenderでボーン名と位置を確認しながらやるとやりやすいです)
Rokokoの問題
Rokokoのモーションを出力しようとしたところで、一つ問題点が生じました。
モーションを変換した際、センターの回転軸が一切動かないのです。
そこで、解決策としてセンターに出力するものを一度下半身に出力し、MMD上で下半身のモーションをグルーブに置くことで無理やり解決しました(下半身は回転ボーンなのでセンターとグルーブで競合しないはずです)
可能であれば、モーション結合ツールでセンターに結合させたほうがいいかもしれません
FreeMoCapの問題
FreeMoCap用の設定を作るのがけっこう大変です。ボーン構造が結構違うのに加え、BVHのアーマチュア表示が見づらいのでサイズを手動調整したあとにボーン割当を変えて、さらに回転調整をしなければいけません。
設定済みのファイルは最後に載せていますが、うまく行かないようでしたらご自身で調整してください。
最後に
キャプチャしたデータはガクガクで無駄も多いので、色々なツールを駆使してモーションを整形しないと使い物にならないと思いますのでご注意ください。)
BVH to VMDの設定ファイル
こちらはRokokoのモーション変換に使ったものです
そして下半身を出力するために作った設定データ
FreeMoCap用の設定データ