你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:转换用于渲染的模型
在快速入门:使用 Unity 渲染模型中,你已了解如何使用 Unity 示例项目来渲染某个内置模型。
本指南演示如何转换你自己的模型,涉及到以下步骤:
- 设置用于输入和输出的 Azure Blob 存储帐户
- 上传并转换一个用于 Azure 远程渲染的 3D 模型
- 在应用程序中包含要渲染的已转换 3D 模型
先决条件
- 完整快速入门:使用 Unity 渲染模型
- 对于使用 PowerShell 脚本进行的转换:安装 Azure PowerShell(文档)
- 以管理员权限打开 PowerShell
- 运行:
Install-Module -Name Az -AllowClobber
概述
服务器上的渲染器无法直接处理 FBX 或 GLTF 等源模型格式。 它要求模型采用专属的二进制格式。 转换服务将使用 Azure Blob 存储中的模型,并将转换后的模型写回到所提供的 Azure Blob 存储容器。
需要:
- Azure 订阅
- 订阅中的“StorageV2”帐户
- 输入模型的 Blob 存储容器
- 输出数据的 Blob 存储容器
- 要转换的模型,具体请参阅示例模型
- 查看支持的源格式列表
- 要使用示例转换脚本,请确保准备好一个包含模型和所有外部依赖项(例如外部纹理或几何结构)的输入文件夹
Azure 设置
如果你没有 Azure 帐户,请转到 Azure 入门,选择“免费帐户”选项,然后按照说明创建一个帐户。
拥有 Azure 帐户后,登录到 Azure 门户。
创建存储帐户
若要创建 Blob 存储,首先需要一个存储帐户。
- 要创建资源,请选择“创建资源”:
- 在新屏幕中,选择左侧的“存储”,然后在下一列中选择“存储帐户 - Blob、文件、表、队列”:
- 单击此按钮显示以下屏幕,其中包含要填写的存储属性:
- 按如下方式填写表单:
- 通过下拉框下方的链接创建一个新的资源组,并将其 命名为 ARR_Tutorial
- 对于“存储帐户名称”,请输入唯一名称。 该名称必须全局唯一。 如果该名称已被占用,则会显示错误消息。 对于本快速入门,我们将存储帐户命名为 arrtutorialstorage。 如果你在本快速入门中使用了其他名称,则需要相应地将上述名称替换为自己的名称。
- 选择离你较近的区域。 最好是使用在其他快速入门中设置渲染时所用的同一区域。
- “性能”设置为“高级”。 “标准”也有效,但在加载模型时,加载时间特征较低。
- “高级帐户类型”设置为“阻止 blob”
- “冗余”设置为“区域冗余存储 (ZRS)”
不必更改其他选项卡中的属性,因此可以继续选择“查看 + 创建”,然后按照相应的步骤完成设置。
现在,网站会告知部署进度,并且最终会报告“部署已完成”。 选择“转到资源”以执行后续步骤:
创建 Blob 存储
接下来,需要两个 Blob 容器,一个用于输入,一个用于输出。
- 按前面所述单击“转到资源”按钮后,会进入一个页面,其左侧显示了一个包含列表菜单的面板。 在“Blob 服务”类别下的列表中,选择“容器”:
- 按“+ 容器”按钮创建输入 Blob 存储容器。 创建该容器时,请使用以下设置:
- 名称 = arrinput
- 公共访问级别 = 私有
- 创建该容器后,再次选择“+ 容器”,并针对输出容器重复使用这些设置:
- 名称 = arroutput
- 公共访问级别 = 私有
现在应已有两个 Blob 存储容器:
运行转换
可通过三种不同的方法来触发模型转换:
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"
}
}
应该以类似于使用 Unity 渲染模型快速入门中所述的凭据填写 accountSettings 组(帐户 ID、密钥和域)中的配置(帐户 ID 和密钥)。
可以在 PowerShell 示例脚本中查看 renderingSessionSettings 组(域、vmSize 和 maxLeaseTime)的完整配置。 vmSize 和 maxLeaseTime 对于转换并不重要,可以省略,因为它们并不影响转换。
在 assetConversionSettings 组中,请确保更改 resourceGroup、blobInputContainerName 和 blobOutputContainerName。 需将 arrtutorialstorage 的值替换为在创建存储帐户期间选取的唯一名称。
将 localAssetDirectoryPath 更改为指向磁盘上包含要转换的模型的目录。 请小心使用双反斜杠(“\\”)来正确转义路径中的反斜杠(“\”)。
该服务会将 localAssetDirectoryPath 指定的路径中的所有数据上传到 blobInputContainerName Blob 容器中由 inputFolderPath 指定的子路径下。 在示例配置中,该服务将“D:\tmp\robot”目录的内容上传到存储帐户“arrtutorialstorage”的 Blob 容器“arrinput”中的路径“robotConversion”下。 已存在的文件被覆盖。
将 inputAssetPath 更改为要转换的模型的路径 - 该路径是 localAssetDirectoryPath 的相对路径。 使用“/”而不是“\”作为路径分隔符。 因此,对于直接位于“D:\tmp\robot”中的“robot.fbx”文件,请使用“robot.fbx”。
转换模型后,会写回到 blobOutputContainerName 指定的存储容器。 可通过提供可选的 outputFolderPath 来指定子路径。 在此示例中,该服务将生成的“robot.arrAsset”复制到输出 Blob 容器中的“converted/robot”下。
配置设置“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()
向快速入门示例应用中插入新模型
转换脚本将为转换后的模型生成共享访问签名 (SAS) URI。 现在,可将此 URI 作为“模型名称”复制到快速入门示例应用(请参阅快速入门:使用 Unity 渲染模型)。
现在,该示例应会加载并渲染你的自定义模型!
可选:重新创建 SAS URI
转换脚本创建的 SAS URI 将在 24 小时后过期。 不过,在此 URI 过期之后,你不需要再次转换模型。 而可以根据后续步骤中所述,在门户中创建新的 SAS:
- 登录 Azure 门户。
- 选择你的存储帐户资源:
在如下所示的屏幕中,选择左侧面板中的“存储资源管理器”,并在“arroutput”Blob 存储容器中找到你的输出模型(.arrAsset 文件)。 右键单击该文件,并从上下文菜单中选择“获取共享访问签名”:
此时会打开一个新屏幕,在其中可以选择过期日期。 按“创建”,并复制下一个对话框中显示的 URI。 这一新 URI 将替换脚本创建的临时 URI。
后续步骤
了解基础知识后,接下来请查看我们的教程获得更深入的知识。
若要了解有关模型转换的详细信息,请查看模型转换 REST API。