RICOH THETA SのUnity上でライブビューパノラマ展開まとめ(メモ)

1.概要

前回のまとめ以降、ようやく触る時間と機材が出来たのでUnity上でTHETA SのHDMI Liveviewを追試しました。

イメージとしては凹みさんの

tips.hecomi.com

です。

  • THETA Sの取得できる画像、動画フォーマット一覧
  • HDMIキャプチャ方式のハードウェア紹介
  • Unity上でのHDMIキャプチャ経由の動画読み込み方法
  • Unity上での Dual Fish Eye → Equirectangular変換

みたいな内容です。

2.THETA Sの取得できる画像、動画フォーマット一覧

こんなイメージです。 f:id:izm_11:20151105014235j:plain 今回はHDMI Dual FishEyeを使います。

非リアルタイム

  • 静止画 5376 x 2688 Equirectangular
  • 動画 1920 x960 Equirectangular

リアルタイム

  • Dual Fish Eye (HDMI 1920 x 1080 インタレース60FPS)
  • Dual Fish Eye (USB2.0 UVC 1280 x 720 30FPS)
  • Equirectangular (スティッチ済みライブビュー、THETA API 640x320 MJPEG ストリーム)

3.HDMIキャプチャ方式のハードウェア紹介

HDMIからのキャプチャボードは色々な種類があります。最近だとスプラトゥーンの録画などでも皆さま買われてますが、あれも使えます。 OSから見た時に

  1. UVC(Webカメラ)として見える物
  2. キャプチャボード(direct showフィルタ)で見える物

という2種類の物が今回は使えます。 市場に出ているのは殆どすべてが2.です。

a.UVC-HDMIキャプチャボード Febon198(今回の秘密兵器!)

以下の2個をセットで買いましょう!

Febon198 http://www.amazon.co.jp/dp/B014QQXKVO/armneon-22/www.amazon.co.jp

HDMI Signal Converter

www.banggood.com

Febon198は OSからはUSB3.0の1080Pで60FPSなWebカメラとして見える、Febon198内の遅延は50-80ms程度(*1)、というトンデモないスペックの一品です。

デメリットは

などです。

Febon198はプログレッシブ信号しか受け付けないので、THETA含むデジカメからのインタレースな1080iなHDMI信号を読ませるには

HDMI Signal ConverterみたいにHDMI信号をなんでも1080Pに変換してくれるオモチャボードを通しましょう。

PCモニタ出力やXBOXの出力は1080Pなので、そういうのをキャプチャするだけならオモチャボードは不要なのですが、デジカメからの信号はインタレースが多いようです。ご注意ください。

セットで買わないと、こんな風に寝込む羽目になります。

b. 定番:BlackMagic Intensity Shuttle

ご存じ定番のBlackMagic!
なんでも読めるし、SDKも公式配布でフレームごとガバっと持ってこれて最高です。

http://www.amazon.co.jp/dp/B007ZDHDRS/armneon-22/www.amazon.co.jp

これを使えば大体のHDMI信号は読めます。ド定番!最高!!

b. その他キャプチャボード

遅延が大きいハズレもあったりする印象。2万円程度?

TL見てて動いたという話があるのはGC550など

http://www.amazon.co.jp/dp/B00ZOXYQ26/armneon-22/www.amazon.co.jp

4.Unity上でのHDMIキャプチャ経由の動画読み込み方法

a. UVCキャプチャボード

Unity標準のWebCamTextureを開いて再生するだけです! こんな感じのスクリプトを、適当にUnityのPlaneにアタッチします。 Thetaの再生用 · GitHub

b. DirectShowフィルタキャプチャボード

ここが結構大変な印象です。

BlackMagic系や、一般的なキャプチャボードなら AVPro Live Camera

https://www.assetstore.unity3d.com/jp/#!/content/3683 を使えば大丈夫だと思います。トライアル版で必ず事前に動作は確認してください。

尚、このアセットですが 200ドル と、比較的お高いです

(だからこそFebon 198を今回お勧めしてます。こっちは読むのタダですからね!) (他に安価な手段があるかもしれません。情報お待ちしてます!)

5.Unity上での Dual Fish Eye → Equirectangular変換

凹みさんの方法(前述)と

Stereoarts(Noraさん )の方法があります。 Stereoarts Homepage (Theta Shader Pack)

今回は後者のNoraさんのTheta Shader Packを試しました。

手順を念のため録画しました。一発撮りです。

www.youtube.com

Theta shader Packと、このスクリプトで作業しました。(部屋が散らかっていてお恥ずかしい) Thetaの再生用 · GitHub

Unity上でビルドしたexeを動作確認用に置いておきます。 Febon 198か、USB接続のLiveviewモードなら、再生できると思います。 https://copy.com/L6wAq9dYdIOrIHp1

6.今後やりたいこと

生放送時のパノラマ配信インフラがどこかにないかなあと気になってます。ちゃんとした法人契約じゃなくても、個人でちょろっと試せる場があると嬉しいです。

補足

HDMIキャプチャボード越しの遅延チェック

*1:本家スペック表による。 Theta→Febon198→Unityの遅延はこんな感じで測ると260-300ms程度です。どうやらThetaの絵を読み込んでHDMIから出すまでは、100ms以上のタイムラグがあるようです。

THETA SのUSBライブビューモードの認識手順

USBケーブルをPCとつながずに 写真動画切り替えボタンを押しながら電源を入れる→LiveviewモードになってからPCにUSBケーブルを刺す

という順番です。意外と忘れがちです。

ライブビュー経由で見る時の画質劣化

Dual Fish Eyeの時の実効解像度から考えて

  • HDMI経由で130万画素相当
  • USB経由で50万画素相当

くらいまで欠落してます。1920x960のスティッチ済み動画と比べるとHDMI経由でも3-4割くらい落ちてる雰囲気です。