技術レビュー

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

 UnrealEngineのMetaHumanを使ったバーチャルスタジオを作っていますが一人で操作するのが前提だったのでカメラは固定にして手動で場所を切り替える(スイッチング)というやり方をしてきました。もちろん決まったカメラモーションをする時にはシーケンサー機能を使っているのですが人間欲は出てくるものでリアルタイムに実物のカメラっぽく動かしたい、レンズのコントロールなんかしてみたいという衝動に駆られました。今回はその機能を作ってみたのでご紹介していきます。UEはバージョン5.1.1を使用しています。以前より安定感が増してます。

実際にリアルタイムでバーチャルカメラを操作してみる

 今回使った技術は以前使ったものに手を加えたものです。トラッカーにはVIVE Tracker 3.0 を使用しBase Stationとの距離や傾き情報をUnrealEngineに送ってカメラをリアルタイムに動かすようにしています。映像でも触れている通りフリーカメラとしての使用の他、セットアップ時に固定カメラの位置決めにも使えるようにしています。固定カメラは数値で設定していますが感覚的にカメラはこの辺、画角はこんな感じと実際のカメラのような使い方ができるようにしています。トラッカーとベースステーションの実際の距離は1mも無いのですがそれではキャラクターの胸で画角がいっぱいになってしまうためオフセットで3mくらい離してあります。この数値は自由に変えられます。舞台がアリーナや大講堂だったりする場合に本当にその広さの空間を用意することなくオフセット値を変えるだけで遠方から撮るカメラのシュミレートができます。バーチャルカメラのイメージセンササイズやレンズの仕様も変えられるので実際の撮影前のテストにも使えそうです。


 レンズコントローラーは実物のコントローラーをUnrealEngineの仮想カメラで使えるようにしました。RS232 シリアル通信でUnrealEngineに対してつまみやボタンの情報を送っています。コントローラーは内部コードを書き換える必要がありますが、そもそも自分で設計したデバイスなので自由にコード変更が出来、追加したコードも10行ほどで済んでいます。UnrealEngineへのプロトコルは独自なものというか通信ができればいいので単純なものとしています。ズームがダイヤル式でなくレバー式(正式にはシーソー型ポテンショメータ)なので若干UnrealEngine側の処理が面倒くさかったのですがアクセラレーションも効いていい感じです。(64段階のスピードコントロール)今回はとりあえず10倍の仮想ズームレンズとしましたがさらに高倍率になるともう少しハイビットのA/Dコンバーターをかました方が良さそうです。市販のレンズコントローラーだとVISCAやPelcoプロトコルに対応したものが使えそうですがUE側でいろいろとコードを用意しておく必要があります。


 今回からはGUIを用意して操作しやすくしてみました。説明の通りこれまでは映像や音声のモニター部分すらなく外部アプリ( Netek NDI Monitor)に頼っていたのですがトラッカーやレンズコントローラーを使うためどうしてもタイムラグのないモニタリングが必要となりました。キーボード操作も機能が増えてくると割り当てる箇所も足りなくなるため映像スイッチャーぽくボタンを配置しています。正直今回の主題よりもこっちの方が大変でした、、GUIのデザインは機能追加に伴いいろいろと改変していく予定です。メインの映像はこのバーチャルスタジオに搭載させたレコーダー機能を使っています。こちらもGUIから操作ができるようになっています。

 

関連製品
M-Design Virtual Studio

Link


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

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

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

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

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

 関連技術
 UnrealEngine MetaHuman

 Newtek NDI