この投稿は第2のドワンゴ Advent Calendar 2015 3日目の記事です。
(ちなみに昨年のドワンゴ Advent Calendar 2014参加記事はこちら→リアルロボットバトル バトロイド視覚システム解説(Oculus Riftで2mサイズの戦闘ロボットを操縦してみた))
「世界のすべてを記録する」全天球カメラの新製品「THETA S」みなさん使ってますか?
THETA SはいままでのTHETAから画質が大幅に向上し、動画の画質・フレームレートも向上、そして全天球動画のライブ出力(USBカメラとしてなら1280x720 15fps、HDMI出力は1920x1080 30fps)も可能になったすごいやつです。
しかし、実際つかってみるとわかるのですがこの「ライブ出力」、結構本体が熱を持ってしまい連続使用しているとサーマルシャットダウン(熱からの回路保護のための自動電源断)がおこってしまいます。
「使用開始時にはかならずあらかじめフル充電しておく」(充電しながらだとより熱を持ちやすくすぐ止まる)といったTIPSも伝えられていますが、フル充電からライブ出力しても条件によって数時間で止まってしまうことも。
というわけで、「長時間使用でも止まらないためのTHETA S用空冷ジャケット」を作ってみることにしました。
そもそもどこを冷やせばよいのか
THETA Sが「熱くなる」ポイントは主に2カ所、シャッターボタン下のエリアと、シャッターボタンちょうど裏側のエリアです。そのうち、特にシャッターボタン下のエリアを重点的に冷やしてやると安定して動作するようです。
連続稼働ジャケット(シンプル)
実際は「THETA本体が熱を持たなければよい」ので、見た目を気にしなければこんなのもアリ。保冷剤は冷却用というよりもヒートシンクがわり。熱を逃がしてやればよいのです。これでも問題なく一晩連続稼働することができました。(そして保冷剤は生暖かい状態に)
まあ、不格好でもとりあえずこんなんでもなんとかなるというわけですね。
ただ、全天球カメラによる360度中継というやつはカメラ位置が「目立つ」ところにあればあるほどおもしろい絵が撮れる(ステージ上とか)という特性があるためさすがにこの見た目はもうちょっとなんとかしたい。
連続稼働ジャケット(ファン)
というわけで作ってみたのがこちら。5Vの40mmDCファンを2個、THETAの表裏に装着。THETAのシャッターボタン下の部分は直接ファンからの風を当て、裏側はファンからの空気が抜けるようエアフローを作ってあげて軽く風が通るようになっています。
THETAへの電源供給用のmicroUSBを分岐して電源を取り、ファンを回してやれば強制空冷、連続稼働THETAが実現します。
3Dプリント用のデータはこちらから。
サポート材なしで3D出力できる形状に調整するためこのままだと結構無理がある形(引っ張るとファンを固定しているネジが引っこ抜けてしまうなど)なので、あくまでも参考程度にしてただけるといいかなとおもいます。
さらに三脚をつけてみる
さらに、三脚ホルダーを追加してみます。こちらはThingiverseに投稿されている「Platform for RICOH THETA S」。こちらのホルダー、構造上強度が足りないという指摘もありますが(そしてそのとおりだと思いますが)とりいそぎ定点で軽く固定する(そしてカメラ自体に力をかけない)状況では役に立っています。
あわせるとこんなかんじ
なかなか禍々しくて素敵な見た目になりました!
Equirectangularにリアルタイムステッチする
THETA SのHDMI出力は「Dual Fish-eye」つまりTHETA本体についている2個の魚眼レンズの絵をそのまま並べた映像になっています。通常全天球の映像を取り扱うときは「Equirectangular」という形式にするのが一般的なので、全天球ライブストリーミングするにはこの「THETA生映像(Dual Fish-eye)」を「Equirectangular」に変換しなければなりません。
この変換には、Stereoartsさん(noraさん)の「Theta Shader Pack」をアレンジして使ってみました。変更点は3点。
- ステッチ端が目立たないよう、THETA自身の静止画ステッチと同じように映像中央に境界がこないようにした(Stereoartsさんオリジナル:表|裏 改変:裏(半分)|表|裏(半分))
- パラメータを自分のTHETAにあわせて微調整
- ステッチ端を表レンズ・裏レンズを重なり合う部分を残し徐々にブレンドする処理を追加
これだけでだいぶステッチが目立たなくなりました。かなり小型のPC+USB HDMIビデオキャプチャで、「Dual Fish-eyeをEquirectangularに変換するだけ」なら30fps出ますので変換したものをEquirectangularの映像として配信してしまえばokです。
ライブ配信中に映像の明るさや色味などを調整する
VRCカンファレンスでもそのようなことを話したのですが、360度ライブ配信は
- カメラ自体が非常に目立つところにある(ことが多い)
- 360度すべての方向を撮るので照明条件が非常に厳しいことが多い(照明や太陽の直射など)
- 360度全景を撮るので一度撮りはじめたら近づけない(カメラが目立つところにあることも含めて一度本番が始まったら近づけない)
といったことから、運用上「遠隔でカメラの設定(ホワイトバランスや露出など)を動的に変更する」ことができるようにすることが必須です。特にTHETAは露出を若干明るめにすることが多く、プロジェクター投影の映像やモニタ映像などは白飛びしてしまってオート露出ではよく見えないので、ストリーミングではマイナスの露出補正をしてあげたほうが良いです。
で、これをどうするか。
本来はイベント会場などでは有線で制御できれば(安定性からは)良いのですが、USBからのカメラパラメータ制御はこの場合(LIVEモードでは)効きません。WiFiからの設定変更もTHETA S純正アプリで試してみると動きません。
ところが!
(純正アプリではエラーになるのですが)直接APIを叩いてやれば、LIVEモード(HDMIからの映像出力中)でもちゃんとWiFi経由のホワイトバランスや露出補正のパラメータ設定を受け付けてくれます。簡単な設定変更アプリを作ってやれば、遠隔でライブストリーミング中もホワイトバランスの変更(そして固定)や露出補正の設定が可能なのです。完璧。
まとめ
というわけで、いままでLadybugなどの非常に運用がたいへん、かつ高価なカメラでしかできなかった「全天球ライブ配信」(しかも高クオリティ)がだいぶお手軽にできるようになってきました。
THETAが開く全天球の世界、これからどこまで広がっていくかたのしみですね!
…ちなみに、冒頭や最後の写真でTHETAに謎の基板がはりついていますが、これ実ははジャイロ・加速度(・地磁気)センサーです。このまま天頂補正(スタビライズ)もリアルタイムにできたらいいなあ。