【3D】MMD モーションを AutoRigPro に Remap する
概要
MMD のモーションデータ (.vmd) を Blender アドオンである AutoRigPro の Remap 機能を用いて別のRig へと転送する方法を調査した。
Remap を簡単にするため MMD の標準ボーンと AutoRigPro ボーンの対応関係を示すプリセットを作成したので配布する。
手短に
AutoRigPro の Remap 機能についての解説が必要ない方は、文末で配布している MMD ボーンと AutoRigPro ボーンの対応プリセット (.bmap) をダウンロードして Import してください。
使用するソフトウェアバージョン
Blender: v3.5.0
AutoRigPro: v3.68.33
blender_mmd_tools: v2.8.1
AutoRigPro Remap 機能について
AutoRigPro の Remap 機能はアニメーション Retarget 用の機能であり、ボーンの対応関係を入力することで、異なる構造の Rig 間でアニメーションデータを転送するものである。
今回は MMD 形式の Rig から AutoRigPro 形式の Rig へと MMD モーションデータを転送したいため、これらの Rig の間の対応関係を明らかにすればよい。
ただし、アドオン特有の注意事項があるため、それらについても解説する。
MMD モデルとモーションデータの Import
はじめに Blender に MMD モデル (.pmx) を Import する。
Import には blender_mmd_tools を使用する。
今回のテストにはニコニ立体ちゃんを使用した。
次に、mmd_tools のパネルからモーション (.vmd) を Import する。
MMD ボーン名を英語にする
この点は注意が必要なポイントである。
MMD ボーン名は日本語だが、AutoRigPro Remap は日本語のボーンを正しく扱うことができない。
幸い mmd_tools にはボーンの翻訳機能が付いているため、これを利用する。
対象となる Rig オブジェクトを選択した状態で mmd_tools のパネルから Translate を選択する。
ポップアップの Modes: Blender Names, Allow Fails にチェックを入れて OK を押せば翻訳が完了する。
ただし、すべてのボーンが正しく翻訳できるわけではなく、部分的に日本語が残ってしまう場合がある。
しかし、MMD 標準ボーンのみを対象とする場合、これは実際には問題にはならないはずである。
Remap に MMD と AutoRigPro ボーンの対応を入力
MMD 側の準備ができたので、AutoRigPro Remap 側の作業に移る。
なお、Remap プリセットを利用する場合はこの章の情報は不要である。
次の 「Remap プリセットを使用する」章に進んでください。
AutoRigPro の Remap パネルで、Source Armature に MMD Rig, Target Armature に AutoRigPro Rig を選択する。
その状態で Build Bone List を押すと、ボーンの対応リストが現れる。
なお、この時日本語ボーンが含まれているとエラーメッセージが表示されるが、必要な標準ボーンはリストアップされているはずなので気にしなくてよい。
リストアップされたボーンそれぞれについて Source Bones (MMD) と Target Bones (AutoRigPro) の対応関係を指定していく。
対応関係を以下に列挙する。
ボーン対応表一覧
Arm FK, Leg IK で制御する場合の対応関係。
左側 (L) のみ記載。右側 (R) も同様。
指ボーンは第一関節のみ記載。第二・第三関節も同様にマッピングする。
凡例
MMD ボーン英名(和名): AutoRigPro ボーン名
ParentNode(全ての親): c_pos
Center(センター): c_root_master.x
UpperBody (上半身): c_spine_01.x
UpperBody2 (上半身2): c_spine_03.x
Neck(首): c_neck.x
Head(頭): c_head.x
Shoulder_L(左肩): c_shoulder.l
Arm_L(左腕): c_arm_fk.l
Elbow_L(左ひじ): c_forearm_fk.l
Wrist_L(左手首): c_hand_fk.l
Thumb1_L(親指): c_thumb2.l
IndexFinger1_L( 左人指1): c_index1.l
MiddleFinger1_L(左中指1): c_middle1.l
RingFinger1_L(左薬指1): c_ring1.l
LittleFinger1_L(左小指1): c_pinky1.l
LowerBody(下半身): c_root.x
Ankle_L(左足首): c_foot_ik.l
Remap プリセットを使用する
Remap プリセットを使用して、一括でボーンの対応関係を設定する。
文末の GitHub リポジトリから .bmap ファイルをダウンロードしておいてください。
Remap の Mapping Presets -> Import からダウンロードした .bmap ファイルを読み込めば対応関係が設定されます。
Remap プリセットは二種類用意していて、脚の IK/FK 制御方法が異なりますので目的に合わせて使い分けてください。
MMD (FK Arms FK Legs).bmap: 腕を FK, 脚を FK 制御
MMD (FK Arms IK Legs).bmap: 腕を FK, 脚を IK 制御
Remap を実行する
ボーンの対応関係が設定出来たら Remap を実行する。
実行前に以下の二つの処理を行っておく。
1. Auto Scale
ボーンの Scale が補正される。
2. Redefine Rest Pose
Rest Pose を Target に合わせる。
Redefine Rest Pose を押して現れる Dialog で Preserve, Rest Pose をチェックして OK。
これで実際の Rest Pose は保持したまま、仮想的に Rest Pose を編集できる。
腕ボーンを選択して、Copy Selected Bones Rotation を選択。
これで回転が自動的にコピーされる。
脚についても同様に行いたいのだが、IK は切っているはずなのに Copy が行われないため、手動で Target に合わせて回転させる。
編集が完了したら Apply を押す。
ここまで準備ができたら Re-Target を押して、モーションの転送ができるはずである。
アニメーションキーフレームの Reduction
Remap を行うとすべてのフレームにキーフレームが打たれるため、編集を行うことが難しい。
以下の Tutorial に従ってキーフレームを Reduction することが可能である。
1. Preferences -> Interface -> Developer Extras にチェックを入れる
これを入れないと自分の環境では Ghost Curve のアイテムが登場しなかった。
2. F3 キーから Create Ghost Curves を検索して実行
3. 同じく F3 キーから Decimate Keyframes を実行
Decimate 前
Decimate 後
MMD UuuNyaa Tools を利用してみる
MMD UuuNyaa Tools に AutoRigPro Rig に直接 MMD モーションデータを適用できる機能があるため試してみた。
以下の Tutorial の通りに行って AutoRigPro でも .vmd を Import を行う。
ただ、残念ながら自分の環境 (UuuNyaa Tools v1.7.2) では Apply MMD Pose を行うと Rest Pose が崩れてしまい、正しくモーションを適用させることができなかった。
一応、AutoRigPro のリグを手動で MMD の Rest Pose に近づければモーションの適用自体は可能であった。
Experimental の機能であるため、今回の調査はここまで。
配布物
以下の GitHub リポジトリで Remap プリセットファイルを配布する。
色々書きましたが、筆者は Rigging の勉強を始めたばかりで、AutoRigPro も MMD も今回初めて触りました。
Remap プリセットの編集・再配布等は許可なく行ってもらって構いませんので、間違っている部分があれば修正をお願いします。
この記事が気に入ったらサポートをしてみませんか?