モーションキャプチャーのデータをBlenderで調整してUE4で使用する

Labyrinth
お詫び
以前この記事で「Rootボーン有りモデルとRootボーン無しモデルの2種類用意する」という説明をしましたが、そのような手順を踏まずに対応可能であることがわかり、内容を修正しました。失礼いたしました。

前置き

私たちそらまめゲームスが開発中のLabyrinthは3Dの謎解きゲームですが、シナリオも用意されており、ゲーム中にたくさんのカットシーン(イベントシーン)が再生されます。

UE4ではシーケンサーという機能によってカットシーンを作成することができます。ステージにキャラクターを配置して、カメラを動かし、音声を再生したりイベントを発生させることが簡単にできます。

しかしカットシーンを作成する中で大きな障壁となるのが、キャラクターの演技であるカットシーンアニメーションです。

マーケットプレイスなどでアニメーションのアセットを購入することはできますが、「歩き」や「攻撃」といったゲームプレイ向けのアニメーションが多く、カットシーンの台本に合わせた演技になるよう動かすのは至難の技です。また、カットシーンのアニメーションを手付け(手作業)で作成するのは、作業量的に途方もなく、高いスキルが求められます。

そこで選択肢として出てくるのが、モーションキャプチャーによるアニメーションの収録です。

これまでモーションキャプチャーの機材はとても高価で、個人では手が出せなかったのですが、最近は比較的安価なものも出てきて、選択肢として現実的になってきました。

そらまめゲームスではPerception Neuron(ニューロン)という機材を購入してモーションキャプチャーを収録し、UE4のカットシーンアニメーションに適用しています。

この記事では、Neuronでモーションキャプチャーを収録してBlenderで手直しをした後、UE4に持っていくまでの手順を解説します。

大まかな流れ

  • 最終的にカットシーンのアニメーションはルートモーション有りで作成します。
    →演技中に立ち位置が移動するため
  • Neuronのアニメーションデータは原点位置にRootボーンが存在せず、Hipsがルートになります。
  • BlenderでRoot有りのボーンにリターゲットしてモーションを修正し、FBX形式にエクスポートします。

下準備

UE4にカットシーン用スケルタルメッシュを用意する

別記事にてVRoidのモデルをBlenderで編集してUE4に持っていく方法を解説しました。

新・VRoidをBlender経由でUE4に持っていく自己流メモ

2019年12月1日

この記事を参考に、Rootボーン有りモデルをUE4側に用意しておきます。後ほどリターゲットの機能も使用するので、リターゲット設定もしておく必要があります。

Blenderに編集用Rootボーン有りモデルを用意する

モーションキャプチャーで収録したアニメーションにはRootボーンが無く、Hips(Pelvis)がルートになります。

Blenderでモーション修正する際にはRootボーン有りのVRoidモデルを用意して、モーションキャプチャーのモデルからアニメーションをリターゲットします。

Rootボーン有りのVRoidモデルは、先ほど紹介した別記事を参考に用意してください。

また、ボーンコンストレイントの機能を使い、ボーンごとに角度制限を設定します。

これは、モーションキャプチャーのデータは誤差によって曲がっては行けない方向に曲がった状態になっていることがあり、その保険として設定しておきます。

人体の関節の可動範囲の角度を参考に設定していますが、アニメーションを作る際には多少可動範囲を超えて誇張した方が見栄えが良くなることが多々あります。

これはカメラで撮影したときの構図や画角次第で変わってくるため、最終的にUE4上で調整することとして、Blenderではとにかく角度が破綻しないデータを用意します。

手順

Perception Neuronでモーションキャプチャーを収録する

Neuronでのモーションキャプチャーの収録方法はドキュメントなどに書かれているので省きます。

UE4ではLiveLinkという機能によって、Neuronでの収録中にリアルタイムでUE4エディタでも同期再生&録画することが出来ます。

LiveLinkの利点はUE4上で録画出来るだけではありません。同期することで、UE4でカットシーンの舞台を構築し、自分の演技がゲーム内の比率でどのように動くのかをリアルタイムで確認しながら収録出来ます。

椅子に座ったり、机の上の物を拾ったりという動きを、距離感を確認しながら演技することが出来るようになります。

レベル上のアクターと干渉するアニメーション

今回はBlenderでのモーション修正を前提にしているので、録画自体はNeuron側で行い、シーンファイルをBVH形式でエクスポートします。

Blenderでアニメーションを編集する

BVHファイルをインポートする

下準備で用意したモーション修正用のRootボーン有りVRoidモデルをシーンに読み込んでおきます。

また、Blenderのシーンのフレームレートを30fpsにしておきます。これはゲームの仕様によって異なるかと思います。

ゲームの仕様にあわせたフレームレートに設定する

BVHファイルのインポートはBlenderの標準機能で用意されています。
[ファイル]>[インポート]>[Motion Capture (.bvh)]を選択します。

インポートオプションを以下のようにしてインポートします。

  • [拡大縮小]を0.01倍にする
  • [FPSのスケーリング]にチェックを入れる
  • [シーン期間を更新]にチェックを入れる

BVHのインポートオプション

モーション用モデルにリターゲットする

リターゲットには、有償アドオンのAuto-Rig Proを使用します。アニメーションのリターゲットが出来るものであれば他のアドオンでも問題ありません。

Auto-Rig Proでのリターゲットの方法を紹介します。


キーフレームを削減する

モーションキャプチャーで収録したアニメーションデータは、すべてのフレームにキーが打ってあります。このキーのパラメータが少々問題でして、モーションキャプチャーの精度の都合で、収録時に動かしていない部位であっても毎フレーム僅かに座標がずれて記録されます。

常に数値が変動している

これを改善するために、キーフレームの削減(リダクション)を行います。

BlenderではSimplify Curves+というアドオンを使用することで、ワンクリックで削減することができます!アドオンはデフォルトでインポートされていますがチェックが外れた状態になっています。チェックを入れて有効にします。

[Simplify Cureves+]にチェックを入れて有効にする

F3キーでコマンド検索ウィンドウを出し(業界互換キーマップではTabキー)、「Simplify F-Curves」と入力してオプションウィンドウを表示します。

[Distance Error:]のエラーという数値を調整することで、キーフレームを削減する強度を変更することができます。

キーフレームの削減は、やり過ぎると動きにメリハリが無くなってしまうためどこまで突き詰めれば完了とするかはさじ加減になります。Labyrinthではだいたい0.02~0.03くらいにしています。

キーフレーム削減後のグラフ

ボーンの回転を修正する

こちらもモーションキャプチャーの精度の問題で、関節がおかしな方向に曲がっていることがあるので、これを修正します。

おかしな方向に曲がっているというのは初めから全体が30度曲がっているといったズレであることが多く、大抵は演技の動き自体はきちんと録画できています。この場合の修正は簡単で、ボーンのキーフレームをまとめて30度逆方向に回転させれば元どおりになったりするので大してスキルが求められるような修正はないかと思います。

FBXで書き出す

最終的なアニメーションの仕上げはUE4上で行いますので、ここではある程度整えたらFBXで書き出します。FBXの書き出しはIndie-us Gamesさんが公開しているX4UEというFBXエクスポートアドオンを使用します。

  1. アウトライナのArmatureを右クリック>[階層を選択]をクリックする。
  2. [ファイル]>[エクスポート]>[FBX for UE4 (.fbx)]を選択する。
  3. オプションメニューの[Bones Axes]を確認する。
    1. [プライマリ]>[Z軸]になっていることを確認する。
    2. [セカンダリ]>[X軸]になっていることを確認する。
  4. [UE4 FBX Export]をクリックする。

UE4でアニメーションデータを読み込む

UE4での手順は特筆すべき点はないですが、簡単に紹介します。

FBXファイルをインポートする

下準備で用意したRootボーン無しスケルタルメッシュに対してアニメーションをインポートします。

インポートオプションでは、[Import Mesh]にチェックが入っているのでこれを外します。また、[Skeleton]は下準備で用意したRootボーン有りスケルタルメッシュを選択します。

これでRootボーン有りのスケルタルメッシュに、モーションキャプチャーのアニメーションデータを適用することができました!

一旦まとめ

ここまでの手順で、NeuronでモーションキャプチャーしたアニメーションデータをBlenderで編集した後にUE4へ持ってくることができました!

しかしゲームで使用するには更に手直しが必要です。

後半の記事では、UE4の有償プラグインであるAllright Rigを使用してアニメーションの最終調整・フェイシャルモーションの作成を行い、おかずさんの無償プラグインであるKawaii Physicsを使用して揺れものシミュレーションをした後、アニメーションをベイクしてカットシーンで使用する方法について紹介します!