Краткое руководство. Преобразование модели для отрисовки
В статье Краткое руководство. Отрисовка модели с помощью Unity описано, как использовать пример проекта Unity для отрисовки встроенной модели.
В этом руководстве показано, как преобразовать собственные модели, выполнив следующие действия:
- настроить учетную запись хранения больших двоичных объектов Azure для входных и выходных данных;
- отправить и преобразовать трехмерную модель для использования в Удаленной отрисовки Azure;
- включить преобразованную трехмерную модель в приложение для отрисовки.
Предварительные требования
- См. подробнее об использовании Отрисовка модели с помощью Unity
- Для преобразования с помощью скрипта PowerShell: Установите Azure PowerShell.
- Откройте консоль PowerShell с правами администратора.
- Выполните
Install-Module -Name Az -AllowClobber
.
Обзор
Отрисовщик на сервере не может работать непосредственно с исходными форматами модели, такими как FBX или GLTF. Он ожидает модель в собственном двоичном формате. Служба преобразования использует модели из хранилища BLOB-объектов Azure и записывает преобразованные модели обратно в предоставленный контейнер хранилища BLOB-объектов Azure.
Вам необходимы:
- Подписка Azure
- учетная запись StorageV2 в этой подписке;
- контейнер хранилища BLOB-объектов для входной модели;
- контейнер хранилища BLOB-объектов для выходных данных;
- модель для преобразования (см. примеры моделей).
- См. также список поддерживаемых исходных форматов.
- Чтобы использовать пример скрипта преобразования, подготовьте входную папку с моделью и всеми внешними зависимостями, включая внешние текстуры и геометрические объекты.
Настройка Azure
Если у вас еще нет учетной записи, перейдите в раздел Начало работы с Azure, выберите бесплатную учетную запись и следуйте инструкциям.
Получив учетную запись Azure, войдите в портал Azure.
создание учетной записи хранения;
Чтобы создать хранилище BLOB-объектов, вам нужна учетная запись хранения.
- Чтобы создать его, выберите "Создать ресурс":
- На новом экране слева выберите Хранилище, а затем Учетная запись хранения — BLOB-объект, файл, таблица, очередь из следующего столбца:
- При нажатии этой кнопки откроется следующий экран со свойствами хранилища для заполнения:
- Заполните форму, как показано ниже.
- Создайте новую группу ресурсов по ссылке с помощью ссылки под раскрывающимся списком и присвойте ей имя ARR_Tutorial.
- Введите уникальное имя в поле Имя учетной записи хранения. Это имя должно быть глобально уникальным. Если имя уже принято, отображается сообщение об ошибке. В этом кратком руководстве мы используем имя arrtutorialstorage. Вам нужно будет заменить его собственным именем во всех соответствующих местах.
- Выберите регион рядом с вами. В идеале используйте тот же регион , который использовался для настройки отрисовки в другом кратком руководстве.
- Для производительности задано значение "Премиум". "Стандартный" также работает, но имеет более низкие характеристики времени загрузки при загрузке модели.
- Для типа учетной записи Premium задано значение "Блочные BLOB-объекты"
- Для избыточности задано значение "Хранилище, избыточное между зонами (ZRS)"
Вам не нужно изменять свойства на других вкладках, поэтому щелкните Просмотр и создание, чтобы выполнить действия для завершения установки.
Теперь веб-сайт будет информировать вас о ходе развертывания, по завершении которого отобразится сообщение "Развертывание выполнено". Выберите "Перейти к ресурсу", чтобы выполнить следующие действия:
Создание хранилища BLOB-объектов
Теперь нам нужны два контейнера BLOB-объектов: один для входных и один для выходных данных.
- С помощью кнопки "Перейти к ресурсу" вы перейдете на страницу с панелью слева, содержащей меню списка. В этом списке в категории "Служба BLOB-объектов" выберите "Контейнеры":
- Нажмите кнопку + Контейнер, чтобы создать контейнер хранилища BLOB-объектов для входных данных. При создании укажите следующие параметры:
- Имя — arrinput.
- Уровень общего доступа — частный.
- После создания контейнера снова выберите + Контейнер и повторите попытку со следующими параметрами для выходного контейнера:
- Имя — arroutput.
- Уровень общего доступа — частный.
Теперь у вас есть два контейнера хранилища BLOB-объектов.
Выполнение преобразования
Есть три способа активации преобразования модели:
1. Преобразование с помощью средства 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.
Полную конфигурацию группы renderingSessionSettings (домен, vmSize и maxLeaseTime) можно увидеть в примерах сценариев PowerShell. VmSize и maxLeaseTime не важны для преобразования и могут быть опущены, так как они не влияют на преобразование.
В группе assetConversionSettings обязательно измените resourceGroup, blobInputContainerName и blobOutputContainerName. Значение arrtutorialstorage необходимо заменить уникальным именем, выбранным во время создания учетной записи хранения.
Измените значение localAssetDirectoryPath так, чтобы оно указывало на каталог на диске с моделью для преобразования. Будьте внимательны, чтобы правильно экранировать обратные косые черти ("\") в пути с помощью двойной обратной косой черты ("\\").
Служба передает все данные из пути, заданного в localAssetDirectoryPath , в контейнер blobInputContainerName в подпуть, заданный inputFolderPath. В примере конфигурации служба передает содержимое каталога "D:\tmp\robot" в контейнер больших двоичных объектов "arrinput" учетной записи хранения "arrtutorialstorage" по пути "robotConversion". Уже существующие файлы перезаписываются.
В inputAssetPath укажите путь к преобразуемой модели относительно пути localAssetDirectoryPath. Используйте "/" вместо "\" в качестве разделителя пути. Поэтому для файла robot.fbx, который находится непосредственно в папке "D:\tmp\robot", используйте "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.
Как API C#, так и API C++ предоставляют точку входа для взаимодействия со службой:
- C# RemoteRenderingClient.StartAssetConversionAsync()
- C++ RemoteRenderingClient::StartAssetConversionAsync()
Вставка новой модели в пример приложения быстрого запуска
Этот скрипт преобразования создает URI подписанного URL-адреса (SAS) для преобразованной модели. Этот URI можно скопировать и вставить как имя модели в примере приложения для быстрого начала работы (см. Краткое руководство. Отрисовка модели с помощью Unity).
Теперь этот пример будет загружать и отображать предоставленную вами модель.
Необязательное действие: Повторное создание URI SAS
Срок действия URI SAS, созданного скриптом преобразования, истекает через 24 часа. Однако после истечения срока действия вам не нужно снова преобразовывать модель. Достаточно создать на портале новый SAS, как описано ниже.
- Войдите на портал Azure.
- Выберите ресурс учетной записи хранения :
На следующем экране выберите Обозреватель службы хранилища на панели слева и найдите выходную модель (файл arrAsset ) в контейнере хранилища BLOB-объектов arroutput . Щелкните файл правой кнопкой мыши и выберите в контекстном меню пункт Получить подписанный URL-адрес :
Откроется новый экран, где вы можете указать дату окончания срока действия. Щелкните Создать и скопируйте URI, который отобразится в следующем диалоговом окне. Этот новый URI заменяет собой временный адрес, созданный скриптом.
Дальнейшие действия
Итак, вы изучили основы и можете переходить к следующим руководствам с более подробной информацией.
Если вам нужно больше сведений о преобразовании моделей, см. документацию по REST API преобразования моделей.