こんにちは!xRエンジニアの大和田です!
ブログでの私の投稿というと比較的AR関連の紹介記事が多かったのですが
実は受託開発ではVR開発を引き受けていることが結構多かったりします。
(お仕事以外の部分でも実はVRプレイ時間2000時間超と、そこそこのヘビィユーザーだったり…)
というわけで今回はVRに関する話題です!
最近コロナ禍も落ち着きつつあり、メタバースがビジネス面でも話題になっている今
開発相談や取材などで来社されるお客様も増えてきました。
特にVR関連の相談に来られた際などは弊社の開発コンテンツをデモとして実演したり体験したりしていただいているのですが、VRの特性上、こんなことが気になっていました…
・ディスプレイには1人称視点しか映らないので、見ているものの全体像がわからない
・自身のアバターなどが画面に映らないため、VR空間内での体験者自身の様子が伝わらない ・VR実演中ディスプレイにどこまで映っているかわからないので、コンテンツの説明が難しい |
VRの魅力をもっと手軽にわかりやすく見られるようにしたい…
ということで、こんなものを作ってみました!
iPadなどのモバイル端末で、VR体験中の3DCGの世界を好きな場所から見ることができます!
モバイル端末側はブラウザ上でWebアプリを立ち上げているだけなので、特別なアプリインストールなどは必要ありません。つまり専用の端末を用意しなくてもいいということですね!
どうやって実現しているのか?どんなことに使えるのか?
Unityの最新機能を利用した、VRの世界を第三者視点で、より手軽にわかりやすく閲覧できるビューワー機能開発の紹介をしていこうと思います!
ツール全体のシステム構成
ローカルネットワーク内で映像配信を行うため、VR実行用のPCと閲覧用モバイルデバイス(iPadなど)はWi-Fiなどで同一のネットワークに接続しておきます。
メインとなるVRアプリケーションにトラッカーに追従する仮想カメラ機能を組み込み、PC側でリアルタイムにレンダリング処理を行います。
トラッカーを取り付けたiPadなどのモバイルデバイスでローカルサーバー上のWebアプリにアクセスすると、PCでレンダリングしたカメラ映像が直接端末のWebアプリに配信され、自由に動かせる仮想カメラの映像が見られます。
詳しい仕組み
このシステムを実現するの必要なコアな技術は2つ。
・閲覧用モバイル端末のバーチャル空間上での位置推定と、その視点から眺められる自由視点カメラの実現
・カメラに映った映像をリアルタイムでモバイル端末にストリーミング配信、閲覧できる仕組み
これらを以下の手法で実現しています。
ViveTrackerによる仮想カメラ
今回はLightHouse型(ベースステーションを設置してセンサーでトラッキングするタイプ)のPC接続型VR環境向けに汎用的に使えるツールとして開発したので、位置推定にはViveTrackerを使用しました。
iPadなどの閲覧用端末に写真のようにトラッカーを固定することで、閲覧用端末のVR空間内での位置を検出できるようになります。
Unityアプリ内でHMD投影用のカメラとは別にもうひとつ配信用のカメラを用意し、このカメラオブジェクトを現実空間のiPadの位置に合わせて動くようにすれば、自由視点の仮想カメラを作ることができます。
コントローラやHMDと同じトラッキング方式で動くトラッカーを使用することで、同じSteamVRのルームスペース基準で位置を特定でき、高速かつ高精度にカメラの位置を動かすことができます。
また今回のツール開発はHMDを装着している体験者の様子を第三者視点から眺められるようにすることを目的としていました。そのため、現実空間の体験者との距離感をそのまま反映できるトラッカーを使うことで、コントローラでVR空間内を移動しても体験者を捉え続けることが可能となっています。
Unity Render Streamingによる配信
このシステムの最重要ポイントとなる端末に映像を送信する機能については「Unity Render Streaming」というUnity公式から提供されているAPIを使用しています。
執筆時点ではまだ開発途上の最新機能で、この機能を使うことでシーン上に配置した任意のカメラの映像を視聴端末に直接配信しています。
コアとなるのはP2Pという概念を実現するWebRTCという技術で、サーバーを経由せずにクライアント同士で直接データの送受信ができるというものです。
データを送信したいクライアント(Sender)とデータを受信したいクライアント(Receiver)の2つのデバイスがあり、シグナリングサーバーと呼ばれるサーバーで2つのクライアントの接続を確立することで、クライアント同士での直接データ送信が可能となります。
送信できるデータは音声や動画データ、バイナリデータなど…
今回のツールでは、VR実行マシン上でシグナリングサーバーとしてローカルサーバーを立ち上げ、VRシーン内の仮想カメラオブジェクトにシグナリングサーバへの接続機能と閲覧端末への映像配信機能を実装。
閲覧用端末(iPad)でブラウザを開きシグナリングサーバーのIPアドレスにアクセスすると、シグナリングサーバーがVRマシンと閲覧用端末の接続を確立し、VRマシンから閲覧用端末に仮想カメラの映像がリアルタイム配信されます。
Unity Render StreamingはこれらのWebRTCシステムを開発用パッケージとして提供しているもので、P2Pの実装部分やシグナリングサーバー、Webアプリ部分までカバーされています。
このパッケージひとつで配信から閲覧部分まで実装できるため、比較的短期間で今回のツールを動かすことができました。
このシステムの良いところ
実際に先日お客様が来社された際にこのシステムを導入したVRコンテンツの実演を行ったのですが、自由な視点で見ていただけるためHMDを装着していなくてもどんな体験をしているのかをかなり伝えやすくなりました。
VRの魅力を伝えるにはやはりHMDの立体映像を見ていただくのが一番ですが、基本的にVRコンテンツは1人用が多かったり操作難易度やVR酔いの問題などがあって、開発者が実演するケースも多いです。その際に、激しく動き回る一人称視点カメラではなく好きなところから観察できる第三者視点カメラがあることで、VR体験者がどういった体験ができるのかを客観的に伝えられるようになったと思います。
また、実演ではなく体験していただく際にも、開発者がオペレータとして操作案内やコンテンツ紹介を行う際に第三者視点カメラで見ながらお話することで、スムーズな意思疎通や体験共有ができるようになったと感じています。
まとめ
バーチャル空間を自由な視点から覗くことができる仮想カメラツールの紹介でした!
今後のVR開発でもこの機能を汎用オプションとして組み込めるよう、パッケージ化や機能更新を行う予定です。
実用化できれば「手持ちのスマホやタブレットにトラッカーを取り付けるだけで、バーチャル世界を覗き見できるサービス」として、VRコンテンツをより魅力的なものにできると思います!
検討しているVRサービスに、ちょっとした付加価値をつけてみませんか?
ネクストシステムではVRやARなどの最新xR技術を使ったコンテンツ・サービスの開発を行っています!
xRの新サービスをお考えの方はぜひ弊社にご相談ください!
▼ネクストシステムの開発事例はこちら
https://www.next-system.com/scene
▼お問い合わせはこちら