dena02259

対応カメラの充実で一般ユーザーも楽しめる環境に「360度VRライブストリーミングのはなし」

  • このエントリーをはてなブックマークに追加

by [2016年2月02日]

 ゲームやEC、電子コミック、ヘルスケア、自動車、野球……といろいろな事業を展開する株式会社ディー・エヌ・エーが、それらサービスを実現するために行っている技術的なチャレンジを紹介するお祭りイベント『DeNA TechCon 2016』を開催した。その講演の中からここでは「360度VRライブストリーミングのはなし」をお届けしたい。

dena02259

スピーカーのOGURA TAKEYUKI氏。1994年セガ(現・株式会社セガゲームス)に入社、Virtua Fighter 2, 4, Shenmue 1, 2等のリアルタイム・ビジュアル・イフェクトを担当。その後、日本マイクロソフトにて開発サポート、株式会社フィジオスの設立など、紆余曲折を経て株式会社ディー・エヌ・エーへ。主にプロトタイプ制作、技術リサーチを担当。

 これから話すことは、360度VRライブストリーミングについてですが、一般のユーザーが手持ちの360度カメラで配信することを想定しています。ですので「高価なカメラで両眼視差を使って……」といった内容には踏み込みません。
 私の専門はCGと、GPU Computingというものです。社内でも「DeNAで何をやっているんですか?」とよく聞かれるのですが、技術調査と、調査した中で「これいけるんじゃないか」と思ったものをプロトタイプで作って、それをサービス等に利用しています。「これ使えそうだな」と思ったものを自分で持ち込んで製品にすることが多いです。

▼関連記事
とにかくプロトタイプを作ってみよう「ボトムアップアプローチでのVRサービス立ち上げ」

DeNA TechCon2016 360VR Live Streaming from Takeyuki Ogura

VR市場は「ヘビー」と「ライト」に二分化!

dena02274

 はじめにVRのざっくりとした市況をまとめました。VRには「ヘビーなVR」と「ライトなVR」があり、既に進化は分岐しています。ここで“ヘビー”という言葉は語弊があるかもしれませんが、「ゴツいヘッドセットと高価なPCを使ったもの」というイメージです。一方でライトなVRは「スマートフォンだけで行う」といったものを指します。最近ヘビーなVRでは専用のUIがどんどんできていますが、ライトなVRでは良くも悪くも専用UIはありません。ヘビーとライトの違いで最も大きいものは、ポジション・トラッキングの有無です。ヘビーなVRでは部屋を歩き回るといったことが可能です。
 このようなことがあってコンテンツの進化も分かれています。ヘビーなほうはゲームやインタラクティブなユニット、ライトな方は360度動画を中心としたコンテンツになっています。ヘビーなほうですが、ヘッドセットが2016年の春に市場に出回ります。そのタイミングはおそらくGDC2016(サンフランシスコで行われる世界最大のゲームカンファレンス)が開催される3/14-18の前後になると予想されています。ライトなほうでは、今年1月にあったCESで多くの360度カメラの発表がありました。これは春から中頃にかけて次々と登場することになっています。また、YoutubeやFacebookは既に360度動画に対応しています。
 次に市場規模についてお話しますが、市場があるわけではないので単純に機器台数の話になります。VRを満足に楽しめるハイエンドPCが1300万台(2015年11月NVIDIA発表)で、Xbox Oneが1300万台(2015年8月VZCharts発表)、PS4が3,000万台(2015年11月SCE発表)です。ハイエンドスマホが4億台以上(総務省H27白書グローバル市場動向から2014年の数字)になっています。この数字だけ見ても「VRはスマートフォンの方が大きな市場になると言われている」ということに納得していただけると思います。
 コンテンツのほうは、Gear VRにはOculus Storeが、Oculus RiftにはOculus Shareが用意されています。また、ソニーの平井社長が「PlayStation VRへVRゲーム100タイトル投入」を宣言されています。さらに、Oculus社がVR専門のスタジオを立ち上げたのはかなり大きいです。さらに、GDC 2016と同時期の2016年3月にVRDC(Virtual Reality Developers Conference)が開催され、そこで大きな発表がたくさんあると思われます。また、同じ時期に開催されるテキサスのSXSW(South by Southwest)でもVRの発表が持ち上がっています。
 ヘビーなVRのコンテンツですが、ゴリゴリに3Dをやってこられた方ほど慎重になっています。キャラクターをより一層作りこむ必要があったり、ビルボードが使えなかったり、様々な障害があります。一方でライトなVRはYouTubeとFacebookは対応済で、360度カメラのコストパフォーマンスはどんどん上がっているのですが、実はライブストリーミングサービスはあまり見られません。ということで、ここを攻めたら面白いんじゃないかと思ったことが本日のテーマに選んだ理由です。

「360度ライブストリーミング」って?

 360度ライブストリーミングと普通のライブストリーミングのどこが違うのかと言いますと、実は要素としてはほとんど変わりません。違うのは「360度の情報を持つ映像を流す」というところだけですが、これによって新しい技術が2つ必要になります。
 まず1つは、映像を作るためのカメラが必要になります。もう1つは、送られてきた360度の情報を持つ映像から必要な方向の映像を切り出す、ということをアプリケーションの中で処理することです。

温故知新のワザ! キーワードは「地図」!?
dena02285

(360度動画が流れる)このような映像を皆さんYouTubeなどでご覧になると思いますが、これは360度の情報を持っています。ここから特定の方向の映像を切り出します。ある人のスマートフォンには前方の映像が切り出され、別の人には後方の映像が切り出されています。これが通常のライブストリーミングとは異なっている部分です。視線方向をアプリに伝える方法は大きく分けて2つあります。1つは画面をドラッグして方向を決める方法、もう1つはジャイロセンサーを利用してスマートフォンを傾けて方向を決める方法です。

dena02291

 360度(立体)の情報を平面にすることを投影、射影と言います。難しそうに聞こえますが、人類は結構昔からやってきているもので、これそのものは新しいものではありません。というのも、地図はこれを利用して作られています。地図投影法の1つに正距円筒図法がありまして、これは360度動画で使われているスタンダードな投影法です。この方法には特徴がありまして、緯度と経度が等間隔かつ直交していて、高緯度の情報が東西(横)に伸びています。地球儀を作るときに使う舟型多円錐図法で作られた地図を、東西を広げて長方形になるように辺々をうまく縫い合わせると、正距円筒図法での地図になります。

どうやって360度の動画にしてるの?
 ところで、360度カメラで撮影した映像がそのまま正距円筒図法だというわけではありません。360度カメラで撮影したそのままのデータを生データと言いますが、生データを動画にするのは結構面倒です。生データはレンズの数だけ映像が分かれているので、これを結合(スティッチング)して正距円筒図法に座標変換して初めて360度動画として再生できるようになります。それはどうやってやるのかと言いますと、通常はカメラ会社の提供しているアプリケーションで行います。

dena02306

 ここで問題を整理します。目的としているのは、リアルタイムにこの映像を配信すること、球体型の映像を作って見たい方向の映像がどこでも見られるようにすることです。そのためには正距円筒図法での映像があれば、それをそのまま貼ればいいです。ただ、魚眼レンズは魚眼レンズの都合で映像を撮っています。さあどうするか、という問題です。動画でしたら時間をかけて変換すればよいのですが、ライブストリーミングの場合はリアルタイムで変換するしかありません。そこで魚眼レンズの仕様を調べ、「魚眼レンズの射影」を考慮して生のデータをリアルタイムで画像処理します。これをカメラにあるすべてのレンズに対して並列に処理すると、結果的にスティッチングとなり、360度の映像を得ることができます。

普通のライブストリーミングと同じ部分
dena02321

 次に普通のライブストリーミングと同じ部分についてお話します。これはテクノロジーに絡んでいる部分はほとんどなくて、機材を繋げば誰でも出来てしまうんです。カメラがあって、キャプチャー・デバイスがあって、ライブ配信のソフトウェアがあって、配信サーバーにつなげて、それをスマートフォンで観る、といった形です。360度ライブストリーミングの場合は非常にデータが大きいので、解像度の大きいデータを撮って配信というのはちょっとキツいかなぁと思うところではあります。
 クライアント・アプリをちょっと説明します。ストリーミングプロトコルで来たデータをDEMUX(デマックス:一つにまとまったストリーミングを小さく分けること)するとき、同じ時刻の映像と音を分離します。このとき、iOSでは映像の分離にはVideo Toolbox Frameworkを使って1フレームごとのImageBufferを作り、音にはAudio Toolbox Frameworkを使ってPCMを作ります。同様にAndroidではMedia FrameworkとAudio Trackを使います。ここでPCMとImageBufferのタイミングを合わせて、ImageBufferではOpenGL ExtensionでTextureを作り、PCMでは音を出す、といったことをやります。
 ジャイロセンサーの対応は、フレームワークを使用するほうが簡単です。Cardboard SDKですとかCardboard SDK-iOSというのが出ております。

VR現場での苦労と今後への期待

 VR配信をやっていた中で気になったことがあります。最初はUnityで作ってまして、非常にやりやすかったのでこのままUnityで全部作っちゃえと思っていました。しかし、UnityがH.264のコーデックに対応しておらず、諦めてFrameworkを使いました。
 当時は360度VRストリームで使えるカメラが少なく、使えたものもクセがかなりありました。アクションカメラは、魚眼レンズは付いているもののプレビュー機能がないものが多く、使いづらかった記憶があります。Webカメラのプレビュー機能は強いのですが、魚眼レンズは自分で付けなければなりませんでした。一番決定的なのはUSB接続で、ドライバやアプリがWindows志向のものが多かったです。業務用監視カメラは値段が高くて性能は良いのですが、解像度は低かったりして使いにくかったです。ただ、これからは使えそうなカメラがどんどん出てくるので悲観的にならなくてもいいと思います。
 あと「360度カメラが生成する生データをどこで変換すべきか」というのを言わなかったのですが、今は生のデータをクライアントまで送ってしまい、クライアントで処理しています。ただ、これが本当に正しい方法かと言うと違うと思っています。サーバーで全部処理するなどの方法もあります。しかし、違うカメラから映像が送られてきた場合、「“何のカメラを使っているのか”といった情報をどこから送るのか」といったルールが全く無い状況なので、これはまだ難しいです。
 ストリーミングですと、高解像度の映像はまだ厳しいです。これはFacebookが進めている、球ではなく多面体を利用するアルゴリズムがどこまで解決するかによって今後の展開が変わると思います。
 360度カメラへの標準化の動きもあります。これはカメラの標準化というよりは、アプリを作る側がどんなカメラでも同じSDKでカメラを動かせるよう、標準化しているというものです。

DeNA TechCon
DeNA ディー・エヌ・エー

PageTopへ