EC2とNICE DCVを使ったOculus Quest2でのアプリ実行、開発環境の構築 | Amazon Web Services ブログ
本記事は Enabling Quest 2 AR/VR on EC2 with NICE DCV を翻訳したものです。
AR/VR が普及するにつれ、いくつかの企業はクラウド内でリアルタイムで利用できる AR/VR 開発環境、テスト環境、実行環境を提供し始めています。これらの需要を満たすためにAR/VR 企業はヘッドセットユーザー向けの高性能なソリューションを確保する必要があります。
AWS では、HPCを使ったインフラストラクチャとサービスを活用して、これらのソリューションを実現するためのいくつかの方法を提供しています。その一つが、G4dn EC2 インスタンス、Nice DCV プロトコル、お客様とソリューション間の高スループットネットワーク接続です。
本記事では、Oculus Quest 2 向けアプリケーション開発、テスト、実行のようなグラフィックを多用するソリューションを作成するために、高性能のEC2 インスタンスを使ったアーキテクチャの構築方法について説明します。セットアップが完了すると、エンドユーザーは高性能のクラウドインスタンスにワイヤレスで接続して、AR/VR アプリケーションを開発、テスト、実行ができるようになります。
ソリューションの概要
本記事では、ソリューションを動作させるための基本的なインフラストラクチャを作成します。ベストプラクティスに従い、リモートインスタンスへの接続を保護すると同時に、1, 2 時間以内に起動して実行できる簡単なセットアップ方法を提供します。注:この記事では、大規模な需要を満たすためのソリューションのスケールアウトについては説明しませんが、今後追記される可能性があります。
ウォークスルー
次のウォークスルーでは、前提条件と、このソリューションに必要な AWS リソースの作成に必要なステップに関する情報を提供します。また、AWS で AR/VR 環境を立ち上げるのに必要なサードパーティ製のアイテムについてのリンク先もご紹介します。
このウォークスルーを実施するためには、以下のものを準備してください。
上記の図に基づいて、パブリックサブネットとインターネットゲートウェイを持つ基本的な VPC を作成します。EC2 インスタンスにアクセスするためのパブリック IP が提供されるので、そのインスタンスへのアクセスをロックダウンする方法について説明します。VPC の作成に関する詳細情報については、次のドキュメントを参照してください。 https://docs.aws.amazon.com/vpc/latest/userguide/vpc-getting-started.html
- Amazon コンソールにログインして EC2 サービスにアクセスします
- [インスタンスを起動] をクリックします
- ステップ 1: Amazon マシンイメージ (AMI) を選択します
- 文字列「nice dcv」で検索します
- AWSMarketplaceを選択します
- 「NICE DCV for Windows (g4dn with NVIDIA gaming driver)」の横にある 選択 をクリックします
- 価格に関する情報が提示されるので、確認しContinueを選択します
- ステップ 2: インスタンスタイプを選択します
- 最低でも g4dn.2xlarge、もしくはそれ以上のインスタンスをお勧めします
- ステップ 3: インスタンスの詳細の設定します
- ネットワーク:インスタンスを起動する VPC を選択します。VPCを作成していない場合はデフォルトのVPCに追加してください
- サブネット: EC2 インスタンスを常駐させる作成済みのサブネットを選択します
- 自動割り当てパブリックIP:有効に設定します
- ステップ 4: ストレージを追加します
- ドロップダウンリストから、汎用 SSD (gp2) を選択します
- インストールするゲームやアプリケーションに応じて、必要と思われるサイズを設定します、本ユースケースでは1TBほどあれば安心です
- ステップ 5: タグを追加します
- 別のコストセンターに計上する必要があるなど場合など、何らかの理由でこのインスタンスを簡単に見つけることが必要な場合は、タグを追加すると効果的です。
- ステップ 6: セキュリティグループを構成します
- ステップ 1 から Windows AMI 用 NICE DCV を使用した場合のポートの確認とVirtual Desktop VR用のルールを追加します
- ポート 22 で TCP を使用した SSH と、ポート 3389 を使用した RDP over TCP の 2 つのルールが表示されます。これらは、必要に応じてインスタンスに接続するのに使用します
- Virtual Desktop VRを使用するので、次のルールを追加します
- ポート 38810 ~ 38840 を介したカスタム TCP およびカスタム UDPを追加します。必要に応じて「Virtual Desktop VR」と用途について説明を追加します
- NICE DCVでQUIC UDPを利用できるように設定します
- ポート 8443 経由で 2 つのルールをカスタム TCP とカスタム UDP として追加します。必要に応じて「NICE DCV QUIC」と用途について説明を追加します
- セキュリティ上の観点から、ソースは自分自身のパブリック IP アドレスにすることをお勧めします
- whatsmyip.com から自分のパブリップIPアドレスを調べます
- もしくは、ドロップダウンから マイ IPを選択します。
- ステップ 1 から Windows AMI 用 NICE DCV を使用した場合のポートの確認とVirtual Desktop VR用のルールを追加します
- ステップ 7: インスタンスを確認して起動します
- セットアップを確認し、[起動] を選択します
- セキュリティキーを作成します
- 覚えやすい場所に.pem をダウンロードしておきます
- インスタンスは約 10 分で起動し、稼働するはずです
- ステップ 1: Amazon マシンイメージ (AMI) を選択します
- お使いの OS に基づいて、ローカルマシンに NICE DCV クライアントをダウンロードしてインストールします
- NICE DCV | Download をご参照ください。
- NICE DCV クライアントを開きます
- Connection Settings をクリックします
- Protocolタブを選択します
- Automaticが選択されているドロップダウンメニューをクリックし、QUIC (with Datagram Extension) に切り替えます
- TCP Port, UDP Portが 8443 に設定されていることを確認します
- OK をクリックします
- AWS コンソールの EC2 ダッシュボードに戻ります
- 先ほど起動したインスタンスを選択します
- 詳細セクションで、パブリック IPv4 アドレスもしくはDNSをコピーします
- ローカルマシンで NICE DCV クライアントを開きます
- コピーしたアドレスをホスト名/IP アドレスに貼り付けます
- Connect をクリックします
- 「Your connection is not secure」のプロンプトが表示される場合があります。Trust and Connectをクリックします
- User Name に「Administrator」と入力します
- Passwordに以下の手順から取得したパスワードを入力します
- EC2 インスタンスページに戻る
- インスタンスを選択
- 接続をクリックします
- RDP クライアントを選択します (RDP を使用しない場合でも)
- パスワードを取得 をクリックします
- 先ほどダウンロードした.pem を参照します
- パスワードの復号化をクリックします
- パスワードをコピーして NICE DCV クライアントに貼り付けます
ローカルマシンからリモートインスタンスへの USB パススルーを設定します。これにより、Oculus Linkケーブルの接続をリモートインスタンスが認識できるようになります。
- ローカルクライアントマシンでの作業
- Quest 2 VR ヘッドセットをローカルマシンに接続する
- 指示に従って、ヘッドセットの USB filter stringを取得します 詳細はUsing USB Remotization – NICE DCVをご参照ください。
- Windows Client Installerを起動して、Drivers SectionからUSB device remotizationを選択し、Will be installed on local hard driveを選択する
- Quest2をローカルクライアントマシンに接続します
C:\Program Files (x86)\NICE\DCV\Client\bin\
に移動し、dcvusblist.exe
を実行します。Quest2はあらかじめ起動しておいてください。- Quest 2を選択し右クリック、Copy Filter Stringを押下してFilter Stringをコピーする
- EC2インスタンスでの作業
- 設定ファイルにFilter Stringを追加します。詳細はEnabling USB Remotization – NICE DCVをご参照ください。
- NICE DCVクライアントからEC2インスタンスに接続します
- EC2インスタンスの
C:\Program Files\NICE\DCV\Server\conf\usb-devices.conf
を好きなエディタで開き、Filter Stringを最終行に貼り付けます - EC2インスタンスを再起動します
- 左上の設定ボタンを選択してQuest2をEC2インスタンスが認識できるようにします。
- 「Removable Devices」を選択します
- 必要に応じて、Quest2をオンに切り替えます
- 設定ファイルにFilter Stringを追加します。詳細はEnabling USB Remotization – NICE DCVをご参照ください。
Oculusソフトウェアが正しくインストールされるようにするには、サーバーマネージャーに「ワイヤレスLANサービス」機能を追加する必要があります。そこから、必要なその他すべてのアイテムをインストールできます。
- 「Wireless LAN Service」機能を追加
- スタートメニューなどからServer Managerを起動 → Add roles and featuresを選択します
- FeaturesまでNextを押下し、Wireless LAN Service を選択します
- Next をクリックして最後に移動し、機能をインストールします
- インストールを完了するために、EC2 インスタンスを再起動します
- Oculus Linkソフトウェアのインストール:Setup Your Oculus: Quest, Quest 2, Link, Rift S & Rift | Oculus
- Virtual Desktop VR ソフトウェアのインストール:ホーム: Home | Virtual Desktop
- 設定にOculus/Facebookのユーザー名を追加してください
- Steam クライアントをインストールする:Steam, The Ultimate Online Game Platform
- クライアントから SteamVR をインストールします
ローカルクライアントPC、EC2インスタンスのセットアップされたので、Quest 2 ヘッドセットから VR Desktop アプリケーションを介して EC2 インスタンスに接続します。
- ローカルマシンにインストールした NICE DCV アプリケーションを使用してインスタンスに接続します
- VR デスクトップストリーミングアプリケーションが実行されていることを確認します
- Quest 2 VR ヘッドセットを装着し、VR デスクトップを開きます
- 接続するコンピュータのリストに EC2 インスタンスが表示されます
- 表示されない場合は、EC2 インスタンスのデスクトップストリーマーに Oculus アカウントを追加したことを確認します
- Virtual Desktopは自動的に接続されるはずです。接続されない場合はEC2 インスタンスをクリックし、Connect をクリックします
- 接続するコンピュータのリストに EC2 インスタンスが表示されます
- 接続したら、Steam/Steam VR を開いてヘッドセットで再生できます
動作確認が取れたら、今後の料金が発生しないように、以下のクリーンアップを実施することをお勧めします。
結論
この記事では、AWS 環境の EC2 インスタンスをセットアップし、コスト効率とパフォーマンスの良い方法でOculus Quest2、Oculus Linkを使ったアプリに実行方法について解説しました。本記事の内容を基に開発やテストなどにも活用いただけると幸いです。
著者について
Samは、ゲーム業界に特化したシニアソリューションアーキテクトです。大規模な開発者やパブリッシャーが、AWS上で次世代の機能を実現できるよう支援しています。特に、開発者がARやVRを使ってプレイヤーとより深い関係を築けるよう支援することに情熱を注いでいます。
Andyは、約20年のITインフラストラクチャと管理の経験を持つエンドユーザーコンピューティング(EUC)ソリューションアーキテクトです。AppStream 2.0やWorkSpacesなどのサービスを専門としています。また、AppStreamとそのベースとなったプロトコルであるNICE DCVを通じて、企業顧客とそのハイパフォーマンスコンピューティングの要件に取り組んできました。
翻訳はVR/AR/3D Prototyping Solution Architectの嶋田が担当しました。原文はこちらです。