Início Rápido: Converter um modelo para composição
No Início Rápido: Compor um modelo com o Unity, aprendeu a utilizar o projeto de exemplo do Unity para compor um modelo incorporado.
Este guia mostra como converter os seus próprios modelos, o que implica estes passos:
- Configurar uma conta de armazenamento de blobs do Azure para entrada e saída
- Carregar e converter um modelo 3D para utilização com o Azure Remote Rendering
- Incluir o modelo 3D convertido numa aplicação para composição
Pré-requisitos
- Início Rápido Completo: Compor um modelo com o Unity
- Para a conversão com o script do PowerShell: Instalar Azure PowerShell (documentação)
- Abrir um PowerShell com direitos de administrador
- Execute:
Install-Module -Name Az -AllowClobber
Descrição Geral
O compositor no servidor não pode funcionar diretamente com formatos de modelo de origem, como FBX ou GLTF. Em vez disso, requer que o modelo esteja num formato binário proprietário. O serviço de conversão consome modelos do armazenamento de blobs do Azure e escreve modelos convertidos novamente num contentor de armazenamento de blobs do Azure fornecido.
É necessário:
- Uma subscrição do Azure
- Uma conta "StorageV2" na sua subscrição
- Um contentor de armazenamento de blobs para o modelo de entrada
- Um contentor de armazenamento de blobs para os dados de saída
- Um modelo para converter, veja modelos de exemplo
- Veja a lista de formatos de origem suportados
- Para utilizar o script de conversão de exemplo, certifique-se de que prepara uma pasta de entrada que contém o modelo e todas as dependências externas (como texturas externas ou geometria)
Configuração do Azure
Se ainda não tiver uma conta, aceda a Introdução ao Azure, selecione a opção conta gratuita e siga as instruções.
Assim que tiver uma conta do Azure, inicie sessão no portal do Azure.
Criação da conta de armazenamento
Para criar o armazenamento de blobs, primeiro precisa de uma conta de armazenamento.
- Para criar um, selecione "Criar um recurso":
- No novo ecrã, selecione Armazenamento no lado esquerdo e, em seguida , Conta de armazenamento – blob, ficheiro, tabela, fila da coluna seguinte:
- Clicar neste botão apresenta o seguinte ecrã com propriedades de armazenamento para preencher:
- Preencha o formulário da seguinte forma:
- Crie um novo Grupo de Recursos a partir da ligação abaixo da caixa pendente e dê um nome a este ARR_Tutorial
- Para o nome da conta de armazenamento, introduza um nome exclusivo aqui. Este nome tem de ser globalmente exclusivo. É apresentada uma mensagem de erro se o nome já estiver a ser utilizado. No âmbito deste início rápido, atribuímos-lhe o nome arrtutorialstorage. Em conformidade, tem de substituí-lo pelo seu nome para qualquer ocorrência neste início rápido.
- Selecione uma Região perto de si. Idealmente, utilize a mesma região utilizada para configurar a composição no outro início rápido.
- Desempenho definido como "Premium". O "Standard" também funciona, mas tem características de tempo de carregamento mais baixos ao carregar um modelo.
- Tipo de conta Premium definido como "Blobs de blocos"
- Redundância definida como "Armazenamento com redundância entre zonas (ZRS)"
Nenhuma das propriedades nos outros separadores tem de ser alterada, pelo que pode continuar com "Rever + criar" e, em seguida, seguir os passos para concluir a configuração.
O site informa-o agora sobre o progresso da sua implementação e comunica "A sua implementação está concluída" eventualmente. Selecione "Ir para recurso" para os passos seguintes:
Criação de armazenamento de blobs
Em seguida, precisamos de dois contentores de blobs, um para entrada e outro para saída.
- No botão "Ir para recurso ", chega a uma página com um painel à esquerda que contém um menu de lista. Nessa lista, na categoria "Serviço blob ", selecione "Contentores":
- Prima o botão "+ Contentor" para criar o contentor de armazenamento de blobs de entrada . Utilize as seguintes definições ao criá-la:
- Nome = arrinput
- Nível de acesso público = Privado
- Depois de o contentor ter sido criado, selecione + Contentor novamente e repita com estas definições para o contentor de saída :
- Nome = arroutput
- Nível de acesso público = Privado
Agora, deverá ter dois contentores de armazenamento de blobs:
Executar a conversão
Existem três formas distintas de acionar uma conversão de modelo:
1. Conversão através da ferramenta ARRT
Existe uma ferramenta baseada na IU chamada ARRT para iniciar conversões e interagir com o resultado composto.
2. Conversão através de um script do PowerShell
Para facilitar a chamada do serviço de conversão de recursos, fornecemos um script de utilidade. Está localizado na pasta Scripts e chama-seConversion.ps1.
Em particular, este script
- carrega todos os ficheiros num determinado diretório do disco local para o contentor de armazenamento de entrada,
- chama a API REST de conversão de recursos
- esta api obtém os dados do contentor de armazenamento de entrada, inicia uma conversão e devolve um ID de conversão,
- consulta a API de estado de conversão com o ID de conversão obtido até que o processo de conversão termine com êxito ou falha,
- obtém uma ligação para o recurso convertido no armazenamento de saída.
O script lê a configuração do ficheiro Scripts\arrconfig.json. Abra esse ficheiro JSON num 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 análoga às credenciais no início rápido Compor um modelo com o Unity.
Pode ver uma configuração completa do grupo renderingSessionSettings (domínio, vmSize e maxLeaseTime) nos scripts de Exemplo do PowerShell. O vmSize e maxLeaseTime não são importantes para a conversão e podem ser omitidos, uma vez que não afetam a conversão.
No grupo assetConversionSettings , certifique-se de que altera resourceGroup, blobInputContainerName e blobOutputContainerName. O valor para arrtutorialstorage tem de ser substituído pelo nome exclusivo que 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 pretende converter. Tenha cuidado para escapar corretamente das barras invertidas ("\") no caminho com barras invertidas duplas ("\\").
O serviço carrega todos os dados do caminho indicado no localAssetDirectoryPath para o contentor de blobs blob BlobInputContainerName num subpath fornecido pela inputFolderPath. Com a configuração de exemplo, o serviço carrega o conteúdo do diretório "D:\tmp\robot" para o contentor de blobs "arrinput" da conta de armazenamento "arrtutorialstorage" no caminho "robotConversion". Os ficheiros já existentes estão substituídos.
Altere inputAssetPath para o caminho do modelo a converter - o caminho é relativo a localAssetDirectoryPath. Utilize "/" em vez de "\" como separador de caminho. Assim, para um ficheiro "robot.fbx", que está localizado diretamente em "D:\tmp\robot", utilize "robot.fbx".
Assim que o modelo for convertido, é escrito novamente no contentor de armazenamento fornecido pelo blobOutputContainerName. Pode especificar um subpath ao fornecer o outputFolderPath opcional. No exemplo, o serviço copia o "robot.arrAsset" resultante para o contentor de blobs de saída em "convertido/robô".
A definição de configuração outputAssetFileName determina o nome do recurso convertido - o parâmetro é opcional e, se não for especificado, o serviço utiliza o nome do ficheiro de entrada para gerar um nome de saída.
Abra um PowerShell, certifique-se de que instalou o Azure PowerShell conforme mencionado nos pré-requisitos. Em seguida, inicie sessão na sua subscrição com o seguinte comando e siga as instruções apresentadas no ecrã:
Connect-AzAccount
Nota
Caso a sua organização tenha mais do que uma subscrição, poderá ter de especificar os argumentos SubscriptionId e Tenant. Encontre detalhes na documentação Connect-AzAccount.
Mude para o azure-remote-rendering\Scripts
diretório e execute o script de conversão:
.\Conversion.ps1 -UseContainerSas
Deverá ver algo assim:
3. Conversão através de chamadas à API
Tanto o C# como a API C++ fornecem um ponto de entrada para interagir com o serviço:
- C# RemoteRenderingClient.StartAssetConversionAsync()
- C++ RemoteRenderingClient::StartAssetConversionAsync()
Inserir um novo modelo na Aplicação de Exemplo de Início Rápido
O script de conversão gera um URI de Assinatura de Acesso Partilhado (SAS) para o modelo convertido. Agora, pode copiar este URI como o Nome do Modelo para a aplicação de exemplo de início rápido (veja Início Rápido: Compor um modelo com o Unity).
O exemplo deverá agora carregar e compor o seu modelo personalizado!
Opcional: recriar um URI de SAS
O URI de SAS criado pelo script de conversão expira após 24 horas. No entanto, depois de expirar, não precisa de converter o modelo novamente. Em vez disso, pode criar uma nova SAS no portal, conforme descrito nos passos seguintes:
- Inicie sessão no portal do Azure.
- Selecione o recurso da conta de Armazenamento :
No ecrã seguinte, selecione Explorador de armazenamento no painel esquerdo e localize o modelo de saída (ficheiro.arrAsset ) no contentor de armazenamento de blobs arroutput . Clique com o botão direito do rato no ficheiro e selecione Obter Assinatura de Acesso Partilhado no menu de contexto:
É aberto um novo ecrã onde pode selecionar uma data de expiração. Prima Criar e copie o URI apresentado na caixa de diálogo seguinte. Este novo URI substitui o URI temporário que o script criou.
Passos seguintes
Agora que já conhece as noções básicas, veja os nossos tutoriais para obter conhecimentos mais aprofundados.
Se quiser saber os detalhes da conversão do modelo, veja a API REST de conversão de modelos.