本ブログでは バーチャルプロダクション において ゲームエンジンとして幅広く使用されている Unity や Unreal Engine と連携してご活用いただける IPベース伝送ソリューションをご紹介します
目次
① ゲームエンジン連携デモの構成
② Winマシン内の ST 2110 ストリーム受信処理
③ ゲームエンジンエディター内のプロジェクト再生
④ Winマシン内の ST 2110 ストリーム送信処理
⑤ ゲームエンジンプロジェクトの ST 2110 ストリーム送信
4. 最後に
・Youtube動画
・問い合わせ先
バーチャルプロダクションとは?
バーチャルプロダクションという言葉を聞いたことがありますか?これは映像制作において、バーチャル空間を活用したリアルタイム映像制作を行う新たなプロダクションワークフローの総称です。バーチャルプロダクションにはさまざまな種類がありますが、その一つがLEDディスプレイベースのバーチャルプロダクションです。LEDディスプレイベースのバーチャルプロダクションとは、LEDディスプレイで構成された壁や天井・床を活用し、リアルタイムで(インカメラで)バーチャル世界と現実世界とを合成する技術です。この技術はLEDディスプレイに投影される 3DCG の背景がカメラの位置や角度に合わせてリアルタイムに変化することで、リアルと自然に調和することが可能です。
バーチャルプロダクションの進化は Unity や Unreal Engine のような従来の3Dゲーム開発に用いられるゲームエンジンの高品質グラフィックスやリアルタイム性能を応用している点が挙げられます。ゲームエンジンには様々なアセットやエフェクトを利用できるほか、自由にカスタマイズや拡張することができます。これにより、バーチャルプロダクションにおいて、リアリティや表現力を高めることができるわけです。
放送分野でもこの技術を活用することで、ロケーション選定の自由度や編集作業の効率化などがあがり、コストと時間の削減や映像表現の幅が広がります。本ブログでは Unity や Unreal Engine において、ゲームエンジンと弊社SDKを連携させることで SMPTE ST 2110 などの映像伝送規格に対応できるノウハウについてご紹介させていただきます。
SMPTE ST 2110 準拠 M2S SDK
SMPTE ST 2110 に準拠した映像伝送を実現するためには、メディアデータをSMPTE ST 2110 のフォーマットに変換し、IPパケットに格納して送受信する機能が必要です。この機能を実装するための一つの方法が、Macnica Media Streaming (M2S) と呼ばれるソフトウェア開発キット(SDK)です。M2S SDK は、SMPTE ST 2110 の規格に基づいて、メディアデータの変換やパケット化、同期やトラフィック制御などの機能をソフトウェアで実現します。M2S SDK を利用するメリットは、以下のようなものがあります
・汎用サーバーでの映像伝送:M2S SDK は、汎用のサーバー機器やネットワークカードで動作します。汎用サーバーでの映像伝送により、クラウドやエッジコンピューティングなどの新しい技術との連携も容易になります。
・オープンソースとの連携:M2S SDK は、GStreamer や、OBS Studio などのオープンソースの映像処理ソフトウェアとの連携が容易です。映像の入出力や表示、圧縮や編集などの機能を自由に組み合わせることができます。
・カスタマイズや拡張:M2S SDK はC言語で記述されたライブラリとして提供されるため、カスタマイズや拡張が容易です。SMPTE ST 2110 の規格には含まれない機能や、新たに追加される規格に対応することが可能です。
ゲームエンジンとM2S SDKの連携について
M2S SDK は Unity や Unreal Engine といったゲームエンジンとの連携も可能です。以降は M2S SDK とゲームエンジンをインストールした Windowsマシンにおいて、受信した SMPTE ST 2110 ストリームをゲームエンジン のアセットに表示するデモをご紹介します。
① ゲームエンジン連携デモの構成

上の図はゲームエンジン連携デモの構成です。SDI IP Gateway や Video Player が Windowsマシン に対して ST 2110 ストリーム送信しています。Windowsマシン はストリームを受信して、マシン内部のゲームエンジン( 例 Unity, Unreal Engine )で処理をします。処理したゲームエンジンのプロジェクトは出力して ST 2110 Analyzer で受信するという流れを示しています。
② Winマシンの ST 2110 レシーバー内部処理

上の図は Windowsマシン 内部における GStreamer パイプラインを示してます。GStreamer は汎用のマルチメディアフレームワークです。m2svideosink は M2S SDK に用意されたGStreamer プラグイン、 win32ipcvideosink / win32ipcvideosrc は GStreamer の標準プラグインです。Windowsマシンは受信した ST 2110 ストリームからフレームデータを抽出、それを API を介して上位のビデオメモリ( raw video memory )にライトします。一方 ゲームエンジンからはそのビデオメモリに win32ipcvideosrc を介してリードすることで最終的にアセット内のオブジェクトに表示します。
③ ゲームエンジンエディター内のプロジェクト再生 ( ST 2110 ストリーム受信 )

ゲームエンジンエディターにてプロジェクトを再生した時のスクリーンショットです。アセットに設置されたオブジェクト(仮想スクリーン)に受信ストリームが表示されているのが確認できます。
④ Winマシンの ST 2110 トランスミッター内部処理

Windowsマシン内部で ST 2110 ストリームを送信するまでの GStreamer パイプラインを示します。ゲームエンジンは GStreamer 標準プラグイン win32ipcvideosink を介してフレームデータをビデオメモリ(raw video memory)にライトします。m2svideosink は M2S SDK に用意された GStreamer プラグイン、一方 win32ipcvideosink / win32ipcvideosrc は GStreamer の標準プラグインです。Windowsマシンは受信した ST 2110 ストリームからフレームデータを抽出、それを API を介して上位のビデオメモリ(raw video memory)にライトします。一方ゲームエンジンからはそのビデオメモリに win32ipcvideosrc を介してリードすることで最終的にアセット内のオブジェクトに表示します。
⑤ ゲームエンジンプロジェクトの ST 2110 ストリーム送信

上の画像はゲームエンジンが ST 2110 ストリームとして送信したプロジェクトの受信先となる ST 2110 Analyzer のモニター画面をキャプチャーしたものです。ゲームエンジンから出力したプロジェクトが ST 2110 アナライザー上に表示されているのが確認できます。
最後に
・Youtube動画
以上の構成をとることでゲームエンジンと連携することができます。本ブログでは詳細設定の説明は割愛いたしましたが、より詳しい内容を御所望の方向けに Youtube 動画を用意しました。Unity 及び Unreal Engine で実動作している様子を確認したい方にもおすすめします。
・問い合わせ先
本ブログを通じて弊社のIP伝送ソリューションであるM2S SDKにご興味をお持ちいただけましたら、製品紹介ページも併せてご参照ください。下記のリンクボタンからお問い合わせいただくことも可能です。尚、お問い合わせ時の記入事項であるカテゴリと製品名は下記をお選びください。
・カテゴリ選択:半導体向けIP/ソフトウェア/セキュリティサービス
・対象の製品名:M2S SDK