🎬

Unreal Engine 5 + Omniverse Audio2Face で音声からリップシンクアニメーションを作成して動かす

2022/12/30に公開

はじめに

Unreal Engine を使って映像作品を作ってみたいと思い、リップシンクアニメーションを作る方法を調べてまとめました。
筆者のレベルは Unity ちょっと使ったことのある Unreal Engine 初心者なので、ご指摘歓迎です。

動作環境

Windows 11
Omniverse Audio2Face 2022.1.2
Unreal Engine 5.1.0

Omniverse Audio2Face のインストール

Omniverse Launcher のインストール

下記ページの「Get Started」から個人情報を入力してダウンロードしてインストールする。
https://www.nvidia.com/en-in/omniverse/

Omniverse Audio2Face のインストール

  • プログラム「NVIDIA Omniverse Launcher」を起動する。
  • 「更新」タブを開く
  • 検索窓に「audio2face」と入力し、表示されるアプリ「OMNIVERSE AUDIO2FACE」を選択しインストールする

Nucleus サービスを追加する

  • Omniverse ではサンプル素材の利用や作成したリソースの共有のために Nucleus サービスというファイルサーバーのようなものが用意されているので、これをインストールする
  • Omniverse Launcher の「NUCLEUS」タブを開く
  • 「ローカル Nucleus サービスを追加する」を選択
  • サーバー名とファイルの保存場所を確認されるので、デフォルトのまま「次へ」
  • Nucleus サービス上での管理者アカウント情報の入力が求められるので、任意のユーザー名やパスワードなどを入力して「セットアップを完了する」

Unreal Engine 5.1 Omniverse Connector のインストール

  • Omniverse から Unreal Engine へリソースの共有をするためのアプリケーションをインストールする
  • 「更新」タブを開いて「unreal engine」を検索し、表示される「Epic Games Unreal Engine 5.1 Omniverse Connector」をインストールする

Omniverse Audio2Face で音声からリップシンクアニメーションを作成する

音声の用意

https://ondoku3.com/ja/
音声読み上げサービスを使って音声を用意した。

ダウンロードできたファイルは mp3 だったので、
https://convertio.co/ja/
を使って wav に変換した。

Omniverse Audio2Face の起動

  • Omniverse Launcher の「ライブラリ」タブを開く
  • アプリケーションの Omniverse Audio2Face を選択し「スタート」

ブレンドシェイプ用のモデルを読み込み

  • デフォルトのアニメーションから Unreal Engine で利用できるブレンドシェイプアニメーションに変換する
  • 動作確認をするためのブレンドシェイプ用のモデルを読み込む
  • 対象のファイルは Content パネルの「omniverse://localhost/NVIDIA/Assets/Audio2Face/Samples/blendshape_solve/male_bs_46.usd」にある
  • このファイルをドラッグアンドドロップで Stage パネルにコピーする
  • デフォルトのモデルと同じ座標に配置されており見づらいので、Stage で World > male > char_male_model_hi > c_headWatertight_hi を選択し、Viewport で移動させる

ブレンドシェイプアニメーションへの変換

  • 右上の A2F Data Conversion タブを選択
  • BLENDSHAPE CONVERSION 欄の編集をする
    • Input Anim Mesh に /World/male/char_male_model_hi/c_headWatertight_hi に
    • Blendshape Mesh に /World/male_bs_46/neutral に
  • SET UP BLENDSHAPE SOLVE を押す
  • Audio2Face Tool タブで AUDIO PLAYER 欄で音声の再生を行い、青いモデルが動いたら成功

音声ファイルをセットする

  • Audio2Face Tool タブの AUDIO PLAYER の Audio Source Directory に音声ファイルのあるディレクトリを指定
  • WAV Audio File に対象の音声ファイルを指定
  • 再生し、リップシンクが動いていることを確認

アニメーションを書き出す

  • 右上の A2F Data Conversion タブを選択
  • COMMON SETTINGS 欄で File Name にアニメーション名を入力する
  • BLENDSHAPE CONVERSION 欄の EXPORT AS USD SkelAnimation を押してアニメーションの書き出しをする

Unreal Engine 5 へ MetaHuman を読み込む

Unreal Engine 5 のインストール

MetaHuman の読み込み

  • 上部メニューから「ウィンドウ > コンテンツブラウザ1」と選択してコンテンツブラウザを開く
  • コンテンツブラウザパネルの「追加」ボタンを押し、「Quixel コンテンツを追加」を選択
  • Quixel Bridge パネルが開くので、右上のユーザーアイコンを押し、Epic Games アカウントでログイン
  • 左メニューの「MetaHumans > MetaHuman Presets」プリセットの MetaHuman が表示されるので好きなものを選択。今回は Ada を選択
  • Download して Add する
  • コンテンツブラウザの「コンテンツ > MetaHumans > Ada > BP_Ada」に読み込まれるので、これをビューポートにドラッグアンドドロップして配置する

リップシンクアニメーションを MetaHuman に適用

アニメーションのインポート

  • コンテンツブラウザの「MetaHuman > Ado」で右クリックし「Import Facial Animation」を選択
  • Input USD File で Audio2Face でエクスポートしたファイルを選択(エクスポート時にパスを覚えておく。今回はデフォルトで「ドキュメント > Kit > shared > capture」になっていた。)
  • Skelton に Face_Archetype_Skelton を選択
  • OK

音声のインポート

  • コンテンツブラウザの「インポート」を押し、リップシンクのアニメーション作成の際に利用した音声ファイルをインポートする

レベルシーケンスの作成

  • Unreal Engine で Premiere Pro などのようにタイムラインでオブジェクトを操作するシーケンサーを導入する
  • ビューポートパネルのカチンコのアイコンから「レベルシーケンスを追加」
  • シーケンサーパネルが追加されることを確認

シーケンサーへ音声と MetaHuman の登録

  • アウトライナーパネルから BP_Ada を選択し、追加したレベルシーケンスのシーケンサーパネルへドラッグアンドドロップする
  • シーケンサーの左側で右クリックし「オーディオトラック」を選択、「+ オーディオ」ボタンを押下し、インポートした音声ファイルを選択

シーケンサーへリップシンクアニメーションの追加

  • BP_Ada の Face の Face_ControlBoard_CtrlRig をミュートする
  • Face の「+ トラック」を押下し「アニメーション」を選択、インポートしリップシンクアニメーションを読み込む
  • シーケンサーを再生し、音声に合わせてアニメーションが動くことを確認する

Discussion