電通総研 テックブログ

電通総研が運営する技術ブログ

LiveLinkを使ってMetahumanの顔をモーションキャプチャで動かす 後編

こんにちは、電通総研金融ソリューション事業部の岡崎です。
前回の記事ではMetaHumanIdentityを使用してLiveLink動画を調整する手順まで説明しました。

この記事は前回の続きからになりますので、まだご覧になっていない方は、前編も是非ご一読ください!

検証環境/ツール

実装手順

  1. LiveLinkを使用した撮影
  2. UnrealEngineの準備
  3. iPhoneで撮影した動画をインポート
  4. MetaHumanIdentityを使用してLiveLink動画を調整
  5. LiveLink動画からアニメーションを作成
  6. レベルシーケンスアニメーションをMetaHumanに適用
  7. MetaHumanの体のアニメーションをリターゲティングで作成
  8. MetaHumanの顔と体のアニメーションを連結

5. LiveLink動画からアニメーションを作成

まずはコンテンツブラウザから「MetaHumanAnimator>MetaHumanPerformance」を作成します。

「MetaHumanPerformance」を開きます。

右上の「FootageCaptureData」からiPhoneで撮影した「main」の動画を選択します。

次に右上の「MetaHumanIdentity」から「MetaHumanActor_Identity」を選択します。

さらにその下のHeadMovementModeから「ControlRig」を選択して、左上の「プロセス」ボタンを押下します。

LiveLinkで撮影した動画と、同じ動きをしているアニメーションが再生されるので、再生が終わるまで待ちます。

最後に作成されたアニメーションをMetaHumanで使用するためにエクスポートします。

画面上部の「ExportLevelSequence」を押し、レベルシーケンスとして動画を書き出します。
設定画面が出ますがデフォルトのままで大丈夫です。

エクスポートが完了すると、コンテンツブラウザ内にレベルシーケンスファイルが出力されているのが確認できます。

6. レベルシーケンスアニメーションをMetaHumanに適用

次に、作成されたレベルシーケンスファイルをMetaHumanに適用させていきます。
作成されたレベルシーケンスファイルを開くと、ビューポート上にLiveLinkの動画と先ほど作成したidentityで作られた顔のメッシュが出現します。

identityで作成された顔のメッシュをビューポート上で選択して、詳細パネルから「Mesh>SkeletalMeshAsset」を「Hudson_FaceMesh」に変更します。

すると顔のアセットがMetaHumanの顔に変更されます。

ここでレベルシーケンスを再生させるとMetaHumanの顔でLiveLinkで作成した動きができていることが確認できます。

ただこのままでは、まだMetaHumanのアセットに現在作成したアニメーションを使用することができないので、レベルシーケンスの動きをアニメーションにベイクする必要があります。

レベルシーケンス上で「Face」アセットを選択して、右クリックから「アニメーションをベイク」を選択します。

本来であればこれでアニメーションが作成されるはずですが、おそらくUE5.2のバグで、「アニメーションをベイク」の処理を始めるとアプリが落ちてしまいます。
そのため、以下の対策方法でバグを回避する必要があります。

以下、アプリが落ちてしまうバグの対策方法です。

プロジェクト設定から「RHI」と検索して、デフォルトのRHIの設定を「DirectX12」から「Vulkan」に変更して、UEを再起動します。

設定を変更したUEではアプリが落ちるバグが発生しないので「アニメーションをベイク」を行います。

今回は「Baked_Animation_MetaHuman_LiveLink」と命名しました。

無事アニメーションがベイクできたら、先ほどの設定画面から「DirectX12」に戻しておきます。

次にエクスポートしたアニメーションをMetaHumanに付与していきます。

先ほどまで作業していたレベルシーケンスファイルを閉じ、レベル上に「BP_Hudson」を配置します。

次に新規でレベルシーケンスファイルを作ります。
画面上部の動画マークからレベルシーケンスを作成します。

シーケンサーエディターの左側にある「+トラック」ボタンから「シーケンサへアクタ>BP_Hudson」を選択して、レベルシーケンス上でMetaHumanへのアクセスができる状態にします。

次にシーケンスエディタ内の「BP_Hudson」の配下にある「Face」を広げて「MetaHuman_ControlRig」を削除します。


(このリグはMetaHumanにデフォルトでついているもので、これがあると任意のアニメーションを付与できないので削除)

再び「Face」を選択して右側のプラスアイコンから「Animation>Baked_Animation_MetaHuman_LiveLink」を選択します。
これでMetaHumanにLiveLinkで作成した動きを付与することができました。

ただ、このままだと体と顔が連結されておらず、体にアニメーションをつけた時に分裂してしまうので、顔と体を連結させる必要があります。
次の工程で説明していきます。

7. MetaHumanの体のアニメーションをリターゲティングで作成

まずは顔と体のアニメーションを連結する前に、MetaHumanの体用のアニメーションを用意します。
今回用意する方法は、UEのデフォルトThirdPersonPackに内包されているアニメーションをMetaHuman用にリターゲティングして使用します。

プロジェクト内にThirdPersonPackを追加していない場合は、コンテンツブラウザの左上「Add」ボタンから「コンテンツパックを追加>サードパーソン」を選択して追加します。

コンテンツブラウザ内に「Characters」というフォルダができるので、「Characters>Mannequins>Animations>Manny」から任意のアニメーションを選びます。

今回は「MM_Walk_Fwd」を使います。
「MM_Walk_Fwd」を右クリックして「アニメーションアセットのリターゲティング>アニメーションアセット・ブループリントを複製してリターゲティング」を押下します。

編集画面がでるので右上の「IKリターゲッタ」を「RTG_Metahuman」に変更します。

左側の「ソーススケルタルメッシュ」を「SKM_Manny」にして、右側の「TargetSkeletalMesh」は変更せずに右下の「リターゲット」ボタンを押します。

これによりMetaHumanの体のアニメーションが作成されました。

8. MetaHumanの顔と体のアニメーションを連結

シーケンサーエディターを再び開き、「BP_Hudson」配下のBodyを選択し、Faceの時と同様に「コントロールリグ」を削除して、右側のプラスアイコンから「Animation」を選択して、先ほどリターゲティングした「MM_Walk_Fwd」を選択します。

これでMetaHumanの体と顔が同時に再生されているのが確認できます。


(画質が悪くわかりづらいですが、表情も動いています)

しかし、よく見ると体と顔の間に隙間がありうまく連動されていないのがわかります。

これはUE5.2ではアニメーションのポストプロセス処理が原因しており、現状だとポストプロセスを無効化しないと解消できないのでこれを解除していきます。
シーケンサーエディターでBodyを選択し、詳細パネルから「Animation>AnimationMode」の右にあるキーフレーム追加ボタンを押します。

追加ボタンをおすとシーケンス上にひし形をしたキーが追加されたのを確認できます。

キーフレームが打てたことを確認したら、「DisablePostProcessBlueprint」にチェックを入れて無効化します。

同様にFaceでもキーフレームを追加してポストプロセスを無効化します。

これで顔と体が連結することができました。

作成したMetaHumanによっては顔のメッシュが崩れてしまうことがあります。


(このキャプチャはほかのMetaHumanを試していた時に起きた現象です)

これは顔のメッシュのLODが関係しているので、もし崩れてしまった人は次の工程を参考にしてみてください。

アウトライナー上の「BP_Hudson」を選択し「詳細」の「LODSync」をクリックします。

詳細の下に「NumLODs/ ForcedLOD /MinLOD 」の欄があるので、キャプチャの通りに設定を行ってください。

これにより、顔のメッシュの崩れは解消できます。

以上が、LiveLinkを使ってMetaHumanの顔の動きを自由に生成する方法の紹介でした。

おわりに

今回はLiveLinkというスマホアプリを使うことで、顔のアニメーションを自由に作成する方法を学びました。
学習を通じて、工程は多いものの、とても高品質なアニメーションが作れることにとても驚きました。
この技術を使うことでNPCやムービーのキャラクターなどのアニメーションでできることが大幅に増えるのではないかと感じます。
体のアニメーションについても、UE搭載のデフォルトの動き以外を作成する方法を次回以降で紹介する予定なので、
より自由な表現ができるのではないかと思います。

最後まで読んでいただきありがとうございました!

現在、電通総研はweb3領域のグループ横断組織を立ち上げ、Web3およびメタバース領域のR&Dを行っております(カテゴリー「3DCG」の記事はこちら)。 もし本領域にご興味のある方や、一緒にチャレンジしていきたい方は、ぜひお気軽にご連絡ください!
私たちと同じチームで働いてくれる仲間を、是非お待ちしております!
電通総研採用ページ

参考

執筆:@okazaki.wataru、レビュー:@yamada.y
Shodoで執筆されました