Immersive Stream for XRでスマフォでXR体験しよう
はじめに
「Immersive Stream for XR」 はUnreal Engine(UE)のコンテンツをスマートフォンでAR/XR体験するための機能です。
UEコンテンツをGoogleのクラウドサーバ(Google cloud)にアップしてサーバでレンダリングデータをストリーミング配信することで、iPhoneや(ARCore対応の)Androidで表示することができます。
この記事では「Immersive Stream for XR」のサーバセットアップを主に記載します。
なお、WindowsPC前提のセットアップとなります。
チュートリアルを進める
公式がチュートリアルを出しているのでこれを見ながら進めます。
構築の流れについて
図にあるように構築の流れは、非常に簡単です。
UEで作ったコンテンツのアップ先のディレクト(バケット)を作り、コンテンツをアップします。
アップしたコンテンツを「Immersive Stream for XR」でビルドします。
ビルドが終われば遊びたいときにサーバ(インスタンス)を立ち上げればURLを発行して遊ぶことができます。
また、複数のコンテンツをアップして別々のサーバを立ち上げたり、同一のコンテンツをバージョンを付けて古いコンテンツを残しておくこともできます。
UEのコンテンツデータは大きく、アップロードやビルドには結構時間がかかります。
でコーヒーを淹れながら作業を進めよう。
「Immersive Stream for XR」の有効化とアップ先を作る
Google Cloudのアカウントや課金設定は終わっている前提で進めます。
「Immersive Stream for XR」の有効化
Google Cloudのコンソール(管理画面)を開きます。
「Immersive Stream for XR」は無効になっているため、有効化します。
メニューからマーケットプレイスで、 Immersive Stream for XR API
を検索します。
Immersive Stream for XR API
を有効化しましょう。
有効化表示が出ても、サーバでは有効化に必要な作業がすぐには完了しないため、少し待つ場合があるみたいです。
UEのコンテンツをアップロード先のバケット作成
メニューから Cloud Storage
を開きます。
適当な名前でバケットを作成します。
(ここでは、「immersive_stream_for_xr_content」としました)
UEのコンテンツを用意
UEのテンプレートの起動
表示するコンテンツを用意します。
「Immersive Stream for XR」用のUEのテンプレートが用意されています。
UEエンジンのダウンロード
UEエンジンを持っていない場合はダウンロードします。
記事時点では、テンプレートのREADMEに バージョン5.0.3まで対応と記載されています。
対応バージョンを確認してエンジンをインストールしましょう。
「Epic Games Launcher」を起動し、ライブラリからインストールします。
UEのテンプレートをダウンロード
テンプレートをダウンロードして、展開します。
XR体験したいので今回は「Unreal_Template_Project」フォルダで進めます。
ローカルでUEの起動して遊ぶ
フォルダ内の「XR_Template.uproject」をダブルクリックで起動します。
テンプレートではサンプルとしてGoogleマークのオブジェクトが配置されています。
UEコンテンツのアップロード
gcloud CLI のセットアップ
ローカルPCからGoogle Cloudにアクセスするためにgcloud CLIをセットアップします。
gcloudをインストールしていない場合は、gcloudをインストールします。
gcloud CLIでGoogle Cloudのアカウントにログインしておきましょう。
gcloud auth login
gcloud CLIを今回のプロジェクトに接続する
Google Cloudは1つのアカウントで複数のプロジェクトを作って、独立してサーバを構築することができます。
今回使う、プロジェクトをセットしておきます。
PROJECT_ID
は、管理コンソール(管理画面)のTOPページに記載されています。
# [PROJECT_ID]を自身のPROJECT_IDに置き換える
gcloud config set project [PROJECT_ID]
ローカルPCからGoogle Cloudへファイルをアップロード
アップロードのコマンドはテンプレートに用意されています。
powershellでテンプレートまで移動します。
(記事の上で用意した)サーバのアップ用のバケットの引数を付けて実行します。
.\XR_Actions\SyncContent.ps1 [my-gcs-bucket]
# 実行例
.\XR_Actions\SyncContent.ps1 immersive_stream_for_xr_content
アップが終わったらバケットを確認します。
現在、powershellのバージョンによっては、XR_Template.uproject
ファイルが上がっていないことがあります。その場合は、手動でアップします。
「Immersive Stream for XR」でコンテンツをビルド
ストレージに上がったコンテンツをビルドします。
管理コンソールの検索バーでImmersive Stream
を検索し、コンテンツリソース
を開きます。
ここが、「Immersive Stream for XR」を管理するページになっています。
早速ビルドしていきましょう。
まず、ビルド設定を作ります。
「Create a content resource」を開きます。
コンテンツ名を付けて、UEのコンテンツが上がっているバケットを指定します。
十数分はかかると思います。
完成したら、ビルドを実行しましょう。
バージョンを付けて、ビルドします。
ビルドデータは、「コンテンツ名」->「バージョン名」の入れ子で管理されるので、
製作が進んだ際に整理しやすくなっています。
もちろん、同じ「コンテンツ名」と「バージョン名」で上書きすることもできます。
ビルドも結構時間がかかります。コーヒーをいれましょう。
ビルドは完了しました。
コンテンツサーバを立ち上げる
コンテンツサーバ(インスタンス)を立ち上げて表示させましょう。
サーバが立ち上がっている間は料金が発生します。
"インスタンス名"、"表示するコンテンツ"、"サーバの起動場所と容量(想定人数)"をそれぞれ入力します。
asia-northeacst1が東京のことなので、場所が近いです。
想定人数は超えたぶんは表示しないので、少し多くすると良いでしょう。
コンテンツを表示する
スマートフォンで表示するため、URLを生成します。
完成
URLをスマートフォンで開くと表示されましたか?
テンプレートではタップすると簡単なアニメーションをします。
webで見た場合はGoogleアプリが自動的に立ち上がって表示します。
アプリの中の切り替えボタンでAR表示も可能です。
設定を見るとStore版を作ることもできるようですね。
終了
インスタンスは従量課金なので、終わったら落としておきましょう。
感想
感想としては、構築は簡単にできました。
表示もスムーズで、アニメーションも滑らか。
実用的に使えそうです。
軽く短所も書きます。
クラウドレンダリングの関係で表示人数が限られ、人数の変更もそれなりに時間がかかるためイベントでの使用になりそうです。
もっとも、クラウドレンダリングはそれなりの金額がかかるので不特定多数にばらまくような使い方は難しく、あまり問題ないと思います。
また、web起動だとGoogleアプリが起動するので、自社ブランドで出したいなどの場合はアプリの中に組み込むような工夫も必要かもしれません。
ARは今のところオクルージョンは動いていなさそうです。(pixcel6で確認)
以上です。
Discussion