Azure Remote Rendering セットアップ手順

Azure Remote Renderingの使い方、設定方法をまとめました。

Azureが何なのかもわからん私がアカウント作るとこから初めた全部入り備忘録。
公式ドキュメントをなぞったものですがちょいちょいハマリポイントがあったので補足しながら書いてます。

※Azure Remote Renderingの概要はこちらの記事が参考になります
Azure Remote Rendering(プレビュー)概要
Azure Remote Rendering 公式サンプル徹底解説

Azure Remote Rendrering 公式ページ

こちら

Azureの無料アカウントを作成

Azureのアカウントを作成するところから始める。

公式ページ下にあるリンクからアクセス。

無料で始める

各項目を入力

登録完了の画面

※このままデモの登録も可能

Azureを知るのに役立ちそうなリンク
オンラインウェビナー一覧
オンラインコースの受講
FAQとヘルプ
Azure ポータル クイックスタートページ

環境構築

下準備

公式ページ下にあるリンクからチュートリアルページへアクセス

Azure Remote Rendering 公式ドキュメント

System requirements ページを確認しVisual StudioやUnity等必要なものをインストール

Azure Remote Rendering アカウントの作成

Remote Renderingするためのアカウントを用意する。
アカウントと書いてあるので更にアカウント作るのかと混乱したが「リモートレンダリングするための機能をインストールする」イメージ?(ちゃんと分かってない)

こちらのページを参考に進める

まずリソースを作成

Remote Renderingを検索

作成

名前を付ける

※ここで付けた名前がそれぞれ以下のように表示される

Nextを押すとデプロイが始まるのでその間にアカウントIDをメモする

そのまましばらく待ちデプロイが完了したらリソースに移動

Access Keysからプライマリキーをメモする

Strageアカウントの作成

変換前のデータと変換後のデータを保存するためのアカウントを作る。
このアカウントの中に保存するための場所(コンテナー)を作成する事となる。

こちらの手順を参考に進める。

まずリソースの追加

ストレージアカウントを選択

各項目を入力

– リソースグループ
前手順で作成したリソースグループを選択する

  • 場所
    近い方が良い気がしたので(Asia Pacific) 東日本とした
    ※2020/10/08追記
    Remote Renderingアカウントと同じ場所とするのが良さそう(この記事の場合は東南アジア)

  • ストレージアカウント名
    入力したものが↓こちらの名称となる

検証および作成ボタンを押し、検証が完了したら再度作成ボタンを押す

Blobストレージの作成

上記手順で作成したストレージアカウントの中に、データを保存するための場所を作る。

こちらの後半の手順を参考に進める。

Blobサービスからコンテナーを追加する

同様の手順でアウトプット用とインプット用と2つ作成する

インプット用(変換前データ)をarrinput
アウトプット用(変換後データ)をarroutputとした。

ストレージアカウントをリンクする

「ストレージアカウントをリンクする」の意味は―

ストレージアカウントがリンクされている場合、たとえばモデルをロードするときなど、アカウントのデータを操作するたびにSAS URIを生成する必要はありません。代わりに、モデルのロードセクションで説明されているように、ストレージアカウント名を直接使用できます。

こちらの手順を参考に進める。

ロールの割り当ての追加から、前手順で作成したRemote Renderingアカウントを選択する。
(この記事の場合は”RAA”という名称)

選択欄に名前を入れても`このサブスクリプションでマネージド ID Remote Rendering アカウントが見つかりませんでした`とエラーが出てアカウントが見つからず割り当てられない時の対処方法

Remote Rendering アカウントからID(Identity)を開き`状態を`オン`にしておく。
これによって上記の選択欄に表示されるようになる。
(もしくは画像の④のところからロールの割り当てを行う)
参考:ストレージアカウントを ARR アカウントにリンクできない

同じ手順で3つのロールを設定する。
– 所有者 (Owner)
– ストレージアカウント共同作成者 (Storage Account Contributor)
– ストレージBLOGデータ共同作成者 (Storage Blob Data Contributor)

Unityのセットアップ

こちらの手順を参考に進める。

Azure Remote Rendering 用のディレクトリを作成しGitからクローン
git clone https://github.com/Azure/azure-remote-rendering

ダウンロードしたデータの中にあるUnityプロジェクトQuickstartを開く

Quickstartシーンを開きAccount Domain、Account ID、Account Keyを入力する

  • Account Domeinn
    リストはこちら
    https://remoterendering.southeastasia.mixedreality.azure.com
    ではなく
    southeastasia.mixedreality.azure.com
    の形式で入力する。

  • Account ID はこちらからコピー 

  • Account Key はこちらからコピー 

設定が完了したらシーンを再生する。
Game画面でセッションステータスがStarting...になっているのを確認する。

VMの起動とモデルのDLで描画されるまで数分かかる。
しばらくするとデフォルトで用意されているハイポリなエンジンのモデルが表示される!

オリジナルのモデルを用意する

こちらの手順を参考に進める。

上記手順でGitからクローンしたデータの中にConversion.ps1スクリプトがあるのでこれを使う

スクリプトの内容

  1. 指定されたディレクトリ内のすべてのファイルをローカルディスクから入力ストレージコンテナにアップロードします
  2. 入力ストレージコンテナーからデータを取得し、変換IDを返す変換を開始するアセット変換REST APIを呼び出します
  3. 変換プロセスが成功または失敗して終了するまで、取得した変換IDで変換ステータスAPIをポーリングします
  4. 出力ストレージ内の変換されたアセットへのリンクを取得します

jsonの編集

上記同フォルダにあるjsonファイルを編集する。
IDやストレージの場所、変換したいモデルのファイル名等をここで指定する。

  • ArrAcoundID

  • arrAccountKey

  • resorceGroup / strageAccountName

  • blobInputContainerName / bloboutputContainerName

  • region

  • localAssetDirectoryPath / inputAssetPath

Azureへのログイン

jsonの準備ができたらPowerShellを起動しAzureにログインする。
以下のコマンドを実行。
Connect-AzAccount

上記の様に用語 'Connect-AzAccount' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。
とエラーが出て弾かれる場合はモジュールをインストールする。
参考: Azure PowerShell Az module をインストールする

モジュールインストールコマンドはこちら。
stall-Module -Name Az -AllowClobber

インストール後に以下のコマンドでモジュールを最新のものに更新する。
Update-Module -Name Az

完了したら再度Azureログインコマンドを実行する。
Connect-AzAccount

ダイアログが表示されるのでログインする。

モデルを変換する

Conversion.ps1が置かれた階層へ移動する。
cd D:\Git\ARR\azure-remote-rendering\Scripts
変換コマンドを実行。
.\Conversion.ps1 -UseContainerSas

変換が完了するとSAS URIが発行されるのでこれをメモしておく。

このURIの有効期限は24時間。
24時間を経過した場合はこちらの手順で再発行する。

この時コンテナ内には変換前のデータと変換後のデータが格納されている。

  • arrinput内に保存された変換前のデータ

  • arroutput内に保存された変換後のデータ

Unityでモデルを表示する

Quickstartプロジェクトを開きModel Name欄に上記手順で生成されたSAS URIを入力

シーンを再生する。
Game画面でセッションステータスがStarting...になっているのを確認する。

数分後に変換したモデルが表示される!

HoloLensにビルドする

こちらの手順を参考に進める。

プラットフォームをUWPに変更する。

後はいつもどおりデプロイ。

以上で重いモデルもHoloLensで見れるようになった!

Azure Remote Rendering Showcase アプリ

ここまでの手順ではUnityプロジェクトQuickstartを使ってきたが、モデルを確認するにはこちらのShowcaseアプリが便利。
公式ドキュメント内の解説ページ
設定方法や使い方はこちらに記載されている。
GitHub

Unityプロジェクトを開くとパッケージエラーが出る

An error occurred while resolving packages:
[*\azure-remote-rendering\Unity\MRPackages\com.microsoft.azure.remote-rendering-0.1.82.tgz\package.json] connot be found.

パッケージは別途以下の通りUnityのPackages>manifest.jsonを書き換えて読み込む。

  "scopedRegistries": [
    {
      "name": "Azure Mixed Reality Services",
      "url": "https://api.bintray.com/npm/microsoft/AzureMixedReality-NPM/",
      "scopes": ["com.microsoft.azure"]
    }
    ],
    "dependencies": {
    "com.microsoft.azure.remote-rendering": "0.1.82", 
    "com.microsoft.azure.spatial-anchors-sdk.core": "2.7.1", 
    "com.microsoft.azure.spatial-anchors-sdk.windows": "2.7.1",

読み込み後に不具合が出る場合はUnityのLibraryの中身を一旦全て削除する。

参考記事:https://docs.microsoft.com/ja-jp/azure/remote-rendering/tutorials/unity/view-remote-models/view-remote-models

モデルのダウンロードに失敗する

コンナナ内のモデルを選択しダウンロード出来る仕組みとなっているが―

以下のエラーが出てダウンロードに失敗する場合がある。
Failed to load model from 'https://~~'. Reason: Load model failed with status 'FileDownloadFailed'.

コンテナへアクセス出来ないことが原因なので以下の手順でアクセスレベルを変更する。

変換後のモデルが格納されているコンテナ(ここではarroutput)を選択

アクセスレベルを変更する
これによりダウンローが可能になる。
参考: ARR Showcase App – Failed to load model

環境構築完了後のワークフロー

モデルの変換

  1. arrconfig.jsonを編集する
    "inputAssetPath": "<ファイル名>.glb"
  2. PowerShellを起動
  3. Azureにログイン
    Connect-AzAccount
  4. スクリプトのある階層へ移動
    cd D:\Git\ARR\azure-remote-rendering\Scripts
  5. 変換コマンドを実行。
    .\Conversion.ps1 -UseContainerSas

出来上がったもの

追記:Azure Remote Rendering Asset Tool

モデルの変換とプレビューが可能なAzure Remote Rendering Asset Tool (ARRT) というものがリリースされました。
当記事ではモデルの変換はコマンドラインで行っていましたが、GUIで変換が行える便利なツールです。
そちらのセットアップ方法と基本的な異使い方についてもこちらにまとめました。