Amazon Web Services ブログ

NVIDIA CloudXRを使ったワイヤレスヘッドセットでのVRストリーミング

本記事は、Leo Chan、William Cannady による Field Notes: Streaming VR to Wireless Headsets Using NVIDIA CloudXRを翻訳したものです。

コンシューマー向けVirtual Reality(VR)ハードウェアが多数登場していますが、ハードウェアは高価であり、セッティングは複雑で面倒なことがあります。有線のヘッドセットには、高いグラフィック性能を備えたワークステーションと、配線につまずくのを防ぐ対策が必要です。多くのルームスケールヘッドセットでは、部屋の中でヘッドセットの動きをトラッキングするために2つの外部機器(もしくは機器用の三脚、ライトタワー)を設置する必要があります。これらのセットアップには何日もかかることがもあり、ライトタワーを移動させた場合には再設定が必要になります。

Oculus Questの発売により、VRユーザーはデュアルハンドトラッキング、ワイヤレスルームスケール機能を得ました。ライトタワーやワークステーションを気にすることなくVRを楽しむことができるようになりました。しかし、Questはバッテリー駆動であるため、CPUやGPUの性能が低いことが難点であり、Questでアプリを動作させるためにはVRコンテンツを簡素化することが必要でした。つまり、CAD(Computer Aided Design)のレビューやHalf-Life: Alyxのようなグラフィックスの負荷の高い体験には使用することができませんでした。

お客様は、高額で複雑な設定を行うか、再現度の低い体験を選ぶかという難しい選択を迫られていました。

本記事では、AWSのコンピューティングサービスを利用し、Questのようなワイヤレスヘッドセットで再現度の高いVR体験をストリーミングする方法を紹介します。なお、本記事の内容を使ったアプリのストアリリースにつきましては各配信プラットフォームの利用規約をご確認ください。

アーキテクチャ

NVIDIA CloudXRはリモートサーバ上のGPUを利用して、遠隔地に接続されたVRヘッドセットでストリーミング再生を行います。ビジュアルを多用するアプリケーションのレンダリングとコンピューティングは、モバイルヘッドセットではなくリモートサーバーで行われます。これにより、モバイルヘッドセットはグラフィックスの負荷に関わらず、あらゆるアプリケーションに対応することができます。

グローバルなスケーラビリティを提供するために、NVIDIAはCloudXRプラットフォームをG4およびP3のEC2インスタンスで利用可能にすることを発表しました。これにより、以下のメリットが得られます。

  • グローバル規模で、より近いリージョンからAR/VRストリーミング再生を行うことができます
  • Amazon Elastic Compute Cloud(Amazon EC2)インスタンス上で一元的にアプリを管理・デプロイすることが可能になります。これまでは、デバイスやハードウェアの準備が必要でした
  • IT管理者は機密性の高いコンテンツや、頻繁に変更が必要になるコンテンツを一元的に管理できるようになります

ウォークスルー

AWSでCloudXRを使用するには、NVIDIA GPUを搭載したEC2インスタンス(P3またはG4インスタンスタイプ)をVirtual Private Cloud(VPC)内で実行する必要があります。このインスタンスは、VRヘッドセットで動作するCloudXRクライアントからネットワークでアクセスできる必要があります。接続は1:1で、各CloudXRクライアントは専用のEC2インスタンスに接続されます。つまり、複数のCloudXRクライアントが必要な場合は、複数のEC2インスタンスを用意する必要があります。

なお、本記事のプロセスは2021年1月時点のものです。CloudXR、およびX Reality(XR)全体は急速に変化しているため、NVIDIAのCloudXRに関する最新情報をご参照ください。AWSアカウントでCloudXRを使用するには、Amazon VPC内でP3またはG4のEC2インスタンスをセットアップする必要があります。また、CloudXRの通信に必要なポートを許可するセキュリティグループを設定する必要があります。これらのポート番号は、NVIDIAから入手できるCloudXRのドキュメントに記載されています。

前提条件を構築済みのCloudXRが設定されたEC2インスタンスをデプロイするCloudFormationテンプレートを作成しました。このテンプレートではプライベートなAMIを参照しているため、デプロイを成功させるにはお客様のAWS アカウントへAMIを共有する必要があります。このテンプレートを利用したい場合は、AWSアカウントチームにお問い合わせください。

前提条件

以下の手順では、EC2インスタンスを手動で設定する方法を説明します。CloudXRストリーミングでは、EC2インスタンスへの接続にWindows RDP以外の接続を使用する必要があります。リモート接続には、EC2インスタンスに無償で提供されているNICE DCVを使用します。

このウォークスルーでは、以下が使えることが前提条件です。

Amazon EC2を使ったCloudXRサーバのデプロイ

ここでは、G4インスタンスを構成するための手順を説明していることに注意してください。P3インスタンスを使用したい場合は、ドキュメントに記載されているように、手動でP3インスタンスをデプロイし、NICE DCVをインストールしてください。

  1. AWSアカウントにログインし、AWS Maketplaceから、NICE DCVが設定されたEC2インスタンスをインストールします
  2. EC2のセキュリティグループをCloudXRのポート設定に従うように編集します、最新のポート設定については、CloudXRのドキュメントを参照してください
  3. 初期化されるまで約5分待ち、EC2のパブリックIPアドレスをメモします(もしくはElastic IPアドレスをインスタンスにアタッチします)
  4. https://<EC2のパブリックIP>:8443に移動し、NICE DCVのweb-browserクライアントに接続し、EC2初期化時に作成した認証情報を使用してログインします、もしくは以下の方法で認証情報を確認します


    対象のインスタンスを選択し、アクションからセキュリティ>Windowsパスワードを取得を押下


    インスタンス作成時に取得したキーペアを設定


    ユーザー名、パスワードを取得


    NICE DCV Web Browser Clientのログイン画面

  5. EC2インスタンスにログインしたら、SteamVRとCloudXRをEC2インスタンスにインストールします。SteamVRは、VRアプリケーションとCloudXRのOpenVR/XRプロキシとして使用されます。CloudXRはSteamVRで処理した結果をCloudXRクライアントにストリーミングするために使用されます
  6. SteamVRにCloudXRプラグインがインストールされていることを確認するには、詳細設定オプション内のアドオンの管理ページに移動します。アドオンとしてCloudXRRemoteHMDがリストアップされ、ONに設定されていることを確認します

    アドオンの管理を押下します


    CloudXRRemoteHMDが表示されていて、オンになっていることを確認します
  7. Windowsファイアウォールのエントリにvrserver.exeの許可エントリを追加します。これにより、SteamVRがCloudXRを利用して正しくストリーミングできるようになります。デフォルトではvrserver.exeは以下にあります
    %ProgramFiles%(x86)\Steam\steamapps\common\SteamVR\bin\win64\vrserver.exe\
  8. VRヘッドセットにCloudXRクライアントをインストールします。Oculus QuestのようなAndroid搭載のヘッドセットを使用する場合には、CloudXR SDK内のサンプルAPKを利用することができます
  9. Finishを選択します

CloudXRサーバへの接続とストリーミングの開始

  1. Steamアカウントにログインするか、Installation/use of SteamVR in an environment without internet accessにしたがってno-login linkを設定して、EC2インスタンスでSteamVRを起動します
  2. 起動すると、VRヘッドセットを接続してくださいと表示されますが、問題ありません
  3. クライアントヘッドセットにインストールしたCloudXRクライアントアプリケーションを起動します
  4. サーバに接続されると、ヘッドセットはSteamVRからの表示を開始します。また、SteamVRミラーリングが有効な場合は、ヘッドセットのビューが表示されます。SteamVRのステータスボックスには、ヘッドセットと2つのコントローラーが接続されていることが表示されます
  5. これで、NVIDIA CloudXRを利用したAWS EC2インスタンスに接続されました。EC2サーバー上でOpenVRを使用したVRアプリケーションを実行すると、VRヘッドセットにストリーミングされます。

クリーンアップ

EC2インスタンスは、使用しているときのみ課金されます。セッションが終了したら、インスタンスを停止するか、シャットダウンするようにしましょう。インスタンスをTerminateする必要はありません。また、AWSに接続するための具体的なネットワーク要件を確認し、関連する社内のステークホルダーやチームと話し合うことも必要です。EC2インスタンスにAWSのセキュリティグループが適用されても、本番ネットワークは複雑で固有なものです。

まとめ

本記事では、AWS上のEC2インスタンスからワイヤレスヘッドセットに高品質のVR体験をストリーミングする方法を紹介しました。GPUを搭載したサーバーにリモートで接続してグラフィックワークロードを実行する機能は必ずしも新しいものではありませんが、VRヘッドセットからリモートサーバーに接続してインタラクティブに動作することは確かです。このアーキテクチャでは、CloudXRのメリットとAWSの俊敏性や拡張性を組み合わせて実現しています。コンテンツはVRヘッドセットではなく、EC2サーバー上にあるため、VRヘッドセットで再生されるコンテンツの管理も容易です。

また、GPUインスタンスが利用可能なAWSリージョンにデプロイすることで、グローバル規模でユーザーにCloudXRを提供することができます。AWS OutpostsAWS Wavelengthなどのサービスによってネットワークが高速化、低レイテンシー化すれば、より多くのお客様がリモートでのVR作業が可能になります。このようなワークロードが拡大する中で、次にどのような新しいワークロードが登場するのか、楽しみです。

翻訳はVR/AR/3D Prototyping SAの嶋田が担当しました。