アールテクニカ地下ガレージ

アールテクニカ株式会社の製品開発・研究開発・日々の活動です

VRWorks 360 Video SDK in Windows

Author

羽田

「VRWorks 360 Video SDK」とは nVidia からリリースされているVRコンテンツ開発者向け支援ライブラリで、360度撮影できるVRカメラからの映像をスティッチ(つなぎ合わせて)1つにまとめた映像を生成してくれます。
実際にVRカメラを使ってみたレポートです。

開発環境について

「VRWorks 360 Video SDK」 は以下のURLから入手可能してください。
nVidia の開発者登録が必要です。
VRWorks - 360 Video | NVIDIA Developer

「VRWorks 360 Video SDK」を試すには開発環境のスペックがある程度求められます。
ハードウェアは数年前の古いGPUで動きそうなスペックが書いてありますが、オフライン作業で非ステレオかつ解像度を1920x1080くらいまでなら一応動くよ、といったところだと思います。下の recommended spec for 360 stitching がおススメというより必須な動作環境です。

私が今回試せたのは、GeForce GTX 1080Ti で 2.7k + Mono Live で30fpsの出力が出来るところまででした。(VRカメラ側の制約でstereoは試せなかった)
Stereo Live で 4k の出力が欲しいとなると Dual GeForce GTX 1080Ti で出せているのか興味はあります。
実際にはカメラからの映像入力が何本あるか?つまり映像のデコードを高解像度で何本走らせて、出力映像の解像度が4kという事なので、ピンキリで様々な条件が発生します。

f:id:artteknika_hada:20180731115441j:plain

ソフトウェアはVS2017の最新版に、CUDA9.1をインストールして動かなかった現象が発生しました。
詳しくは別途まとめた記事をご覧ください。

SDKについて

SDKにはいくつかのサンプルプログラムが含まれています。以下概要。

  • nvcalib_sample: rig の設定・画像を元にして、キャリブレーションされた xmlを出力します。
  • nvsf_sample: サウンドサンプル
  • nvss_sample: 低レベルAPIサンプル。複数の画像からスティッチされた画像を生成。
  • nvstitch_sample: 高レベルAPIサンプル。複数のムービーからスティッチされたムービーを生成。

nvstitch_sample で全体のシステムを確認できます。他は必要があれば確認すればよいと思います。
入力されたムービーの各フレームがデコードされ準備ができたらスティッチされ、nvstitchStartStitcher でコールバックを登録すると生成された1フレームの画像が取得できます。サンプルでは最終的にムービーが生成が終了するまで実行されてしまうので、コールバックで途中の画像を取得してファイルに出力して確認しながら感触をつかむと良いと思いました。

VRカメラからの映像のスティッチ

nvstitch_sample では既にあるムービーをオフラインでスティッチされたムービーを生成していましたが、VRカメラからの映像をリアルタイムでスティッチして出力するにはどうすれば良いでしょうか?

VRカメラによって取得できる映像に違いがあるかもしれませんが、私の環境では各カメラ毎に別ストリームで1つの魚眼レンズの映像が取得できていました。各ストリームは同一フレームが同時に取得できるのではなく、非同期で送られてきました。その為、受信した各フレームをアプリケーションで保持し、全カメラの同一フレームが準備できたところで、nvstitchFeedStitcherVideo を送信しました。送信したフレームが処理されるとサンプルと同じように nvstitchStartStitcher で登録したコールバックが取得できました。
これで速度が十分に出せれば、リアルタイムのスティッチ処理が可能です。

まとめ

「VRWorks 360 Video SDK」を使ってみた記事が日本はほぼ無いようで苦労しました。
リアルタイムのスティッチ処理をやろうとしている方の取っ掛かりになれば幸いです。

スポンサーリンク