クイック スタート:モデルをレンダリング用に変換する
Quickstart:Unity によるモデルのレンダリング」では、Unity サンプル プロジェクトを使用して組み込みモデルをレンダリングする方法について学習しました。
このガイドでは、次の手順を使用して独自のモデルを変換する方法を示します。
- 入力と出力用に Azure Blob Storage アカウントを設定する
- Azure Remote Rendering で使用する 3D モデルをアップロードして変換する
- 変換された 3D モデルをレンダリング用にアプリケーションに含める
前提条件
- 「Quickstart: Unity によるモデルのレンダリング」を完了する
- PowerShell スクリプトを使用して変換する場合:Azure PowerShell をインストールする (ドキュメント)
- 管理者権限で PowerShell を開きます。
-
Install-Module -Name Az -AllowClobber
を実行します。
概要
サーバー上のレンダラーは、FBX や GLTF などのソース モデル形式を直接扱うことはできません。 代わりに、モデルを専用のバイナリ形式にする必要があります。 変換サービスは、Azure Blob Storage からのモデルを使用して、変換されたモデルを指定済みの Azure Blob Storage コンテナーに書き戻します。
必要なもの:
- Azure サブスクリプション
- サブスクリプション内の "StorageV2" アカウント
- 入力モデル用の BLOB ストレージ コンテナー
- 出力データ用の BLOB ストレージ コンテナー
- 変換対象のモデル。「サンプル モデル」を参照してください。
- サポートされるソース形式の一覧を参照してください。
- サンプル変換スクリプトを使用するには、モデルとすべての外部依存関係 (外部のテクスチャやジオメトリなど) が含まれている入力フォルダーを準備する必要があります。
Azure のセットアップ
まだアカウントをお持ちでない場合は、[Azure の概要] に移動し、無料アカウント オプションを選択して、手順に従ってください。
Azure アカウントを入手したら、Azure portal にサインインします。
ストレージ アカウントの作成
BLOB ストレージを作成するには、最初にストレージ アカウントが必要になります。
- 作成するには、[リソースの作成] を選択します:
- 新しい画面で、左側にある [ストレージ] を選択した後、次の列の [ストレージ アカウント - Blob、File、Table、Queue] を選択します。
- このボタンをクリックすると、ストレージのプロパティを入力するための次の画面が表示されます。
- 次の方法でフォームに入力します。
- ドロップダウン ボックスの下のリンクから新しいリソース グループを作成し、ARR_Tutorial という名前を付けます。
- [ストレージ アカウント名] に一意の名前を入力します。 この名前はグローバルに一意である必要があります。 名前が既に取得されている場合は、エラー メッセージが表示されます。 このクイックスタートのスコープでは、arrtutorialstorage という名前を付けます。 この名前は、このクイックスタートの該当箇所すべてで、適宜自分が使用する名前に置き換える必要があります。
- 近くのリージョンを選択します。 他のクイックスタートでレンダリングの設定に使用するのと同じリージョンを使用するのが理想的です。
- パフォーマンスが 'プレミアム' に設定されています。 'Standard' も機能しますが、モデルの読み込み時の読み込み時間特性が低くなります。
- Premium アカウント型 を [ブロック BLOB] に設定する
- 冗長が "ゾーン冗長ストレージ (ZRS)" に設定されている
他のタブのプロパティを変更する必要はないので、 [確認および作成] を続行し、手順に従ってセットアップを完了してかまいません。
これで、Web サイトからデプロイの進行状況について通知されるようになり、最終的には "デプロイが完了しました" と報告されます。 次のステップの「リソースへ移動する」を選択:
BLOB ストレージの作成
次に、2 つの BLOB コンテナーが必要です。1 つは入力用で、もう 1 つは出力用です。
- [リソースに移動] ボタンから、リスト メニューを含むパネルが左側に表示されるページに移動します。 [Blob service] カテゴリの下のリストで、[コンテナー] を選択します:
- [+ コンテナー] ボタンを押して、入力用の BLOB ストレージ コンテナーを作成します。 作成時には、次の設定を使用します。
- [名前] = arrinput
- [パブリック アクセス レベル] = 非公開
- コンテナーが作成されたら、[+ コンテナー] を再度選択し、出力用コンテナーに対してこれらの設定を繰り返します:
- [名前] = arroutput
- [パブリック アクセス レベル] = 非公開
これで、2 つの BLOB ストレージ コンテナーが作成されました。
変換を実行する
モデルの変換をトリガーするには、3 つの方法があります。
1. ARRT ツールを使用した変換
変換を開始してレンダリングされた結果を操作するための ARRT という UI ベースのツールがあります。
2. PowerShell スクリプトを使用した変換
アセット変換サービスの呼び出しを簡単にするため、ユーティリティ スクリプトが用意されています。 それは Scripts フォルダーにあり、Conversion.ps1 と呼ばれています。
具体的には、このスクリプトは次のように動作します。
- 指定されたディレクトリ内のすべてのファイルを、ローカル ディスクから入力用ストレージ コンテナーにアップロードし、
-
資産変換 REST API を呼び出し、
- この API は、入力ストレージ コンテナーからデータを取得し、変換を開始して変換 ID を返し、
- 変換プロセスが成功または失敗で終了するまで、取得した変換 ID を使用して変換状態 API をポーリングし、
- 出力用ストレージ内の変換されたアセットへのリンクを取得します。
このスクリプトは、Scripts\arrconfig.json というファイルから構成を読み取ります。 この JSON ファイルをテキスト エディターで開きます。
{
"accountSettings": {
"arrAccountId": "8*******-****-****-****-*********d7e",
"arrAccountKey": "R***************************************l04=",
"arrAccountDomain": "<select from available regions: australiaeast, eastus, eastus2, japaneast, northeurope, southcentralus, southeastasia, uksouth, westeurope, westus2 or specify the full url>"
},
"renderingSessionSettings": {
"remoteRenderingDomain": "<select from available regions: australiaeast, eastus, eastus2, japaneast, northeurope, southcentralus, southeastasia, uksouth, westeurope, westus2 or specify the full url>"
},
"assetConversionSettings": {
"localAssetDirectoryPath": "D:\\tmp\\robot",
"resourceGroup": "ARR_Tutorial",
"storageAccountName": "arrexamplestorage",
"blobInputContainerName": "arrinput",
"inputFolderPath": "robotConversion",
"inputAssetPath": "robot.fbx",
"blobOutputContainerName": "arroutput",
"outputFolderPath":"converted/robot",
"outputAssetFileName": "robot.arrAsset"
}
}
accountSettings グループ 内の構成 (アカウント ID、キー、およびドメイン)は、クイックスタート「Unity によるモデルのレンダリング」の資格情報と同様に入力する必要があります。
renderingSessionSettings グループの全構成 (domain、vmSize、maxLeaseTime) は、「PowerShell スクリプトの例」で確認できます。 vmSize と maxLeaseTime は変換に重要ではありません。変換には影響しないため、省略できます。
assetConversionSettings グループ内では、resourceGroup、blobInputContainerName、blobOutputContainerName を必ず変更してください。 arrtutorialstorage の値は、ストレージ アカウントの作成時に選択した一意の名前で置き換える必要があります。
localAssetDirectoryPath を変更して、変換対象のモデルが含まれるディスク上のディレクトリを指すようにします。 パス内のバックスラッシュ ("\") は、二重のバックスラッシュ ("\\") を使用して正しくエスケープするように注意してください。
サービスが、localAssetDirectoryPath で指定されているパスのすべてのデータを、inputFolderPath によって指定されたサブパスにある blobInputContainerName という BLOB コンテナーにアップロードします。 構成例では、サービスが "D:\tmp\robot" ディレクトリのコンテンツを、パス "robotConversion" のストレージ アカウント "arrtutorialstorage" にある BLOB コンテナー "arrinput" にアップロードします。 既存のファイルは上書きされます。
inputAssetPath を、変換するモデルのパスに変更します。パスは localAssetDirectoryPath に対する相対パスです。 パスの区切り記号には、"\" ではなく "/" を使用します。 そのため、"D:\tmp\robot" に直接配置されている "robot.fbx" ファイルには "robot.fbx" を使用します。
モデルは、変換されると blobOutputContainerName によって指定されたストレージ コンテナーに書き戻されます。 サブパスは、オプションの outputFolderPath を使用して指定できます。 例では、サービスが結果の "robot.arrAsset" を "converted/robot" にある出力用の BLOB コンテナーにコピーします。
構成設定 outputAssetFileName は、変換された資産の名前を決定します。パラメーターは省略可能であり、指定されていない場合、サービスは入力ファイル名を使用して出力名を生成します。
PowerShell を開き、「前提条件」に記載されているとおり Azure PowerShell がインストールされていることを確認します。 そして、次のコマンドでご自分のサブスクリプションにログインし、画面上の指示に従います。
Connect-AzAccount
注意
組織に複数のサブスクリプションがある場合は、SubscriptionId および Tenant 引数の指定が必要になることがあります。 詳細については、Connect-AzAccount のドキュメントを参照してください。
azure-remote-rendering\Scripts
ディレクトリに移動して、変換スクリプトを実行します。
.\Conversion.ps1 -UseContainerSas
このような結果が表示されます。
3. API 呼び出しによる変換
C# および C++ API のどちらにも、サービスと対話するためのエントリ ポイントが用意されています。
- C# RemoteRenderingClient.StartAssetConversionAsync()
- C++ RemoteRenderingClient::StartAssetConversionAsync()
新しいモデルをクイックスタート サンプル アプリに挿入する
変換スクリプトによって、変換されたモデルの Shared Access Signature (SAS) URI が生成されます。 これで、この URI をモデル名としてクイックスタートのサンプル アプリにコピーできるようになりました (「クイックスタート: Unity によるモデルのレンダリング」を参照してください)。
このサンプルは、カスタム モデルを読み込んでレンダリングするようになっています。
省略可能:SAS URI を再作成する
変換スクリプトによって作成された SAS URI は、24 時間後に期限が切れます。 ただし、この有効期限が切れた後に、モデルを再度変換する必要はありません。 代わりに、次の手順で説明するように、ポータルで新しい SAS を作成できます。
- Azure portal にサインインします。
- お使いのストレージ アカウントリソースを選択します:
次のスクリーンで、左側のパネルにある [ストレージ エクスプローラー] を選択し、arroutput BLOB ストレージ コンテナー内にある実際の出力モデル (.arrAsset ファイル) を見つけます。 対象のファイルを右クリックし、コンテキスト メニューから [Shared Access Signature の取得] を選択します。
新しい画面が開き、そこで有効期限を選択できます。 [作成] をクリックし、次のダイアログに表示される URI をコピーします。 この新しい URI により、スクリプトによって作成された一時 URI が置き換えられます。
次のステップ
これで、基本的な知識が得られたので、さらに詳しい知識を得るためのチュートリアルをご覧ください。
モデルの変換の詳細を学びたい場合は、モデル変換 REST API をチェックしてみてください。