分享方式:


快速入門:轉換模型以進行轉譯

快速入門:使用 Unity 轉譯模型中,您已了解如何使用 Unity 範例專案來轉譯內建模型。

本指南說明如何轉換您自己的模型,需要下列步驟:

  • 為輸入和輸出設定 Azure Blob 儲存體帳戶
  • 上傳和轉換3D 模型以便搭配 Azure 遠端轉譯使用
  • 在應用程式中包含轉換後的3D 模型以進行轉譯

必要條件

概觀

伺服器上的轉譯器無法直接搭配來源模型格式 (例如 FBX 或 GLTF) 運作。 然而,其要求模型採用專屬的二進位格式。 轉換服務會使用 Azure Blob 儲存體中的模型,並將已轉換的模型寫回所提供的 Azure Blob 儲存體容器。

您需要:

  • Azure 訂用帳戶
  • 訂用帳戶中的 'StorageV2' 帳戶
  • 輸入模型的 Blob 儲存體容器
  • 輸出資料的 Blob 儲存體容器
  • 要轉換的模型,請參閱範例模型
    • 請參閱支援的來源格式清單
    • 若要使用範例轉換指令碼,請務必準備一個輸入資料夾,其中包含模型和所有外部相依性 (例如外部紋理或幾何)

Azure 設定

如果您還沒有帳戶,請移至開始使用 Azure,選取 [免費帳戶] 選項,然後依照指示操作。

擁有 Azure 帳戶之後,請登入Azure 入口網站

儲存體帳戶建立

若要建立 Blob 儲存體,您必須先有儲存體帳戶。

  1. 若要建立資源,請選取 [建立資源]:

Azure - 新增資源

  1. 在新的畫面中,選擇左側的 [儲存體],然後從下一個資料行中選擇 [儲存體帳戶 - Blob、檔案、資料表、佇列]:

Azure - 新增儲存體

  1. 按一下此按鈕會顯示下列畫面,其中包含要填寫的儲存體屬性:

Azure 設定

  1. 以下列方式填寫表單:
  • 從下拉式方塊下方的連結建立新的資源群組,並將此命名為 ARR_Tutorial
  • 針對 [儲存體帳戶名稱],在此輸入唯一名稱。 此名稱必須是全域唯一的。 如果已取得名稱,就會顯示錯誤訊息。 在本快速入門的範圍中,我們將其命名為 arrtutorialstorage。 因此,您需要以您的名稱取代本快速入門中任何出現的項目。
  • 選取靠近您的 [區域 ]。 在理想情況下,請使用與在其他快速入門中設定轉譯所使用的相同 區域
  • 效能 設定為 'Premium'。 「標準」也可運作,但在載入模型時具有較低的載入時間特性。
  • 進階帳戶類型 設定為 [封鎖 Blob]
  • 備援 設定為 「區域備援儲存體 (ZRS) 」
  1. 其他索引標籤中的屬性都不需要變更,因此您可以繼續進行 [審查 + 建立],然後遵循步驟來完成設定。

  2. 網站現在會通知您有關部署的進度,最後會回報「您的部署已完成」。 針對後續步驟選取 [移至資源 ]:

Azure 儲存體建立完成

Blob 儲存體建立

接下來,我們需要兩個 Blob 容器,一個用於輸入,另一個用於輸出。

  1. [移至資源] 按鈕,您可以前往包含清單功能表左側面板的頁面。 在該清單中的 [Blob 服務] 類別下,選取 [容器]

Azure - 新增容器

  1. 按下 [+ 容器] 按鈕,以建立輸入 Blob 儲存體容器。 建立容器時,請使用下列設定︰
  • 名稱 = arrinput
  • 公用存取層級 = 私人
  1. 建立容器之後,請再次選取 [+ 容器 ],然後針對 輸出 容器重複這些設定:
  • 名稱 = arroutput
  • 公用存取層級 = 私人

您現在應該有兩個 Blob 儲存體容器:

Blob 儲存體設定

執行轉換

有三種不同的方式可觸發模型轉換:

1.透過 ARRT 工具轉換

一個名為 ARRT 的 UI 型工具 可開始轉換,並與轉譯的結果互動。 ARRT ARRT

2.透過 PowerShell 指令碼轉換

為了讓您更輕鬆地呼叫資產轉換服務,我們提供了一個公用程式指令碼。 它位於 [腳本 ] 資料夾中,稱為 Conversion.ps1

特別是,此指令碼會

  • 將指定目錄中的所有檔案從本機磁片上傳至輸入儲存體容器,
  • 呼叫 資產轉換 REST API
    • 此 API 會從輸入儲存體容器擷取資料、啟動轉換並傳回轉換識別碼,
  • 使用擷取的轉換識別碼輪詢轉換狀態 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群組內的設定 (帳戶識別碼、金鑰和網域) 應該與使用 Unity 來轉譯模型中的認證類似。

您可以在PowerShell 範例腳本中看到轉譯 (網域、vmSize和 maxLeaseTime) 的完整設定。 vmSize 和 maxLeaseTime 對於轉換並不重要,而且可以省略,因為它們不會影響轉換。

assetConversionSettings 群組內,請務必變更 resourceGroupblobInputContainerNameblobOutputContainerNamearrtutorialstorage的值必須以您在儲存體帳戶建立期間挑選的唯一名稱取代。

localAssetDirectoryPath 變更為指向磁碟上的目錄,其中包含您想要轉換的模型。 請小心使用雙反斜線 (「\\」) ,在路徑中正確逸出反斜線 (「\」) 。

服務會將localAssetDirectoryPath中指定路徑中的所有資料上傳至inputFolderPath所指定子路徑下的blobInputContainerName Blob 容器。 使用範例設定時,服務會將 「D:\tmp\robot」 目錄的內容上傳至 「robotConversion」 路徑下儲存體帳戶 「arrinput」 的 Blob 容器 「arrinput」。 已覆寫現有的檔案。

inputAssetPath 變更為要轉換的模型路徑 - 此路徑相對於 localAssetDirectoryPath。 使用 「/」 而非 「\」 作為路徑分隔符號。 因此,對於直接位於 「D:\tmp\robot」 中的 「robot.fbx」 檔案,請使用 「robot.fbx」。

轉換模型之後,它會寫回 blobOutputContainerName所提供的儲存體容器。 您可藉由提供選擇性 outputFolderPath 來指定子路徑。 在此範例中,服務會將產生的 「robot.arrAsset」 複製到 「converted/robot」 下的輸出 Blob 容器。

組態設定 outputAssetFileName 會決定已轉換資產的名稱 - 參數是選擇性的,如果未指定,則服務會使用輸入檔案名來產生輸出名稱。

開啟 PowerShell,確定您已如必要條件所述安裝 Azure PowerShell。 然後使用下列命令登入 Azure 訂用帳戶並遵循畫面上的指示操作:

Connect-AzAccount

注意

如果您的組織有多個訂用帳戶,您可能需要指定 SubscriptionId 和 Tenant 引數。 在 Connect-AzAccount documentation 中尋找詳細資料。

切換至 azure-remote-rendering\Scripts 目錄,然後執行轉換指令碼:

.\Conversion.ps1 -UseContainerSas

您應該會看到如下的內容: Conversion.ps1

3.透過 API 呼叫轉換

C# 和 C++ API 都會提供用來與服務互動的進入點:

將新模型插入快速入門範例應用程式

轉換指令碼會為已轉換的模型產生「共用存取簽章 (SAS)」 URI。 您現在可以將此 URI 當作 [模型名稱] 複製到快速入門範例應用程式中 (請參閱快速入門:使用 Unity 轉譯模型)。

在 Unity 中取代模型

此範例現在應該會載入並轉譯您的自訂模型!

選擇性:重新建立 SAS URI

轉換腳本所建立的 SAS URI 會在 24 小時後到期。 不過,在過期之後,您不需要再次轉換模型。 您反而可在入口網站中建立新的 SAS,如後續步驟所述:

  1. 登入 Azure 入口網站
  2. 選取您的 儲存體帳戶 資源:

醒目提示所選儲存體帳戶資源的螢幕擷取畫面。

  1. 在下列畫面中,選取左側面板中的 [儲存體總管],然後在arroutput Blob 儲存體容器中尋找您的輸出模型 (.arrAsset檔案) 。 以滑鼠右鍵按一下檔案,然後從操作功能表中選取 [取得共用存取簽章 ]:

    簽章存取

  2. 新畫面隨即開啟,您可在其中選取到期日。 按下 [建立],然後複製下一個對話方塊中所顯示的 URI。 這個新的 URI 會取代指令碼所建立的暫存 URI。

後續步驟

您現已了解基本概念,請參閱我們的教學課程,以取得更深入的知識。

如果您想要了解模型轉換的詳細資訊,請參閱模型轉換 REST API