🎬
Unreal Engine 5 + Omniverse Audio2Face で音声からリップシンクアニメーションを作成して動かす
はじめに
Unreal Engine を使って映像作品を作ってみたいと思い、リップシンクアニメーションを作る方法を調べてまとめました。
筆者のレベルは Unity ちょっと使ったことのある Unreal Engine 初心者なので、ご指摘歓迎です。
動作環境
Windows 11
Omniverse Audio2Face 2022.1.2
Unreal Engine 5.1.0
Omniverse Audio2Face のインストール
Omniverse Launcher のインストール
下記ページの「Get Started」から個人情報を入力してダウンロードしてインストールする。
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://www.youtube.com/watch?v=jrZ71xtaJ5E
音声の用意
音声読み上げサービスを使って音声を用意した。
ダウンロードできたファイルは mp3 だったので、
を使って 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 のインストール
- 公式ドキュメントに従ってインストールし、起動する
- ゲーム > Blank を選択、任意のプロジェクト名を入力して「作成」
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