技術レビュー

【UE5】MetaHumanを使ってバーチャルスタジオを作る

 UnrealEngine を使って以前VR/ARをやってみてその後 MetaHuman を使って VTuber 的なことをした後に MetaHuman でバーチャルスタジオを作るのがいいのでは?と考えるのは自然な流れで今回無謀にもそれを作ってみました。バーチャルスタジオとなるといろいろとやらなければならないことが多いのですが基本は一人で操作できるようなシステムにしています。(というか一人でやっているのでしょうがないんですが、、)まずは制作したバーチャルスタジオ映像をご覧ください。UnrealEngineはバージョン5.0.3を使用しています。

バーチャルスタジオの構成

 バーチャルなスタジオに限らず一般的な制作スタジオは映像、静止画、音声など様々なメディアをミックスして番組を作っていきます。それらをUnrealEngineのどの機能を使って落とし込むかが悩みどころでした。UnrealEngineは本来ゲームを作るためのものであってCGが主で既存の映像や静止画の扱いはオプションみたいな関係性です。その辺りはUnrealEngineの機能を応用して機能を実装していったという感じです。
 バーチャルスタジオの構成は映像内で述べている通り3DCG内で映像や静止画を取り込んで表示させ仮想カメラでキャプチャするようにしてタイトルやテロップなどDSK(Down Stream Keyer)機能はゲーム内で得点やステータス表示などを受け持つUMG(Unreal Motion Graphics UI)を利用しています。出来上がった映像はそのままリアルタイムに出力(映像/音声出力、ストリーミング出力、ファイル記録)ができるようになっています。
 映像出力は放送用IPであるNewtekNDI®を基本としています。ソフトウェアだけで完結するので別途ハードウェアを用意することなくネットワークだけで済みます。もちろんAJAやBMDのキャプチャーカードを介して出力も可能です。ST-2110もやってみたいのですが価格がネックです、、
 映像でも取り上げていますがRTMPやSRT(パスフレーズ対応)でのストリーミング出力やMP4の動画ファイルで保存することもできます。Youtubeに上げた映像はこの機能を使って録画したファイルになります。NDI出力しながらファイル記録、ストリーミング出力が同時に行えます。

コントローラーのインターフェースや音声の処理

 このバーチャルスタジオは一人で出演しながらシステムを操作できることを目指して設計しています。シーンチェンジをタブレット、設定など細かい操作はキーボード/マウスで操作しています。タブレットは命令さえ伝わればいいので高価なものではなくAmazonタブレット(FireHD7)程度で十分です。とはいうものの実際に操作してみて押し間違いもあったりとかするので専用の物理的なキーがあるコントローラーがほしいところです。カメラ切り替えやテロップ出しなど確実に押したとわかるボタン等で操作したほうが安心感があります。USB接続の汎用コントローラー、ボタンもありますし、DMXコントローラーもUnrealEngineの操作で使われていますので今後はこういったインターフェースを採用していこうかと思ってます。

VRでよく使うSTEAM DECK
MIDIパッドでもいけそう

 以前MetaHuman を使ってOBSやTeamsなどに送ってVTuber的なことをやった時にはマイク音声をそちら側のPCのほうに入れていましたが、今回は録画やストリーミングの機能を使う関係上UnrealEngineのPCに音声を直接入れて処理しています。LiveLinkFace(顔のキャプチャ機能)からくるデータとの時間差ズレはソフトウェア的に音声を遅延させてリップシンクが合うようにしています。

外部からの各種データ取り込み

 既存のメディアだけでなくHTTP通信を使ったデータ取り込みを行なっています。デモ映像では気象庁のサーバーにアクセスして天気情報を取り込んでテロップにお天気アイコンを動的に変えて表示させるお天気ティッカー機能をつけています。以前はRestAPIを使ってカメラコントロールをしていたのですが同じようにWebAPIを使ってJSONを取得しその中から必要な情報を取り出して利用しています。こういった情報は事前に手動で仕込んでおくものではなく自動で行わせたほうが手間がかかりませんし情報自体に間違いがありません。お天気以外にもヘッドラインニュースとか株価情報などをとってきてバーチャルな世界に現実の情報を盛り込むことによってリアルさが増すと思います。


 気象庁へのアクセスは正式にAPIと謳っているわけではないのですが利用規約に沿えば自由に使えるということで2年前あたりから人気のAPI?になっているようです。気象APIには他にOpenWeatherMapというものがあって最初はこちらでテストしていたのですが予想天気が微妙に合っていないのと天気アイコンが日本人にとって馴染みがないものだったので気象庁からデータを引っ張ってくることにしました。ただしこちらはお天気アイコンがSVG形式のためUnrealEngineでは直接使えないためあらかじめアイコンを用意しておきJSONから抜き出せるお天気コードをもとにマッチングをさせています。このお天気コードは100種類以上あって「晴れ山沿い雷雨」とか「晴れ山沿い雪」とか細かすぎるものは同じ「晴れ」としました。それでも30種類くらいあります。取得したJSONには結構な情報が含まれていて気温や風力はもちろん天気概要などがあります。「くもり昼過ぎから晴れ、所により明け方まで雨。北の風やや強く海上では北の風強く。波の高さ4メートルのち3メートル」という感じで取得できていて将来的にはキャラクターに喋らせることも考えています。

お天気コードの処理が酷い、、

キャラクターのノンリニア動作

 途中お天気お姉さんが出てきますが動画の説明の通り顔の表情は数日前に記録しておいたデータを使っています。映像自体はリアルタイムに時間に沿って動いているわけですが部分的に過去に撮ったデータを現在のシチュエーションで使うということをしています。こうすることでライブ配信をする時でも出演者全員その場にいなくても対処ができるということになります。出演者のスケジュールが合わない時や一人で何役かこなそうとする時には便利な機能です。UnrealEngine 5.1からはあらかじめiPhoneで撮ったLiveLinkFaceデータをCSVファイルとして書き出してそれを取り込んで使用するといったことができます。今回はUnrealEngineへ直接記録していましたが今後は完全にオフライン、モバイルでフェイスキャプチャが出来ることになります。もっとも首から下はいつ作ったんだかわからないアニメーションデータで動かしているので以前からできていると言われればそうなのですが顔の表情に対応したということが重要な所です。

やっててたまに虚しくなることもあります

スタジオのアップデート

 今回とりあえずMetaHuman使ってバーチャルスタジオを作ってみたわけですが、これで終わりということではなく使ってみて改善したいところもたくさんあるので徐々にアップデートしていこうかと思います。

 ・スタジオの最適化
 本業がスタジオ設計なので今回のバーチャルスタジオを作っている時にあれも要るな〜、これも要るな〜と何も考えずコードを追加していっただけなので最適化とはほど遠い状態です。もう少し動きを滑らかにするようにするつもりです。MetaHumanを使うこと自体が重い処理なのですがいろいろと設定を変更して試したいと思ってます。
 ・ハードを更新するかどうか?
 正直言うとWindows11にギリアップグレードできない世代のPCで動かしています。UnrealEngineはGPUの性能がキモなのでそれだけは高価なもの(NVIDIA RTX3080Ti)にしていますが全体のバランスが偏っているので更新したいところです。GPUのVRAMも上限近くまで行くことがあります。
 ・新たな機能の追加
 アイデアだけはあるので全体の動作に支障がない限り新しい機能を追加していきます。またバーチャルスタジオ以外にも様々なメーカーの機器と組み合わせて使いやすくしたり他の用途に使えるかどうかも探っていきます。
 ・もう少しちゃんと口を開ける
 普段そんなに口を開けて喋っていないので意識して動かさないとCGの口がモニョモニョとした動きになってしまいます。これは演技力を上げないとまずいです。鏡見て練習しておきます、、、

関連製品
M-Design Virtual Studio

Link


 関連Blog
 【UE5】アニメ調3Dアバターを使ってバーチャルスタジオ 【バ美肉】

 【UE5】プアマンズジェスチャーコントローラーを作る

 【UE5】トラッカーとレンズコントローラーを使ってバーチャルカメラを操作する

 【UE5】MetaHumanを使ってVTuber、Zoom、Teamsをやってみる

 Newtek NDI®とUnreal EngineでAR/VR を作ってみた

 関連技術
 UnrealEngine MetaHuman

 Newtek NDI