Início Rápido: Converter um modelo para renderização
No Início Rápido: Renderizar um modelo com o Unity, você aprendeu a usar o projeto de exemplo do Unity para renderizar um modelo interno.
Este guia mostra como converter seus próprios modelos, envolvendo estas etapas:
- Configurar uma conta de Armazenamento de Blobs do Azure para entrada e saída
- Carregar e converter um modelo 3D para uso com o Azure Remote Rendering
- Incluir o modelo 3D convertido em um aplicativo para renderização
Pré-requisitos
- Concluir Início Rápido: Renderizar um modelo com o Unity
- Para a conversão usando o script do PowerShell: Instalar o Azure PowerShell (documentação)
- Abra um PowerShell com direitos de administrador
- Execute:
Install-Module -Name Az -AllowClobber
Visão geral
O renderizador no servidor não pode trabalhar diretamente com formatos de modelo de origem, como FBX ou GLTF. Em vez disso, ele requer que o modelo esteja em um formato binário proprietário. O serviço de conversão consome modelos do Armazenamento de Blobs do Azure e grava os modelos convertidos de volta em um contêiner de Armazenamento de Blobs do Azure fornecido.
Você precisa de:
- Uma assinatura do Azure
- Uma conta "StorageV2" em sua assinatura
- Um contêiner de Armazenamento de Blobs para o modelo de entrada
- Um contêiner de Armazenamento de Blobs para os dados de saída
- Um modelo a ser convertido; veja modelos de exemplo
- Confira a lista de formatos de origem compatíveis
- Para usar o script de conversão de amostra, prepare uma pasta de entrada que contenha o modelo e todas as dependências externas (como texturas externas ou geometria)
Configuração do Azure
Se você ainda não tiver uma conta, acesse Introdução ao Azure, selecione a opção conta gratuita e siga as instruções.
Depois que você tiver uma conta do Azure, entre no portal do Azure.
Criação da conta de armazenamento
Para criar o Armazenamento de Blobs, primeiro você precisa de uma conta de armazenamento.
- Para criar um, selecione "Criar um recurso":
- Na nova tela, escolha Armazenamento no lado esquerdo e, em seguida, Conta de armazenamento – -blob, arquivo, tabela, fila na próxima coluna:
- Clicar nesse botão abre a seguinte tela com as propriedades de armazenamento para preencher:
- Preencha o formulário da seguinte maneira:
- Crie um Grupo de Recursos no link abaixo da caixa suspensa e dê o nome ARR_Tutorial
- Para o Nome da conta de armazenamento, insira um nome exclusivo. Esse nome deve ser globalmente exclusivo. Uma mensagem de erro será mostrada se o nome já estiver sendo usado. No escopo deste início rápido, nós o nomeamos arrtutorialstorage. Sendo assim, você precisa substituir esse nome pelo seu nome, para o caso de outra ocorrência neste início rápido.
- Selecione uma Região próxima de você. O ideal é usar a mesma região usada para configurar a renderização no outro início rápido.
- Desempenho definido como 'Premium'. O “Standard” funciona também, mas tem características de tempo de carregamento mais baixas ao carregar um modelo.
- Tipo de conta Premium definido como 'Bloquear blobs'
- Redundância definida como 'ZRS (armazenamento com redundância de zona)'
Nenhuma das propriedades das outras guias precisa ser alterada, portanto você pode prosseguir com "Examinar + criar" e, em seguida, seguir as etapas para concluir a configuração.
Agora o site informa sobre o progresso de sua implantação e, eventualmente, informa "Sua implantação foi concluída". Selecione "Ir para o recurso" para ver as próximas etapas:
Criação de Armazenamento de Blobs
Em seguida, precisamos de dois contêineres de blobs, um para entrada e outro para saída.
- Do botão “Ir para o recurso”, você chega a uma página com um painel à esquerda que contém um menu de lista. Nessa lista, na categoria "Serviço Blob", selecione "Contêineres":
- Pressione o botão "+ Contêiner" para criar o contêiner de Armazenamento de Blobs de entrada. Use as seguintes configurações ao criá-lo:
- Nome = arrinput
- Nível de acesso público = Privado
- Depois que o contêiner tiver sido criado, selecione + Contêiner novamente e repita essas configurações para o contêiner de saída:
- Nome = arroutput
- Nível de acesso público = Privado
Agora você deve ter dois contêineres de Armazenamento de Blobs:
Executar a conversão
Há três maneiras distintas de disparar uma conversão de modelo:
1. Conversão por meio da ferramenta ARRT
Há uma ferramenta baseada em interface do usuário chamada ARRT para iniciar conversões e interagir com o resultado renderizado.
2. Conversão por meio de um script do PowerShell
Para facilitar a chamada do serviço de conversão de ativos, fornecemos um script de utilitário. Ele está localizado na pasta Scripts e é chamado de Conversion.ps1.
Em particular, esse script
- carrega todos os arquivos de um determinado diretório do disco local para o contêiner de armazenamento de entrada,
- chama a API REST de conversão de ativos
- essa api recupera os dados do contêiner de armazenamento de entrada, inicia uma conversão e retorna uma ID de conversão,
- sonda a API de status de conversão com a ID de conversão recuperada até que o processo de conversão seja encerrado com êxito ou falha,
- recupera um link do ativo convertido no armazenamento de saída.
O script lê sua configuração no arquivo Scripts\arrconfig.json. Abra esse arquivo JSON em um editor de texto.
{
"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"
}
}
A configuração no grupo accountSettings (ID da conta, chave e domínio) deve ser preenchida de maneira análoga às credenciais no Início rápido Renderizar um modelo com o Unity.
Uma configuração completa do grupo renderingSessionsSettings (domínio, vmSize e maxLeaseTime) pode ser vista nos Scripts de exemplo do PowerShell. O vmSize e maxLeaseTime não são importantes para conversão e podem ser omitidos, pois não afetam a conversão.
Dentro do grupo assetConversionSettings, altere resourceGroup, blobInputContainerName e blobOutputContainerName. O valor arrtutorialstorage precisa ser substituído pelo nome exclusivo que você escolheu durante a criação da conta de armazenamento.
Altere localAssetDirectoryPath para apontar para o diretório no disco que contém o modelo que você pretende converter. Tenha cuidado para escapar corretamente as barras invertidas ("\") no caminho, usando barras invertidas duplas ("\\").
O serviço carrega todos os dados do caminho fornecidos em localAssetDirectoryPath ao contêiner de blob blobInputContainerName em um subcaminho fornecido pelo inputFolderPath. Com a configuração de exemplo, o serviço carrega o conteúdo do diretório “D:\tmp\robot” no contêiner de blob “arrinput” da conta de armazenamento “arrtutorialstorage” no caminho “robotConversion”. Os arquivos já existentes são substituídos.
Altere inputAssetPath para o caminho do modelo a ser convertido – o caminho é relativo a localAssetDirectoryPath. Use "/" em vez de "\" como o separador de caminho. Portanto, para um arquivo "robot.fbx" localizado diretamente em "D:\tmp\robot", use "robot.fbx".
Depois que o modelo for convertido, ele será gravado no contêiner de armazenamento fornecido por blobOutputContainerName. Um subcaminho pode ser especificado fornecendo o outputFolderPath opcional. No exemplo, o serviço copia o “robot.arrAsset” resultante para o contêiner de blob de saída em “converted/robot”.
A definição de configuração outputAssetFileName determina o nome do ativo convertido – o parâmetro é opcional e, se não for especificado, o serviço usa o nome do arquivo de entrada para gerar um nome de saída.
Abra um PowerShell, confirme se instalou o Azure PowerShell conforme mencionado nos pré-requisitos. Em seguida, faça logon em sua assinatura com o seguinte comando e siga as instruções na tela:
Connect-AzAccount
Observação
Caso sua organização tenha mais de uma assinatura, talvez seja necessário especificar os argumentos SubscriptionId e Tenant. Encontre detalhes na Documentação sobre Connect-AzAccount.
Altere para o diretório azure-remote-rendering\Scripts
e execute o script de conversão:
.\Conversion.ps1 -UseContainerSas
Você deverá ver algo como:
3. Conversão por meio de chamadas à API
Tanto a API do C# quanto a do C++ fornecem um ponto de entrada para interagir com o serviço:
- C# RemoteRenderingClient.StartAssetConversionAsync()
- C++ RemoteRenderingClient::StartAssetConversionAsync()
Inserir um novo modelo no aplicativo de exemplo do guia de início rápido
O script de conversão gera um URI de SAS (Assinatura de Acesso Compartilhado) para o modelo convertido. Agora você pode copiar esse URI como o Nome do Modelo no aplicativo de exemplo do início rápido (consulte o Início Rápido: Renderizar um modelo com o Unity).
Agora o exemplo deve carregar e renderizar seu modelo personalizado!
Opcional: Recriando um URI de SAS
O URI de SAS criado pelo script de conversão expirará após 24 horas. No entanto, depois de expirar, você não precisa converter seu modelo novamente. Em vez disso, você pode criar uma SAS no portal, conforme descrito nas próximas etapas:
- Entre no portal do Azure.
- Selecione o recurso da sua Conta de armazenamento:
Na tela a seguir, selecione Gerenciador de armazenamento no painel esquerdo e localize o modelo de saída (arquivo.arrAsset) no contêiner de Armazenamento de Blobs arroutput. Clique com o botão direito do mouse no arquivo e selecione Obter Assinatura de Acesso Compartilhado no menu de contexto:
Uma nova tela é aberta, em que você pode selecionar uma data de expiração. Pressione Criare copie o URI mostrado na próxima caixa de diálogo. Esse novo URI substitui o URI temporário que o script criou.
Próximas etapas
Agora que você conhece os conceitos básicos, veja nossos tutoriais para obter um conhecimento mais aprofundado.
Se você quiser aprender os detalhes da conversão de modelo, confira a API REST de conversão de modelo.