はじめに
Google Cloud(以下、GCP)が提供する Immersive Stream For XR をみなさんご存知でしょうか。
2023/02 に一般提供が開始されたUnrealEngine(以下、UE)を手軽にクラウドレンダリングで利用できるマネージドサービスです。
私が所属する開発チームでは、本サービスを活用した商用サービスの開発、運用について、1年以上協力した実績があり、色々感動したり苦戦したりでナレッジが蓄積しているので、この素晴らしいサービスを改めて紹介したり、開発、運用上で気つけるポイント、tipsなどを紹介していきます。
本サービスがもっと認知、活用されて流行ることを心より願っております(笑)
まず今回は、Immersive Stream For XRの概要ととにかく最短(といっても待ち時間が結構かかる)で動作確認する方法を紹介します。
Immersive Stream For XR とは
Immersive Stream For XR(以下、is4xr)とは、UEプロジェクトのビルドからインスタンス作成等を全てGCP側で行い、インスタンス作成時に発行されるURLへWEBブラウザでアクセスするとクラウドレンダリングを体験することができます。
クラウドレンダリングとは、高度なグラフィックス処理や計算を端末やアプリではなく、クラウド上のコンピューティングリソースを活用して行う技術です。
このサービスがすごいところは、
自分で作るとかなり難しいクラウドレンダリング環境をインスタンスをぽちぽと起動するくらいの感覚で手軽にはじめられてしまう。おまけにビルドやバージョンの管理までしてくれる。
というところだと思います。イメージは以下の通りです。
- UEプロジェクトをGoogle Cloud Storage(以下、GCS)にアップロードするとビルド以降全てGCP側で管理、実行されます
- ビルドのバージョン管理やインスタンス管理等も行なってくれます
- インスタンスを作成すると一意のURLが発行され、そのままアプリ等のインストール無しにWEBブラウザで体験できます
- Googleアプリを利用して体験するとARモードも利用できます
- WEBブラウザ上での視点などのカメラ操作が動的にクラウドレンダリングに反映されて画面操作ができます
詳細な仕組みや利用方法なども含めてクイックスタートとしてまとめられていますが、軽い気持ちで試してみようとすると途中で挫折して本サービスの素晴らしさを体験できずに忘れ去られてしまう可能性がある(例えば、windowsPCを持ってない、UnrealEngine動くような性能のPCがない等々)ため、今回はローカルでの作業を極力飛ばして最短で動作確認する方法を紹介します。
事前準備
通常の流れではローカルPCでUEをインストールして、、、となりますが、今回は必要ないので何かしらのPC(windowsでもmacでもよい、低スペックでよい)を準備します。
Google Cloudの準備
is4xrを動かすためのGCPプロジェクトが必要です。Googleアカウントを使って作成します。既にプロジェクトを持っている場合は不要です。
今回の動作確認で少しだけお金かかります
- GCSの料金($0.02/GB ※今回の動作確認では1GB未満になります)
- is4xrの料金($1.25/h ※今回の動作確認では1時間程度になります)
IAMの設定
GCPプロジェクトの作成時にオーナー
や編集者
などになっていればそのまま進めます。それ以外の場合、本サービスを使うには、以下のロールを追加します。
- ストレージ管理者(GCS)
- ストリーム管理者(is4xr)
どちらも動作確認だけを目的に強い権限をつけているので実運用時には用途に応じて選択するか、カスタムロールを作成して利用するのが望ましいです。
is4xrサービスの有効化
is4xrはデフォルトでサービスが無効になっているので有効化します。
- GCPメニューの
APIとサービス
からImmersive Stream for XR API
を有効にします
GCSバケットの作成
UEプロジェクトをアップロードするためのバケットを作成します。
- GCPメニューの
Cloud Storage
から、バケットの作成
をします - ロケーションタイプを
Region
にしてリージョンを選択します。今回は、us-central1
を選択します
動作確認
immersive Stream For XR とは のイメージで記載したステップに沿って確認します。
1. UEプロジェクト作成
GoogleがUEのテンプレートプロジェクトをgithubで公開しているのでダウンロードします。
今回はUEの中身には触れずこのプロジェクトをそのままデプロイします。
2. GCSへのアップロード
テンプレートプロジェクト内のUnreal_Template_Project
の中身をまるっとバケットにアップロードします。
本当は全てアップロードする必要はありませんがここでは簡素化のためにまるごとアップロードしてしまいます。
3. コンテンツ作成
ビルダーの作成(初回のみ)
コンテンツのビルダーを作成します。これにより、以降このビルダーを使ってビルドを実施してバージョンを作成することで継続的な開発が可能となります。
- GCPメニューの
Immersive Stream
から、コンテンツリソース
を選択します - コンテンツリソースの作成で先ほど作成したバケットを選択して作成します
1時間弱かかります。
コンテンツリソースのステータスがReady
になるまで待ちます
ビルドバージョンの作成
先ほど作成したビルダーがコンテンツをビルドしてバージョンを作成します。具体的には、GCSバケットにアップロードされたUEプロジェクトをインスタンスで実行するためにビルドする処理を行います。通常Unrealエディタなどでプラットフォーム向けにビルドしますが、それ自体をGCP上で実行するイメージです。
この作成されたバージョンが管理されるため、好きなバージョンを指定してインスタンスを作成して利用するイメージです。
2-3時間弱かかります。プロジェクトによっては5-6時間かかったりもします。
コンテンツリソースのビルドが完了すると、ビルドステータスにビルド時間が表示され、最新のビルドバージョンも表示されます。
4. インスタンスの作成
ビルドしたバージョンを指定してインスタンスを作成します。
今回はWEBアクセスでの確認のみ行いますのでモードは3Dのみ
で作成します。
- モード: 3Dのみ
- GPUクラス: NVIDIA T4
- ロケーション: us-central1(capacity 1)
1時間弱かかります。
ここで選択するリージョンはGCSバケットのリージョンと同じである必要はありません。
インスタンスのステータスがReady
になるまで待ちます。
5. WEBアクセス
起動したインスタンスへのアクセス用のURLを発行してWEBブラウザからアクセスします。
インスタンス詳細のストリーミングURL
をクリックします
Link Generator Tool(URL生成ツール)でURLを生成します
URLにアクセスします。以下の左図のようにUEで開発されたテンプレートプロジェクトの内容が表示されます。
オブジェクトをタップしたりピンチインアウトなどカメラ操作をクラウドレンダリングで遅延も少なく体験できると思います。
- もしLink Generator ToolでQRコードからアクセスした場合、Googleアプリがインストールされているとそちらで優先して表示されます
- 画面下部にARモードで表示する
View in your space
が表示されますが今回は反応しません(Googleアプリでのアクセスかつ、インスタンスのモードをAR/3Dモードにしている場合のみ体験できます)
参考までに以下の右図はインスタンスがまだ起動していなかったり、枯渇している場合などに表示されるエラー画面になります。
1インスタンス1セッションとなるため、1インスタンス起動の場合は1人だけアクセスが可能となります。
片付け
インスタンス、コンテンツ、GCSバケットを削除します。
継続して開発する場合には、費用がかからない環境の残し方をすると次回以降待ち時間を(ある程度)削減ができます。
- インスタンスを削除でなく、台数を0台に変更します
- インスタンス0台とすることで削除と同様にインスタンス費用はかかりません
- インスタンス作成と0->1台の変更では、後者の方が起動時間を20-30分短縮されます
- コンテンツはそのまま残します
- ビルダーやバージョン管理などの部分は費用がかからないためそのまま残します
- GCSバケットの中身だけを削除します
- コンテンツとGCSバケットが紐づいてビルダーが管理されているため、バケット自体を削除するとコンテンツ作成から必要になるため、GCSバケットは残して課金対象になる中身のプロジェクトデータだけ削除します
- 次回ビルドするときはまたプロジェクトを同じバケットにアップロードしてビルドします
おわりに
今回はis4xrがどんなサービスかと最短で動作確認する方法を紹介しました。
各ステップの詳細や重要な説明などをほとんど飛ばしていますので、今後それぞれについて深掘りした内容を紹介していきたいと思います。