Immersive Stream for XRを使ってみる
概要
- Immersive Stream for XRはストリーミング技術を使って、モバイル端末上で3Dコンテンツの表示を可能にします
- ARコンテンツの作成も可能なため、低負荷で高品質なARコンテンツの作成が可能となっています
- 2022年8月現在プレビュー版となっていますが、使い方を紹介します
- GCPとUE4の行き来を防ぐため公式ドキュメントと説明の順番が一部異なっています
YouTubeのvideoIDが不正です
環境
- Windows10
- Unreal Engine 4.27
GCP側の準備
-
基本的にこちらのクイックスタートに沿って構築していきます
https://cloud.google.com/immersive-stream/xr/docs/quickstart?hl=ja -
まずGCPプロジェクトを作成し、その中にバケットを作成します
- バケットを作成する際には支払い情報が必要になるので、事前に準備しておく必要があります
バケット名は任意の名前を入力します
データ保存場所によって料金が変化します。デフォルトのままでも問題はないかと思います
次にGoogle Cloud CLIの準備をします。インストール済みの方は読み飛ばして問題ありません
Windowsの場合は下記のコマンドを PowerShell
で実行します
(New-Object Net.WebClient).DownloadFile("https://dl.google.com/dl/cloudsdk/channels/rapid/GoogleCloudSDKInstaller.exe", "$env:Temp\GoogleCloudSDKInstaller.exe")
& $env:Temp\GoogleCloudSDKInstaller.exe
自動的にインストールが進み、Googleアカウントにログインまで実行されます
次にGCP上でImmersive Stream for XR serviceを使えるように設定していきます
下記のコマンドではmy-project
というのがプロジェクトID、my-project-number
がプロジェクト番号と読み替えてください
プロジェクトIDはプロジェクト名ではなく赤枠のIDの方になります
下記のコマンドを実行していきます。PowerShellではなくコマンドプロンプトで問題ありません
gcloud services enable stream.googleapis.com --project my-project
プロジェクト番号を調べる
gcloud projects describe my-project
実行結果。projectNumberがプロジェクト番号になります
createTime: '2022-05-12T03:59:39.290Z'
lifecycleState: ACTIVE
name: ARCore
projectId: arcore-xxxxxx
projectNumber: '123456789'
このプロジェクト番号を使用するように gcloud CLI コンテキストを設定します。
gcloud config set project my-project-number
gcloud CLI の alpha コマンド コンポーネントをインストールします。
gcloud components install alpha
gcloud CLI が最新であることを確認します。
gcloud components update
次にバケットの操作をします。my-gcs-bucket
の部分を、作成したバケット名に置き換えて実行してください。数十分ほど時間がかかります
gcloud alpha immersive-stream xr contents create my-content --bucket=my-gcs-bucket --async
実行状況は下記のコマンドで確認できます
gcloud alpha immersive-stream xr contents describe my-content
実行結果。stateがREADYになれば準備完了です。
createTime: '2021-12-07T18:40:08.#######'
lifecycleState:
description: 'Creation operation: projects/my-project-number/locations/global/operations/operation-####'
state: CREATING
name: projects/my-project-number/locations/global/streamContents/my-content
updateTime: '2021-12-07T18:41:33.#######'
ドキュメントにはREADYになった後、1時間待つように記載があるのでここで1時間ほど休憩を取りましょう
(推奨) コンテンツの準備が整った後、コンテンツ ビルダーがプレウォームするまで 1 時間待ちます。
これでGCP側の準備はいったん完了です
UE4コンテンツの準備
-
事前にUnreal Engine 4.27をインストールしておきます
https://www.unrealengine.com/ja/?sessionInvalidated=true -
こちらのGitHubからテンプレートプロジェクトをダウンロードします
https://github.com/GoogleCloudPlatform/immersive-stream-for-xr-templates
なお、テンプレートプロジェクトの説明についてはこちらのページになります
テンプレートプロジェクトがダウンロード出来たら XR_Template.uproject
をダブルクリックしてプロジェクトを開きます
この状態で実行して通常モードとARモードを切り替えるシミュレーションをすることもできます
このテンプレートの場合、SphereをタップするとCubeのメッシュに切り替わる機能が実装されています
プロジェクトの内容に手を加えたい場合は、ここで手を加えておきます
UE4プロジェクトのアップロード&ビルド
- PowerShellでテンプレートプロジェクトの
XR_Actions
フォルダまで移動します - 下記のコマンドを実行してUE4プロジェクトをバケットにアップロードします
.\SyncContent.ps1 my-gcs-bucket
上手く実行できない場合はこちらを参考にしてください
アップロードが完了したらいよいよビルドを実行します。私の環境では2時間かかりました。(ドキュメントには最大4時間かかると記載があります)
my-version-tag
の部分は任意の文字列になります。001
などバージョンが分かりやすい文字列にしておくといいかと思います
gcloud alpha immersive-stream xr contents build my-content --version=my-version-tag --async
下記のコマンドを実行すると状況が確認できます
gcloud alpha immersive-stream xr contents describe my-content
ビルドが成功するとdescriptionがBuilder finished building 001 with status SUCCESS
に変化します
bucketName: xr_stream
createTime: '2022-08-15T03:11:15.406816529Z'
lifecycleState:
description: Builder is building 001
state: READY
name: projects/123456789/locations/global/streamContents/my-content
updateTime: '2022-08-15T04:27:37.124734227Z'
インスタンスの作成
下記のコマンドでインスタンスを作成します。こちらも数十分程度時間がかかります
gcloud alpha immersive-stream xr instances create my-instance --content=my-content --version=my-version-tag --async
リージョンはアジアリージョンを使用することも可能です asia-northeast1
下記のコマンドで状況が確認できます。
gcloud alpha immersive-stream xr instances describe my-instance
lifecycleStateがREADYになればインスタンスの作成が完了です
apiEndpoint: 123456-789-123-456-349d7150f822.streamplease.net
apiKey: *****************
content: projects/123456789/locations/global/streamContents/my-content
contentBuildVersion:
buildId: version-d2090ca5-6f03-4387-97e3-4b5d7b364b91
buildTime: '2022-08-15T04:32:26.593587360Z'
contentVersionTag: '001'
createTime: '2022-08-15T06:05:55.466066947Z'
lifecycleState:
state: READY
locationConfigs:
asia-northeast1:
capacity: 1
location: asia-northeast1
name: projects/123456789/locations/global/streamInstances/my-instance
realmConfigs:
- capacity: 1
realm: REALM_ASIA_NORTHEAST
updateTime: '2022-08-15T06:36:33.368376587Z'
URLを作成する
インスタンスが作成出来たらLink Generatorを使ってリンクを作成します
下記のコマンドを実行した際に表示される
apiEndpoint
をEndpoint URLに
apiKey
をAPI Key
に入力してリンクを作成します
gcloud alpha immersive-stream xr instances describe my-instance
Cross-Platform Redirect Link
を押すとQRコードが生成されます
そのQRコードをモバイル端末で読み取ることでコンテンツにアクセスすることができます
後片付け
下記のコマンドでインスタンスを削除できます。インスタンスの削除にも30分程度時間がかかります
gcloud alpha immersive-stream xr instances delete my-instance --async
最後に
- 実行するまでの手順が多いですが、一度構築すればリッチな表現をモバイル端末で表示することができるようになります
- ビルド時間も初回は長いですが、2回目以降は30分程度に圧縮されるようです
Discussion