XR撮影におけるトラッキングセンサーの話
弊社が所有するRealityやDisguiseを用いたXR撮影では、カメラにトラッキングセンサーを取り付けて撮影を行います。
このトラッキングセンサーは、現実世界のカメラの位置とCG空間内の仮想カメラの動きを合わせるのに必要です。
弊社ではStype社のRedSpyを使用していますが、基本的にXR撮影でカメラに取り付けて使用するようなトラッキングセンサーは、カメラの取り付けを適当に行ってしまうと実写映像とCG空間を重ね合わせた際のずれが発生してしまいます。
カメラの座標の一致がXR撮影の合成精度を上げる重要な要素の一つになり、実写の場合、トラッキングセンサーの所得する座標は、トラッキングセンサーの測定した座標情報がそのまま実写の座標となるため、センサーの取付に関わる物体の歪みなど現実世界においてどうしても発生してしまうような角度や座標のノイズになる成分も、座標情報に合成されてしまいます。
またトラッキングセンサーの位置は、CG内の仮想カメラのピボットポイント(その物体の位置を定義するある1点)にはないため、その分の座標をメジャーなどで測定してオフセット値を追加する必要もあり、この値も人が取り付けた物体に対しての距離を測定して決定するため測定者や測定環境により変動してしまいます。
CGの場合は物理的な配置を考慮せず数値で確定した座標がそのまま基準座標となります。
この2つの座標情報が一致する前提で重ね合わせることで、実写とCGがしかるべき形で合成されますが、実写の部分で言及したノイズ成分を考慮しないとどうしても実写とCGがずれてしまいます。
そのため、トラッキングセンサーの取付は可能な限り一定の理想的な1点を定めて、そこからどれだけ距離・角度の差異をゼロもしくは一定に近づける必要があります。
弊社でもカメラにトラッキングセンサーをカメラに取り付ける際には、電子角度計やレーザー墨出し器等を用いて、ゼロまでできなくとも一定以内の誤差内で取付ができるように工夫しています。
写真の場合は、カメラの水平を定めた上でトラッキングセンサーがチルト方向にどれだけ傾いているかを確認して、可能な限り数値をゼロに近づけています。
これ以外にも、トラッキングセンサーの取り付け位置でゼロもしくは信頼性の高い一定値で固定できる軸を設定したりすることで、ノイズを含む数値を減らして数値を単純にしつつ、不安定な要素を取り除いています。
これらを行う理由は、一般的にトラッキングセンサーの座標の要素はXYZ軸の座標軸とPTRの回転軸の6軸が基本要素に当たるのですが、座標軸に対して回転軸の変化は大抵の場合同時に座標軸の値に変化を与えます。
この値の計算は三角法で行えますが、一般的には暗算や感覚で把握できるようなものではありません。
またXR撮影を高い合成精度で行うためには、可能な限りCGに対するトラッキングセンサーの座標を把握していないと、実写と合成のずれを補正する際に、どの軸をどれだけ補正すればいいかを感覚的に把握していないとならない前提もあることを覚えておいてください。
RealityEngineでNDIを利用する
弊社が所有するリアルタイム合成システム『RealityEngine』でNDIを利用することができます。
一部制限はありますがどのように活用ができるかとNDIがどのようなものかの簡単な説明をさせていただければと思います。
まず最初にNDIとはどのようなものなのか簡単に説明しますと、NewTek社が開発した映像と音声をネットワーク経由でやり取りするIP伝送方式の一種になります。
高品質の映像を低遅延で伝送することができ、NewTek社の発売するTriCasterシリーズを筆頭に様々な業務用映像機器にも採用されています。
イベントや放送のオペレーションでも用いられるようなメディアサーバーソフトウェアや配信ソフトウェアでも標準実装されていることも増えており、IP伝送方式としては業界内でも一定の地位と信頼を確立しています。
このNDIですが、RealityEngineのCGの描画に用いられるUnrealEngine向けのプラグインも提供されており、このプラグインを活用することでRealityEngineで表示するCG内にNDIで入力した映像を表示することが可能です。
RealityEngineでNDIを利用するにあたっては根本的にはRealityEngineのベースとなっているUnrealEngine内でNDIが動いているということになるので、RealityEngineで合成に用いるトラキングを伴う実写の映像ソースにはNDI経由のソースは原則使えないことだけ注意してください。
GC内の画面に表示する映像ソースとして用いるのが最も一般的な活用方法になります。
あらかじめUnrealEngine側でブループリントを仕込んでおけば複数のNDIソースの切り替えのコントロールも可能です。
実際にタイムコードを表示して遅延の具合なども見てみましたがRealityEngineからの出力で確認してみたところ実写とCGの合成処理に伴って発生する遅延からさらに目視で遅れていると感じるほどの遅延は見受けられず実際の使用にも許容できる様子でした。
NDIを用いることによって使い分けは必要に感じますが、ネットワーク経由で追加のライブメディアソースをCG側へ表示するリソースが増えるため結果的にXR撮影の演出により幅が出せそうですね。
検証を行っている段階で複数の機器を組み合わせて複数のNDIを取り扱うようなシステムを組もうとすると不意に接続を見失ってしまったりなどの事象も起きてしまうこともありました。
ここでは深く言及しませんが、実際に撮影や配信の現場で使う場合はその点へのトラブルシューティングができる知識やUnrealEngineでNDIソースの切り替えやNDIソースを再接続させるようなブループリントの工夫が必要そうです。
まだ発展途上とはいえ大変便利なプロトコルNDI、今回紹介したような他にも活用できる部分は多いのでうまく付き合っていきたいですね。
C4Dで作成したモーショングラフィックをUE4にインポートする
今回はUE4内にCinema4Dで作成したモーショングラフィックのデータをインポートして、使用出来るようにする方法をご紹介します。
まず、Mographで作成したC4Dのモーショングラフィックのシーンを用意します。
今回は画像の様な、波紋状に棒が上下していくループアニメーションを作成しました。
次にこのデータを保存するのですが、通常のデータ保存の方法とは少し違い、
File→SaveProject for Cinewareでデータを保存します。
※この方法で保存された.c4dのデータでないとUE4で動作しません
Cinema4Dでの作業は以上で完了です。UE4での作業に移ります。
今回ご紹介する方法ではUE4プラグイン「DataSmith」を使用するので、あらかじめ
UE4内でプラグインを導入しておいてください。
Datasmithの導入が出来たら、Cinema4Dで保存したデータをUE4アセットブラウザにインポートします。
インポートオプションでは「Geometry」「Animations」は確実にチェックを入れてください。その他のオプションは必要に応じてチェックを入れてください。
インポートが完了するとアセットブラウザ内にCinema4Dで保存したデータの名前のフォルダが作成されます。
作成されたシーンファイルと「Animations」の中にあるレベルシーケンスを使用するレベル内に入れる事によって、Cinema4Dで作成したモーショングラフィックがUE4内で動くようになります。
UE4内にインポートされたモーショングラフィックは画像のように細かくキーが打たれた状態になってしまっているので修正をする際はCinema4Dに戻って修正→再度今回の手順を1から踏む形になります。
UE4 Niagara Particleでテンプレートを利用する
UE4/UE5に搭載されているNiagaraでは、1からこだわりのパーティクルシステムを構築する事ができますが、いくつか用意されているテンプレートを活用すると、素早く結果を得ることが出来ます。
例として、テンプレートの「Upward Mesh Burst」を使ってみましょう。
初期の設定では「→」形のメッシュが割り当てられています。
ノードエディタ内のこの項目でエミッタの各種設定が行えます。
「レンダリング」の項目内の「メッシュレンダリング」で使用するメッシュ、適応させるマテリアルを変更できます。
初期設定は「→」に薄い灰色のマテリアルが適応されていますが、これを球体のメッシュと白の発光マテリアルに変更してみます。
… どうでしょうか。
メッシュのサイズも変更可能なので、簡単なステージの賑やかしなどに使えそうですね。
適応させるメッシュによっては花吹雪や紙吹雪などの演出も簡単にできそうです。
Unreal Engineにおけるマテリアルの優先順位
UE4またはUE5においてレベルデザインをする際、半透明(ガラスや水など)のマテリアルを使用するシーンが多々あります。
通常のマテリアルが適応されたオブジェクトの上に不透明度(Opacity)の調整がされたマテリアルが適応されたオブジェクトを配置する分には特に問題は起こらないのですが、 不透明度マテリアルが適応されたオブジェクトの上に別の不透明度マテリアルが適応されたオブジェクトを配置すると描画がおかしくなってしまう事があります。
例として画像は滝が優先的に描画されなければいけませんが、水面の方が優先されてしまっています。
こうなってしまう原因はオブジェクトの詳細にあるレンダリング設定の「Translucency Sort Priority」にあります。
この数値が高い方が優先的に描画されるようになります。
先ほどの例の画像では水面の方のTranslucency Sort Priorityの数値が高く設定されているので水面の方が優先的に描画されてしまい、滝が隠れるようになってしまっています。
このように滝のTranslucency Sort Priorityの数値をあげる事で描画が滝>水面になります。
水辺のシーンやガラス等を多く配置するシーンではよく起こるエラーですが、解決方法は簡単なので覚えておくととても便利です。
disguiseでUnreal Engineを使用する
disguiseでUnreal Engine(以下UE)を使用する場合、メインサーバーとは別にレンダリングサーバーが必要です。
https://www.disguise.one/en/products/rx-range/rx/
Reality EngineはUEを拡張したソフトウェアでしたが、disguiseの場合、ソフトウェアとそのメインサーバーはUEと何の関係もないため、UEの最新アップデートに対して比較的短期間で対応してきます(2022年7月時点でUE5に対応)
disguiseメインサーバーとレンダリングサーバーの接続には25GbE以上の高速なIPネットワークが使われ、とくに複数のレンダリングサーバーを束ねる場合にはMellanox製スイッチをハブとして100GbEのネットワークを作ります。
fabric https://www.disguise.one/en/products/fabric/
サーバー間はRenderStreamという独自のプロトコルで双方向通信し、カメラトラッキングデータとビデオストリームの両方を1組の光ファイバーで賄います。
RenderStream https://www.disguise.one/en/products/renderstream/
スタジオカメラに取り付けられたRedSpy等のカメラトラッカーの吐き出すリアルタイムデータをdisguiseメインサーバーが受信し、プロジェクト内のバーチャルカメラと連動します。
RedSpy https://stype.tv/redspy/
disguiseプロジェクトのカメラ情報はRenderStream経由でレンダリングサーバーであるrxに送られ、rx上で起動しているUEプロジェクトのレベル内バーチャルカメラを操作します。
撮影されたUEのリアルタイムCG映像は、RenderStreamを経由してメインサーバーに送信され、disguiseソフトウェアでLEDウォールまたはクロマキーヤーのマット映像としてマップされます。
UEの美しいリアルタイムCGをイベントで活用したい場合、高度なマッピング機能が使用できるdisguise社のソリューションは価値があります。
rxサーバーは、メインサーバーのようなベースバンドの外部ビデオ入力を持っていません。そのためUEレベル内のビデオテクスチャにリアルタイムで外部入力のビデオを流したい場合については、メインサーバーからRenderStream経由でrxサーバーへ映像を送信します。
先述のメインサーバーとレンダリングサーバーを分離してIPネットワークで接続するという構造にはメリットもありましたが、この場合については映像信号の経路が冗長になることに注意します。
外部ビデオについては、メインサーバーのプロジェクト上で直接マップしたほうが良いかもしれません。
Reality Engineを4.27へアップデートしました
Realityシステムを最新バージョンの4.27にアップデートしました。
またこれに伴って、ワークステーションの入れ替えも行いました。
これらのアップデートで新しくなった部分は大きく4点です。
・ベースとなるUnreal Engineのバージョンが4.27になった
・Reality Hubに対応
・ワークステーション刷新によるCPU/GPU強化(Ryzen Threadripper/RTX A6000)
・新ビデオインターフェース+ライセンスで4K60p対応
従来まではベースとなるUnreal Engineのバージョンが4.24だったため、使えるマーケットプレイスのアセットや、外部のクリエーターに対してある程度制約を強いることになっていましたが、これを解消しました。
新しいReality Hubプラットフォームに変わったことで、プログラミングのレスポンスが良くなり、幾つかの新機能が追加されました。
CPU/GPUともに強化されたことで、HDであれば1システムで最大2カメラのライブ配信に対応。
4K60pビデオインターフェースを搭載したため、1カメの場合はより高画質のプロダクションに対応できます。
br>新しくなったシステムとともに、我々スタッフもより価値のある演出をご提供できるよう研鑽を続けておりますので、XRライブ/コンテンツ制作にご興味がありましたら是非お問い合わせください。