Tutti Lab

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

メイカーフェアー終了しました!

5月20日~22日、シリコンバレーのサンマテオにて開催されたメイカーフェアーに、VRシステムを出展しました。
本システム、THETA Sを2機使用して左右両眼用の360度立体視動画を撮影、本撮影映像のバックに「月面」「ハロウィーン風」等の背景を重畳して「オモシロVR映像」を生成、また作ったその場でGoogle Cardboardを利用して視聴できる、というものです。三日間でなんと214名の方(主にキッズ)が撮影し、その3-4倍の方に視聴して頂きました!お客様が休む間もなくひっきりなしに訪れる状況、ほんとうに疲れましたが、たくさんの方に楽しんでいただけて本当によかったです。
f:id:tuti107:20160524120838j:plain
今日から通常モードということで、まずは本開発技術について、ブログで書いていこうかと思います。

SVVRで見つけた興味深い技術たち

現在、5月21日に開催のメイカーフェアーに向けて睡眠時間を削りながら開発の毎日です。このような状況なので、開発ブログは少しお休みして、先月末に開催されたSVVRで見つけた興味深い技術をご紹介したいと思います。

VORTX

VORTXは、WhirlwindVRという会社が開発しているデバイスです。このデバイスは、VRコンテンツと連動して、強い・弱い/温風・冷風を発生させます。デモでは、自軍の城へ攻め込んでくるモンスターを撃退するというCGムービーに合わせて、例えばドラゴンが炎を吐いたら温風が、近くで爆発が起きたら強い風がくる、という感じで、風を利用してVRの臨場感を高めていました。端末がタワーPC並にでかく、ご家庭では一体どこに設置したものやらという感じではありますが、面白い端末だと思いました。
f:id:tuti107:20160513141243j:plain
なお数ヶ月中にSDKを公開する、とのことでした。

Cardboardで360度立体視動画ビューワーを作る(3)

はじめに

前回は、左右両眼用のThetaSのビデオ(RICOH THETA UVC BlendeによりEquirectangular形式に変換されたもの)を縦につなぎあわせ、OBSでHLS形式のライブストリーミングを生成、nginxで配信、Cardboard側で閲覧する、というシステムを作りました。しかし、一応動いたものの、遅延が激しく・フレームレートも出ない、との状況であり、実用には程遠い状況です。
今回は「リアルタイム性」を重視し、一度Cardboardを離れて、Oculus Riftで、左右両眼用ThetaSを利用した360度立体視を行ってみます。

UnityをOculus Riftに対応させる

現状Oculus Riftに対応しているUnityは、バージョン5.3.4p1及び、5.4βです。今回は5.3.4p1をインストールしました。5.3.4p1はこちらから入手できます。
次に、Oculus開発者サイトより、OVRPlugin for Unity 5をダウンロードします。ダウンロード後、C:\Program Files\Unity\Editor\Data\VR\oculusの内容を全削除した後、OVRPlugin_Unity5_1.3.0.zipを解凍したもので置き換えます。

Theta SのFish Eye形式動画をEquirectanguler形式に変換

前回記載した通り、RICOH THETA UVC Blenderを利用すれば、Equirectanguler形式で直接動画を取得できるため、変換処理等は不要となります。ところが、当方環境の問題なのか、Windows版の制限なのか、Theta Sを2台接続(両方ともTHETA UVC Registerで登録)した場合、いずれか一方のみのRICOH THETA UVC Blenderしか利用できません。再接続、再登録を何度か試みましたがうまくいかず。このため、Theta Shader Packを利用して、Unity側にて形式変換をすることにしました。
上記サイトよりThetaShaderPack_20150926.zipをダウンロード・展開し、適当なフォルダへ格納してください。次に、Assetsを右クリック→Import Package→Custom Packageを選び、ここで展開したThetaShaderPack.unitypackageをインポートします。
次にWebカメラの映像をテクスチャとして利用すべく、簡単なスクリプトを用意します(こちらを参考にしました)。

gistc83f1ae3dfa5c5c3f19f7ac346e3d48c
合わせて前回ご紹介したsphere100.fbxを用意します。Assets内の適当なフォルダに放り込んだ上で、2つこれをHierarchyへドラッグ&ドロップ、それぞれの名前をSphere100_L, Sphere100_Rとします。
インスペクタにて、それぞれ以下のように設定します。なお、camIndexはそれぞれ、左右用ThetaのFisheye形式UVCを指定してください(当方の環境では0及び1でした)。
f:id:tuti107:20160504123929p:plainf:id:tuti107:20160504123940p:plain
マテリアルには、上記インポートしたTheta Shader Packに含まれるThetaRealtimeEquirectanguler (Both).matを指定ください。
また、LayerをぞれぞれLEFT、RIGHTとしてください。
次に、左右両眼用のカメラを作成し、それぞれSphere100_L, Sphere100_Rのみ見えるよう設定します。Hierarchyにて右クリック→Cameraを二度実施し、作成したカメラをそれぞれCameraL,CameraRとしてください。CameraLは左目用なので、Culling MaskからRIGHTを外してください。またTarget EyeはLeftとしてください。同様に、CameraRはCulling MaskからLEFTを外し、Target EyeをRightとしてください。
最後に、File→Build Setting→Player Setting→Other Settingにて、Virtual Reality Supportedをオンとします。OculusはUnityにてネイティブでサポートされているため、CardboardのときのようなSDKのインポートや各種設定は不要、これだけでOculusで利用可能となります。
f:id:tuti107:20160504131534p:plain

まとめ

今回はOculusを使って、左右両眼用Thetaの入力画像をUnityで形式変換し表示するアプリを作成しました。またVirtual Reality Supportedをオンとして、本アプリをVR対応としました。前回のように、ストリーミング変換やライブ配信をやっていないこともあり、Thetaで撮影した映像をリアルタイムで楽しむことが可能です。またCardboardと比較して高画質・首の動きにすいつくようなヘッドポジショニングであり、非常に心地よいです。
ちなみに、詳細説明は省略しますが、前回同様Equirectanguler形式の左右映像を縦に並べ、OBSでエンコードし、nginxへアップロード・配信するアプリも作成してみました。前回のMACの場合のようにコマ落ちは発生しませんでした(NVidiaのH.264エンコーダのおかげかと思います。さすがGeForce970)。ただし相変わらず20秒程度の遅延は発生します。リアルタイムは難しいようです。

Oculusのインストールにはまる

待ちに待ったOculusがようやくきました。合わせて購入したOculusPC(ASUS G11CD)、起動するとOculus Downloadのアイコンが。
f:id:tuti107:20160501141241p:plain
Oculus Readyの認証をとっているPCということもあり、コンシュマー向け製品として簡単にインストールできるようになっているのだろう、とこの段階では思っておりました。まさかセットアップに6時間以上かかることになるとは。

Restart Computer

上記のアイコンからインストール用のアプリをダウンロード、すると800MB程度のデータのダウンロードが始まります。そして、ダウンロードが完了すると、以下が表示されます。
f:id:tuti107:20160501141521p:plain
エラーが発生した、という事実しかわかりません。とにかくリブートしろとのことなので、Windowsを再起動、その後再挑戦。また800MBのデータダウンロードがはじまります(キャッシュしてくれればいいのに)。そして、上記と同じエラーが表示されます。
何度か再起動→再挑戦を繰り返すも、結果は変わらず。インターネットでの情報さがしを始めました。
まだ発売して間もないこともあり、あまり情報がない状況なのですが、このページを発見。まずは、GeForceのドライバを最新にせよ、と。忘れてました。。ドライバを更新し、再挑戦。しかし同じエラー。
先ほどのページを読み進めると、
f:id:tuti107:20160501142643p:plain
レジストリをいじれ、とのこと。これコンシュマー用ですよね?
しかし上記の説明の通りにレジストリのプロパティーを表示しても「Reorder」というボタンが発見できません。だめならレジストリーキーを消してみて、との記述もあるため、削除して再挑戦を試みたものの、結果は同じ。毎回800MBのデータダウンロードが入るため、ここまでですでに4時間経過、もう諦めようかと考えていたところで重要な情報が。上記のページ内から参照されているこちらに、エラーログが「%LOCALAPPDATA%\Oculus\OculusSetup.log」に保存されており、そのエラー次第でいろいろ対策が必要な旨の記載がありました。さっそくログを調べてみると私の場合は
C:\Program Files\Oculus\Support\oculus-librarian\OVRLibrarian.exe exited with code 7 (failure).
でした。残念ならが本ページ内には対策の記載なし。そこで、上記エラーをキーワードとして調べてみると、こちらのページが見つかりました。なにやら、ウィンドウズの再インストールで治った等の不安を掻き立てる書き込みがある中、ウィルススキャンソフトをアンインストールすると解決した、との記載が。そこで、マカフィーセキュリティセンターをアンインストールし、再挑戦。ようやく問題解決!その後はすんなりインストールができました!

絶縁シールが引き抜けない

これでようやく、と思っていたところで最後の罠が。ソフトのインストール後、ハードウェアの設定を順次行うのですが、
f:id:tuti107:20160501145225j:plain
このコントローラの電池の絶縁シールが異様に固く、ペンチで引っ張っても引き抜けず、しまいには破けてしまい引き抜きが不可能になってしまいました。仕方なく絶縁シールが出ている口の部分にマイナスドライバーを入れて背面をこじ開けて、絶縁シールを引き抜きました(それでも固く、引き抜いたら電池も一緒に吹っ飛んでいきました)。僕のものだけ、たまたまなのでしょうか?

苦闘6時間

セットアップが終わる頃にはもう夜中の2時。アプリケーションを試す気力もなく、セットアップだけで終了、そのまま就寝しました。
まだ商品出始め、ということで、トラブルシューティングのノウハウもインターネット上に充分溜まっていない状況です。僕の上記のエラー以外にも、いろいろパターンがあるようです。今後Oculusを購入し、インストールする方は、ログから問題を特定し最短でトラブルシューティングを行うよう、ご留意頂ければ、と思います。

Lucid Cam

今日は地元で開催されたVRステレオカメラのミートアップに参加しました。このカメラLucidCamは、180度撮影可能なカメラを2機搭載しており、ステレオ4K動画(秒60フレーム)を撮影可能です。単純比較はできませんが、同価格帯の他社機よりハイスペックかと思います。
f:id:tuti107:20160427143255j:plain
左右カメラで撮影された映像は4KFisheye動画を横に並べた形式で保存され、専用のスマホ側アプリにて立体視360度動画として視聴可能です(ただし、本カメラは前方180度しか撮影できないので、後ろ180度は前方180度のコピーのようでした)。デモ映像の映像品質や立体感はなかなかのものでした。
本ミートアップでは、左右撮影映像のキャリブレーション技術について、詳細説明がありました。キャリブレーションが必要な歪みは3パターン(魚眼レンズによる歪み・センサー傾きによる歪み・左右カメラずれ)で、それらの検出方法と対処方法の概要について触れられました。
f:id:tuti107:20160427145224j:plain
値段は$399で、今年の12月に出荷予定とのことです。
気になる点は、ホームページにはビデオは2Kと書いてあるのですが、説明ではビデオ4K静止画8Kと言っていたはずなんだよなぁ・・(英語自信なし)

Magic Leapが少しずつ明らかになってきています

WIREDにて「謎のARデバイス」Magic Leapの特集がされています。これまでデバイスに関する情報はほぼ皆無でしたが、今回キーデバイス(だと思われる)について言及がありました。このレンズ(?)を通して現実世界を見ることで、その現実世界に様々な3DCG拡張情報が表示される、これだけだとHoloLens等と一緒ですが、これらのように「スクリーン投射」でCGを重畳するのではなく、別の方法で実現しているそうです。いったいどんな方法なのでしょうか?
f:id:tuti107:20160426133559p:plain
いずれにせよ、ARが本格普及する時代には物理的な「スクリーン」は意味のないものになり、平面・立体のCGを現実空間上に貼り付けて利用することになります。PCにディスプレイは不要、ウィンドウを空間に貼り付けて利用する。アプリ・UIは激変します。今はまだ、Magic Leapがいつ出てくるのか(本当に出てくるのかも含め)わかりませんが、Meta2は今年の秋に出てくることですし、真剣にAR世代のアプリ・サービスを考え始めないと、と思っています。