前回からの続きです。
さて、mixamoの基本的な使い方や注意点がわかったと思うので、今回はいよいよUE4上でアニメーションを活用するための具体的な方法を紹介します。
前回さらっと触れましたが、mixamoのデータはそのままでは再利用に必要な共通化「リターゲティング」が出来ないので、ほとんどその対応になります。
目次
なぜリターゲティング出来ないのか
mixamoのFBXデータには、リグ全体の移動量をコントロールするRootボーンがついていないからです。UFOキャッチャーに例えると、マジックハンドを吊り下げる棒がルートボーンの様なもので、マジックハンドそのものの移動量を決定します。一方Rootボーンが存在しないリグは空中に浮いたマジックハンドが自推して移動しているようなデータ構造です。この場合、マジックハンドには腰ボーンが相当します。UE4のリターゲットで使うことになるEpic標準リグ(humanoid)はRootボーンが存在することを前提に設計してあるのでmixamoのボーンをリターゲット出来ないんですね。
ダウンロード、インポート
- ゲームで使う場合、移動量はエンジン側が決定するシチュエーションが殆どのため、mixamo側でIn Placeをチェックして足踏みアニメーションにします。足踏みにしない場合の対処法も後述します。
- 次にblenderで空のシーンを開き、File – Import – FBXでダウンロードしたfbxをインポートします。特に設定を変える必要はありません。
原点(オレンジ色の点)の部分にルートボーンが無いのが確認できますね。
ルートボーンを作る
移動量がないInPlaceのモーションの場合、全体の動きが0であるため、動かないルートボーンを追加すれば整合性が合います。
- mixamoボーンを選択、タブキーを押してボーンのエディットモードに移動します。
- Shift+Cを押して、3Dカーソルを原点に移動します。
- Shift+Aを押してボーンを原点に追加します。
- 腰のボーン(mixamorig:Hips)を選択し、Shiftを押しながら先程作成したルートボーンを選択。
- Ctrl+Pの親子付けメニューから「keep offset」を選択します。
Inplaceではなく、移動量のあるアニメーションの場合はルートボンに(通常は)高さ以外のキーフレームを移動する必要があります。
- ルートボーンに適当なキーフレームを打ちます。キーフレームのコピペには、貼り付け先にも最低限一つのキーが必要なためです。
- グラフエディターでルートボーンに腰のボーンのキーフレームをコピーします
- グラフエディターで腰のボーンのYを削除します。
- グラフエディタ~でルートボーンのY以外を削除します。
- 最後にルートをY=0に設置します。
- 腰の揺れも拾ってしまっていますが、大きく移動するアニメーションではこれで問題ないはずです。
- アニメーションによっては軸の調整やオフセットが必要になります。ジャンプ等の上下運動の激しいアクションは高さもルートボーンに移動したほうが良い時もあります。適時調整すると良いでしょう。
リターゲットの準備
Blenderからの出力はボーンをオブジェクトモードで選択した状態でFBX7.4binaryで書き出したものをUE4のデフォルト設定で読み込めば大丈夫です。
さて、いよいよリターゲットです。わかりやすいようにThirdPersonテンプレートから新しいシーンを開きます。先程のFBXを読み込み、ブラウザーに出てきたスケルトンをダブルクリックしてスケルトンの編集ページへ移動します。
Show Retargeting Optionをオンにします。
Armature ボーンを右クリックして、Recursively Set Translation Retargeting Skeltonをクリックして、全てのボーンを一端Skeltonに設定します。
次に上から2つのArmature,Bone(ルート)、をAnimationに。3つめのHipsをAnimationScaledに変更します。*最新版ではRootの上のArmatureは省かれるようです。
リターゲットマネージャータブに移動し、Select Rig のドロップダウンリストから“Humanoid”を選びます。UE4のマネキン先生に利用されているデフォルトのリグです。
ここからがリターゲットの本番です。AutoMappingを押すと自動でリターゲットしてくれますが、名前が一致していないのでめちゃくちゃに割り振られて逆に面倒くさいので押さないでください。
- Root > 追加したボーン。リネームしていなければ “bone”
- Pelvis > Hips
- Spine_01から03 > SpineからSpine2
- Clavicle > sholder
- UpperArm > Arm
- lowerarm > ForeArm
- Thig > Upleg
- calf > leg
と、命名規則に従ってリターゲットしていきます。また、指先なども設定したい場合はShow Advancedをクリックして、代表的なボーン以外の構造もリターゲットしていきます。IKやTwistの名前が入っているボーンは必要ありません。
修正が終わったらこれで準備完了です。お疲れ様でした。
リターゲット
ちゃんと標準リグでリターゲットができているのか、別のリグでアニメーションを共有できるか確認してみましょう。マネキン先生へmixamoのデータを渡してみることにします。
まずはマネキン先生も共通のリグでリターゲット出来るようにコンテンツブラウザManequin – Character – Mesh内にスケルトンモデルをダブルクリックします。リターゲットマネージャーへ移動し、こちらもSelectRigからHumanoidリグを選択します。マネキン先生はEpicの刺客ですので、Humanoid完全対応です。細かい設定は必要ありません。
いよいよリターゲットです。
Blender経由でもってきたアニメーションファイルを右クリック。メニューからDupulicateAnimBP and Retargetを選択します。ここでマネキン先生のリグを選んでRetagetボタンを押します。
お分かりいただけただろうか……?
もっとわかりやすいアニメーションにすれば良かったと最後の最後に後悔してますが、ちょっとオカマっぽくなったマネキン先生ウォークをお楽しみください。
これでリターゲット作業は完了です。mixamoから好きなファイルをじゃんじゃん持ってきてみましょう。Blender上で髪の毛や揺れ物のボーン等を追加したり、ウェイトやメッシュの調整なんかをしてもちゃんと動くはずです。
かなり駆け足で解説しましたので不明な点が出るかもしれません。質問があればコメントやツイッターにどうぞ!
おまけ。マネキン先生のAnimationBPをリターゲットすることでmixamoで自動リグ付けしたキャラクターをすぐサンプルシーンに適応できます。