読者です 読者をやめる 読者になる 読者になる

Tutti Lab

元シリコンバレー在住のおっさん技術者、モバイルVRアプリ開発に挑戦中

Maker Faire Tokyoに出展

8/6-7、東京ビックサイトにて開催されたMaker Faire TokyoにVR撮影システムを出展しました。この準備に多忙だったため、前回のブログからかなり期間が開いてしまいましたが。。
出展内容は、Maker Faire Bay Areaに出展した内容と基本同じですが、以下の点で変更・パワーアップを加えました。

  1. カメラをTheta S→スマホ+アタッチメント型魚眼レンズに変更
  2. 撮影映像の解像度・フレームレートを1280x1440・15fps→1920x2160・60fpsに変更
  3. 背景CGをリアルタイムレンダリング→プリレンダリングに変更

です。
1)は、Theta Sは素晴らしい360度カメラなのですが、本システムの用途上360度は不要(前方140〜150度程度で十分)であること、また将来的にたくさんの人に本システムを利用してもらいたいと考えており、ユーザがお金をかけずにVR撮影システムを作れる(すでに所有のスマホ+数千円のアタッチメント型魚眼レンズで撮影出来る)ようにすべく、泣く泣くTheta Sの利用を諦めました。

2)については、前回Maker Faire Bay Area時は開発が間に合わず、HDMIではなくUSB 2.0でカメラ-PCを接続、このためカメラからの入力画像の1280x720・15fpsでした。このため、出来上がったVR映像はドットが目立ち・若干パラパラマンガ的な感じになっていましたが、今回はHDMIで1920x1080・60fpsで左右眼それぞれの映像をPCへ入力し、1920x2160(左右360度パノラマ映像を縦に積んだ形式)にて出力するようにしました。

3)については、前回はUnityシーン内に2つのカメラ(右目・左目用)を配置して、リアルタイムで左右眼用の360度パノラマを生成・Theta Sで撮影した左右眼映像とリアルタイム重畳をしましたが、私のPC(Oculus PCなのでかなりハイスペックのはずですが)では、12-15fpsでのエンコードが限界でした(私のffmpegの使い方がまずかった、ということもありますが)。またカメラ二つでは前方百数十度程度には立体感がつくものの、それ以外は立体感なし・遠近感が逆転(後ろ方向)となるため、360度立体視はできていませんでした。そこで今回はリアルタイムレンダリングは諦め、プリレンダリングの360度立体視映像を事前に生成しておき、左右カメラ映像をキャプチャー後、プリレンダリングのCG映像と合成する、という形式にしました。

今回から数度にわたり、本技術について紹介をしていきたいと思います。

【第1回】VR撮影システムのハードウェア構成(今回)
【第2回】360度立体視CG映像を作る
【第3回】カメラ入力映像と重畳しエンコードする

システム構成

本システムのハードウェア構成は以下の通りです。
f:id:tuti107:20160808095133p:plain
まずはiPhoneSEを2台用意、それぞれの背面カメラに魚眼レンズ(Gizcam)を取り付けます。
f:id:tuti107:20160808100158j:plain
なお、うまく背面カメラの上にレンズを取り付けないと、映像がにじむ・暗くなる(何も見えない)ため、レンズ中央に背面カメラがくるよう、うまく位置調整をする必要があります。コツとしては、レンズの中央が完全に透けて向こう側が見えるため、背面カメラが中央にくるよう位置調整をすればオッケーです。知っている方にとっては当たり前の話なのでしょうが、私は最初これが分からず、撮影映像を見ながらカンで上下左右レンズを動かして調整していました。
次に、それぞれにiPhoneに、Lightning - Digital AVアダプタをつなげます。iPhoneの純正アクセサリは高いです。。
次に、Lightning - Digital AVアダプタとHDMIケーブルを接続、さらにHDMIケーブルのもう一端にFEBON 198を接続します。
f:id:tuti107:20160808101159j:plain
FEBON 198は、Theta SをPCにつなぐ際の必須アイテム(?)で、実例はこちら等で取り上げられております。
HDMI映像出力をUSB 3.0のUVCへ60fps・低レイテンシで変換してくれるスグレモノです。値段は¥19,800と結構高価ですが、HDMI->USB3.0変換器としては破格の安さです。
最後に、USBケーブルにてFEBON 198をPCのUSB3.0ポートにつなぎます。これでiPhone画面の表示されている内容が1920x1080 60fpsの高画質で、UVCとしてPC側で利用可能となります。
UVCなので、UnityではWebCamTextureにて簡単に本映像をテクスチャとして貼り付け・利用可能です(WebCamTextureについてはこちらをご参照ください)。

余談ですが、当初はiPhoneではなくNexus 5を使用する予定でした。上記Lightning - Digital AVアダプタの代わりにSlimport→HDMI変換ケーブルでNexus 5とつなごうと色々頑張ってみたのですが、FEBON 198が信号をうまく認識できず結局諦めました(FEBON 198の代理店である緋斐B級技研さんには親身に相談に乗っていただけました。ありがとうございました!)。

iPhone側カメラ出力アプリ

iPhone側では、全画面カメラ映像を出力するアプリを動かします。このアプリは非常にシンプルで、Canvasに全画面のPanelを、そしてPanelいっぱいの大きさのRawImageを配置し、こちらでご紹介したWebCamControllerを貼り付けだだけのシンプルなものです。プリインのカメラアプリだとメニュー等、色々邪魔なものが表示されてしまうため、このようなアプリを用意しました。
f:id:tuti107:20160808103219p:plain

次回は

これで、左右両目用のカメラ映像を二台のiPhoneからUVC形式でPCへ入力することが可能となりました。
次回は、本映像から「360度立体視パノラマ映像との合成」映像を生成する方法について書きたいと思います。