どうも。盛岡市で映像制作をしているノットモーションです。Unreal Engine絶賛勉強中です。
今回はUnreal Engine5のMetaHuman Animatorでフェイシャルキャプチャを使用する方法です。実際に作った動画が下です。
私が作業していてつまづいた点などを備忘録がてらシェアできればと思います。
使用したのはUE5.2、iphone13です。
なお、私はUE4.27からの人なので、間違った認識をしている部分があるかもしれません。その場合ご指摘いただけると助かります。 それからもう一つ。Metahuman Animatorにはリアルタイムで通信するモードと、保存した動画を使うモードがあるのですが、今回は保存した動画を使う方法になります。
まず、iphoneで顔動画を撮影する必要があるのですが、現在対応しているのはiphone X以降の機種のみでAndroidは未対応です。
次にLive Link Faceというアプリをインストールし、キャプチャ動画を撮影します。 この辺はアプリのUIに従えば、迷うことなくできると思います。キャプチャした動画は、PCに送信しておいてください。
少しキャプチャする際のポイントを。
公式から画像をお借りしました。 キャリブレーション用として最低限、正面から顔全体が写っている画と、歯が見えてる画はとっておいてください。基本的にはこれでOKですが、左右もキャリブレーションする場合はほんの少し横を向く程度いいみたいです(奥の目が見切れない程度)
これからはPCでの作業になります。まず、MetaHumanプラグインが入っていない方は、インストールして、キャプチャ先のターゲットとなるMetaHumanを誰でもいいのでダウンロードしておいてください。
プラグインを有効にし、再起動すると次のメッセージが表示されるので、「不足しているものを有効にする」を選択。すると再度、再起動が入ります。
では、Megascan Bridgeからお好きなキャラをプロジェクトに追加してください。そのさい、Legacyと表示されているキャラに関しては、フェイシャル非対応なので注意してください。
今回は標準で用意されてるAdaを使っていこうと思います。Adaをプロジェクトに追加し、レベルに配置します。
配置したときに、先程と同じ様に右下にメッセージが表示される場合は、すべて「不足しているものを有効にする」を選択し、再起動してください。これで下準備は完了です。
キャプチャソースの作成
まずは、コンテンツブラウザで右クリック > MetaHuman Animator > 「キャプチャソース」を作成し、開きます。これは、キャプチャがどのようなタイプか指定するだけです。
- LiveLinkFace Connection:iphoneと直接通信するタイプ
- LiveLinkFace Archives:保存した動画を使うタイプ
前述のとおり、LiveLinkFace Archivesを使っていきたいと思います。
その下にあるパス入力欄で、iphoneから取り込んだフォルダを指定します。
※キャプチャソースのアセット名をリネームする場合は、必ず半角英数字。
フッテージの取り込み
メニューバーのツール > キャプチャマネジャーを立ち上げます。
1. 先ほど作成した、キャプチャソースを指定
2. フッテージを選択
3. キューに追加ボタンをクリック
4. すべてインポートする。
すると、キャプチャソースと同階層に新しく○○_ingestedというフォルダが作成されているはずです。この中にキャプチャ動画に関連するデータがまとめられているようです。
MetaHuman Identityの作成
コンテンツブラウザ上で右クリック、MetaHuman Animator > MetaHuman Identityを作成します。作成場所は分かりやすく、キャプチャソースと同階層がいいかと思います。ちなみに***MetaHuman Identity***とは
> キャプチャデータ(メッシュまたはフッテージ)から、顔の特徴をトラッキングし、トラッキングされたカーブにMetaHumanトポロジーを持つテンプレートメッシュをフィッティング。得られたメッシュをMetaHumanサービスに送ると、キャプチャデータから人物に似た自動リギングされたSkeletalMeshが返されます。
とりあえずはキャプチャ動画から顔のテンプレートメッシュを作成してくれて、コントロールリグまで作ってくれる便利なものだと思っていれば良さそうです。
MetaHuman Identityを開いて、ログイン求められたら従ってください。
画像のように、コンポーネントを作成 > フッテージから > キャプチャデータを指定するとメインパネルに動画が読み込まれるはずです。
タイムラインで、キャリブレーション用に撮影した正面のフレームに移動し、
左下にある+ボタンをクリック。すると、顔がトラッキングされ目や口などのポイントにカーブが配置されます。
もし、左右を追加する場合は、左下のカメラボタンをクリック。すると、タイムラインを移動できるようになるので、右・左と同様の処理をします。
次に、上部にあるMetaHuman Identityの解決ボタンをおすと、テンプレートメッシュがフィッティングされます。
テンプレートメッシュを確認する場合は、画面上部にオーバーレイされているアイコンをクリックすれば確認できます。メッシュが問題なさそうであれば次の工程にいきます。
次は、このメッシュにコントロールリグをつける工程です。それもボタン一発でできます。先ほどのボタンの隣「メッシュをMeta Humanに変換」を押すだけ。このさい、
上記の2項目がありますが、
上段は、リターゲットするMetaHumanがすでにある場合。
下段は、今回の動画もとに新たにMetaHumanを作成したい場合
今回はすでにMetaHumanは用意してあるので、上段を選択します。
そうすると、ボディが選択されてません、というメッセージが表示されるので、画像のように好みの体を選択し、再度「メッシュをMeta Humanに変換」を押してください。するとバックグラウンドで処理が始まるはずです。
処理が完了したら、今度は歯のポーズの作成です。 ちなみに歯のポーズは、先程の「メッシュをMetaHumanに変換」をしないと作れないようになってます(グレーアウトで選択できない)
では、エディター内で新たにポーズを追加します。左のパネルのツリーからNeutral Poseを選択した状態で追加 > ポーズの追加 > 歯を追加。
先ほど同じようにタイムラインで歯が見えているフレームに移動し、+ボタン。
すると口と歯を認識して、ポイントを打ってくれます。次に、ちょっとだけ調整をします。
個人差はありますが歯を閉じた状態だと、下の歯(の上部分)が少し隠れることが多いようです。なので、どの歯が見えて、見えてないかをMetaHumanに教えてあげる必要があります。
それを右側のパネルで調整します。
画像のように4つの歯の調整項目があるので、それぞれ対応している歯が隠れてる場合は、ビーカーアイコンをOFFにしてください(目アイコン=表示 / 非表示、ビーカーアイコン=ソルブの対象/非対象)
最後に、上部にある「歯をフィットさせる」ボタンを押してください。数秒で終わると思います。
処理が完了したら、隣にある「パフォーマンスの準備」ボタンを押します。
この処理は結構時間がかかります。メモリ64gb未満だと低速モードになります。エディタの環境設定 > metahumanプラグイン設定 > 「Fast prepare for performance」をONにすれば強制的に高速モードにできますが、私の環境(メモリ48GB)で試したところ、途中で止まったりなどして不安定になったので、素直に低速モードでやるのが無難なようです。
アニメーションの作成
次にやるのは、キャプチャ動画の表情を解析して、テンプレートメッシュにアニメーションを移していく作業です。
コンテンツブラウザで右クリック > MetaHuman Animator > MetaHumanのパフォーマンスを選択します。
右側の詳細パネルの次の項目を変更します。
Footage Capture Data→キャプチャデータ(映像)を指定。
MetaHuman Identity→前の工程で作成した Metahuman identityを指定。
さらに必要であれば、Processing Prameter > Start(End) Frame To Processで対象となる動画の範囲を指定してください。 今後、別のアニメーションを取り込む場合はFootage Capture Dataに別の動画を指定するだけで大丈夫なはずです。
左上にある、「プロセス」をクリックします。ここで強制終了してしまう人はアセット名に日本語が含まれないか確認してください。
トラッキングがすんだら、タイムラインを再生させて結果を確認してみましょう。テンプレートメッシュにキャプチャ結果が反映されていると思います。
では、結果をアニメーションシーケンスとしてエクスポートしましょう。
プロセスの隣にある、「アニメーションのエクスポート」をクリックします。ダイアログに従い保存場所を指定すると、次の画面が表示されます。
Enable Head Movement:表情だけでなく顔も動く。ボディのモーキャプもある場合はOFFにする。
Target Skelton or Skeltal Mesh :テンプレートメッシュではなく、固有のFaceMesh(スケルタルメッシュ)を指定します。 通常であれば、[metahuman名]__FaceMeshという名称になっているはずです。私の場合は、Adaを使用するので、上記のようになっています。
確認のため出力されたアニメーションシーケンスを開いて問題なく動いてればキャプチャ作業は完了です。次はシーケンスでアニメーションを再生していきましょう。
レベルシーケンスの作成
もしこの時点でレベルにMetaHumanを配置していない場合は、配置しておいてください。
レベルシーケンスを作成し、配置したMetaHumanのトラックを作成します。アウトライナーからドラッグ&ドロップでOKです。次に、BP_[metahuman名] > Face > Face ControlBoard_CtrRigを削除してください。
Faceトラックの+トラックからアニメーション > 先程のアニメーションシーケンスを指定します。タイムラインを再生すれば、アニメーションが再生されているはずです。ただ、けっこう挙動が不安定です。
再生されなかったり、アニメーションが崩れたりする場合は下を試してみてさい。
- レベルシーケンスを開き直す。
- UEを再起動する
- ゲームプレイモードで確認してみる。ここでしっかり再生されていれば、レンダリングにも反映される模様。
以上で完了です。お疲れ様でした。もし音声ファイルも配置したい場合は、
さらに、オーディトラックの+ボタンから音声ファイルを指定します。〇〇_ingestedというフォルダ内に音声トラックもインポートされているはずです。
あとはカメラを配置してレンダリングしてみてください。最後までお読みいただきありがとうございました。
Comentarios