Criar modelos 3D para uso em casa
A página inicial do Windows Mixed Reality é o ponto de partida onde os usuários chegam antes de iniciar aplicativos. Ao projetar seu aplicativo para headsets Windows Mixed Reality, use um modelo 3D como inicializador de aplicativos e coloque links profundos 3D na página inicial do Windows Mixed Reality. Este artigo descreve as diretrizes para a criação de modelos 3D compatíveis com a página inicial do Windows Mixed Reality.
Visão geral dos requisitos de ativos
Ao criar modelos 3D para Windows Mixed Reality, há alguns requisitos que todos os ativos devem atender:
- Exportação - Os ativos devem ser entregues no formato de arquivo .glb (binário glTF), .obj ou .fbx
- Modelagem - Os ativos devem ter menos de 10 mil triângulos, não ter mais de 64 nós e 32 submalhas por LOD
- Materiais - As texturas não podem ser maiores que 4096 x 4096 e o menor mapa mip não deve ser maior que 4 em qualquer dimensão
- Animação - As animações não podem ter mais de 20 minutos a 30 FPS (36.000 quadros-chave) e devem conter <= 8192 vértices de destino de transformação
- Otimizando - Os ativos devem ser otimizados usando o WindowsMRAssetConverter. Necessário nas versões <do sistema operacional Windows = 1709* e recomendado nas versões >do sistema operacional Windows = 1803
Observação
O aplicativo Visualizador 3D dá suporte a diferentes formatos e resoluções, mas, em última análise, converte modelos em .glb/glTF antes de exibi-los na página inicial do Realidade Misturada.
O restante deste artigo inclui uma visão geral detalhada desses requisitos e diretrizes extras para garantir que seus modelos funcionem bem com a página inicial do Windows Mixed Reality.
Orientações detalhadas
Exportando modelos
A página inicial do Windows Mixed Reality espera que os ativos 3D sejam entregues usando o formato de arquivo .glb com imagens inseridas e dados binários. Glb é a versão binária do formato glTF, que é um padrão aberto isento de royalties para entrega de ativos 3D mantido pelo grupo Khronos. À medida que o glTF evolui como um padrão do setor para conteúdo 3D interoperável, o mesmo acontecerá com o suporte da Microsoft para o formato em aplicativos e experiências do Windows. Se você ainda não criou um ativo glTF antes, pode encontrar uma lista de exportadores e conversores suportados na página github do grupo de trabalho glTF.
Diretrizes de modelagem
Windows espera que os ativos sejam gerados usando as seguintes diretrizes de modelagem para garantir a compatibilidade com a experiência doméstica de Realidade Misturada. Ao modelar no programa de sua escolha, lembre-se das seguintes recomendações e limitações:
- O eixo para cima deve ser definido como "Y".
- O ativo deve estar voltado para "frente" em direção ao eixo Z positivo.
- Todos os ativos devem ser construídos no plano do solo na origem da cena (0,0,0)
- As Unidades de Trabalho devem ser definidas como medidores e ativos para que os ativos possam ser criados em escala mundial
- Todas as malhas não precisam ser combinadas, mas é recomendável se você estiver direcionando dispositivos com recursos limitados
- Todas as malhas devem compartilhar um material, com apenas um conjunto de texturas sendo usado para todo o ativo
- Os UVs devem ser dispostos em um arranjo quadrado no espaço 0-1. Evite texturas lado a lado, embora sejam permitidas.
- Multi-UVs não são suportados
- Materiais de dupla face não são suportados
Contagens de triângulos e níveis de detalhe (LODs)
A página inicial do Windows Mixed Reality não dá suporte a modelos com mais de 10.000 triângulos. É recomendável triangular suas malhas antes de exportar para garantir que elas não excedam essa contagem. O Windows MR também dá suporte a LODs (níveis de detalhe de geometria) opcionais para garantir uma experiência de alto desempenho e alta qualidade. O WindowsMRAssetConverter ajudará você a combinar 3 versões do seu modelo em um único modelo .glb. O Windows determina qual LOD exibir com base na quantidade de espaço na tela que o modelo está ocupando. Há suporte para apenas 3 níveis de LOD com as seguintes contagens de triângulos recomendadas:
Nível de LOD | Contagem de triângulos recomendada | Contagem máxima de triângulos |
---|---|---|
LOD 0 | 10.000 | 10.000 |
LOD 1 | 5.000 | 10,000 |
LOD 2 | 2\.500 | 10.000 |
Contagens de nós e limites de submalha
A página inicial do Windows Mixed Reality não dá suporte a modelos com mais de 64 nós ou 32 submalhas por LOD. Os nós são um conceito na especificação glTF que definem os objetos na cena. As submalhas são definidas na matriz de primitivas na malha no objeto.
Recurso | Descrição | Máximo suportado | Documentação |
---|---|---|---|
Nós | Objetos na cena glTF | 64 por LOD | Aqui |
Submalhas | Soma de primitivas em todas as malhas | 32 por LOD | Aqui |
Diretrizes de materiais
As texturas devem ser preparadas usando um fluxo de trabalho de rugosidade de metal PBR. Comece criando um conjunto completo de texturas, incluindo Albedo, Normal, Oclusão, Metálico e Rugosidade. Windows Mixed Reality dá suporte a texturas com resoluções de até 4096x4096, mas é recomendável que você crie em 512x512. As texturas devem ser criadas em resoluções em múltiplos de 4. Esse é um requisito para o formato de compactação aplicado às texturas nas etapas de exportação descritas abaixo. Ao gerar mapas mip ou uma textura, o mip mais baixo deve ser no máximo 4x4.
Tamanho de textura recomendado | Tamanho máximo da textura | Mip mais baixo |
---|---|---|
512 x 512 | 4096x4096 | máximo 4x4 |
Mapa de albedo (cor base)
Cor crua sem informações de iluminação. Este mapa também contém as informações de refletância e difusa para superfícies metálicas (branco no mapa metálico) e isolante (preto no mapa metálico), respectivamente.
Normal
Mapa Normal do Espaço Tangente
Mapa de rugosidade
Descreve a microsuperfície do objeto. Branco 1.0 é áspero Preto 0.0 é liso. Este mapa dá ao ativo mais caráter, pois descreve verdadeiramente a superfície. Por exemplo, arranhões, impressões digitais, manchas, sujeira e assim por diante.
Mapa de oclusão de ambiente
Mapa da escala de valor mostrando áreas de luz ocluída, que bloqueia reflexos
Mapa metálico
Informa ao sombreador se algo é de metal ou não. Metal bruto = 1,0 branco Não metal = 0,0 preto. Pode haver valores de cinza de transição que indicam algo cobrindo o metal bruto, como sujeira, mas em geral esse mapa deve ser apenas preto e branco.
Otimizações
Windows Mixed Reality home oferece uma série de otimizações sobre a especificação glTF principal definida usando extensões personalizadas. Essas otimizações são necessárias nas versões <do Windows = 1709 e recomendadas em versões mais recentes do Windows. Você pode otimizar facilmente qualquer modelo glTF 2.0 usando o Windows Mixed Reality Asset Converter disponível no GitHub. Essa ferramenta executará o empacotamento de textura e as otimizações corretas, conforme especificado abaixo. Para uso geral, recomendamos usar o WindowsMRAssetConverter, mas se você precisar de mais controle sobre a experiência e quiser criar seu próprio pipeline de otimização, consulte a especificação detalhada abaixo.
Observação
Para obter uma lista definitiva de quais são as possibilidades para os limites exatos do modelo, consulte o artigo de otimização de modelo 3D para uso em aplicativos do Dynamics 365.
Materiais
Para melhorar o tempo de carregamento de ativos em ambientes de Realidade Misturada, o Windows MR dá suporte à renderização de texturas DDS compactadas empacotadas de acordo com o esquema de empacotamento de textura definido nesta seção. As texturas DDS são referenciadas usando a extensão MSFT_texture_dds. A compactação de texturas é altamente recomendada.
HoloLens
As experiências de realidade misturada baseadas em HoloLens esperam que as texturas sejam empacotadas usando uma configuração de 2 texturas usando a seguinte especificação de empacotamento:
Propriedade glTF | Textura | Esquema de embalagem |
---|---|---|
pbrMetallicRoughness | baseColorTexture | Vermelho (R), Verde (G), Azul (B) |
MSFT_packing_normalRoughnessMetallic | normalRugosidadeMetálicoTextura | Normal (RG), Rugosidade (B), Metálico (A) |
Ao compactar as texturas DDS, a seguinte compactação é esperada em cada mapa:
Textura | Compressão esperada |
---|---|
baseColorTexture, normalRoughnessMetallicTexture | BC7 |
Headsets imersivos (VR)
As experiências Windows Mixed Reality baseadas em computador para headsets imersivos (VR) esperam que as texturas sejam empacotadas usando uma configuração de 3 texturas usando a seguinte especificação de empacotamento:
Sistema operacional >Windows = 1803
Propriedade glTF | Textura | Esquema de embalagem |
---|---|---|
pbrMetallicRoughness | baseColorTexture | Vermelho (R), Verde (G), Azul (B) |
MSFT_packing_occlusionRoughnessMetallic | oclusãoRugosidadeMetálicoTextura | Oclusão (R), Rugosidade (G), Metálico (B) |
MSFT_packing_occlusionRoughnessMetallic | normalTexture | Normal (RG) |
Ao compactar as texturas DDS, a seguinte compactação é esperada em cada mapa:
Textura | Compressão esperada |
---|---|
normalTexture | BC5 |
baseCorTextura, oclusãoRugosidadeMetálicoTextura | BC7 |
Sistema operacional <Windows = 1709
Propriedade glTF | Textura | Esquema de embalagem |
---|---|---|
pbrMetallicRoughness | baseColorTexture | Vermelho (R), Verde (G), Azul (B) |
MSFT_packing_occlusionRoughnessMetallic | rugosidadeMetálicoOclusãoTextura | Rugosidade (R), Metálico (G), Oclusão (B) |
MSFT_packing_occlusionRoughnessMetallic | normalTexture | Normal (RG) |
Ao compactar as texturas DDS, a seguinte compactação é esperada em cada mapa:
Textura | Compressão esperada |
---|---|
normalTexture | BC5 |
baseCorTextura, rugosidadeMetálicoOclusãoTextura | BC7 |
Adicionando LODs de malha
O Windows MR usa LODs de nó de geometria para renderizar modelos 3D em diferentes níveis de detalhe, dependendo da cobertura na tela. Embora esse recurso não seja tecnicamente necessário, ele é recomendado para todos os ativos. Atualmente, o Windows suporta 3 níveis de detalhe. O LOD padrão é 0, que representa a mais alta qualidade. Outros LODs são numerados sequencialmente, por exemplo, 1, 2 e ficam progressivamente mais baixos em qualidade. O Windows Mixed Reality Asset Converter dá suporte à geração de ativos que atendem a essa especificação de LOD aceitando vários modelos glTF e mesclando-os em um único ativo com níveis de LOD válidos. A tabela a seguir descreve a ordenação de LOD esperada e as metas de triângulo:
Nível de LOD | Contagem de triângulos recomendada | Contagem máxima de triângulos |
---|---|---|
LOD 0 | 10.000 | 10.000 |
LOD 1 | 5.000 | 10,000 |
LOD 2 | 2\.500 | 10.000 |
Ao usar LODs, sempre especifique 3 níveis de LOD. Os LODs ausentes farão com que o modelo não seja renderizado inesperadamente à medida que o sistema LOD alterna para o nível de LOD ausente. O glTF 2.0 atualmente não oferece suporte a LODs como parte da especificação principal. Os LODs devem ser definidos usando a extensão MSFT_LOD.
Cobertura da tela
Os LODs são exibidos em Windows Mixed Reality com base em um sistema controlado pelo valor de cobertura de tela definido em cada LOD. Os objetos que estão consumindo uma parte maior do espaço da tela são exibidos em um nível de LOD mais alto. A cobertura da tela não faz parte da especificação principal do glTF 2.0 e deve ser especificada usando MSFT_ScreenCoverage na seção "extras" da extensão MSFT_lod.
Nível de LOD | Faixa recomendada | Intervalo padrão |
---|---|---|
LOD 0 | 100% - 50% | 0.5 |
LOD 1 | Abaixo de 50% - 20% | 0,2 |
LOD 2 | Menos de 20% - 1% | 0.01 |
LOD 4 | Abaixo de 1% | - |
Diretrizes de animação
Observação
Esse recurso foi adicionado como parte da atualização de abril de 2018 do Windows 10. Em versões mais antigas do Windows, essas animações não serão reproduzidas, no entanto, elas ainda serão carregadas se forem criadas de acordo com as diretrizes deste artigo.
A casa de realidade misturada dá suporte a objetos glTF animados em HoloLens e headsets imersivos (VR). Se você deseja acionar animações em seu modelo, precisará usar a extensão Animation Map no formato glTF. Essa extensão permite disparar animações no modelo glTF com base na presença do usuário no mundo, por exemplo, acionar uma animação quando o usuário está próximo ao objeto ou enquanto está olhando para ele. Se o objeto glTF tiver animações, mas não definir gatilhos, as animações não serão reproduzidas. A seção abaixo descreve um fluxo de trabalho para adicionar esses gatilhos a qualquer objeto glTF animado.
Ferramentas
Primeiro, baixe as seguintes ferramentas, caso ainda não as tenha. Essas ferramentas facilitarão a abertura de qualquer modelo glTF, a visualização, a realização de alterações e o salvamento como glTF ou .glb:
Abrindo e visualizando o modelo
Comece abrindo o modelo glTF no VSCode arrastando o arquivo .glTF para a janela do editor. Se você tiver um arquivo .glb em vez de um arquivo .glTF, poderá importá-lo para o VSCode usando o complemento glTF Tools que você baixou. Vá para "Exibir -> Paleta de Comandos" e comece a digitar "glTF" na paleta de comandos e selecione "glTF: Importar do glb", que exibirá um seletor de arquivos para você importar um .glb.
Depois de abrir seu modelo glTF, você deverá ver o JSON na janela do editor. Você também pode visualizar o modelo em um visualizador 3D ao vivo usando o clicando com o botão direito do mouse no nome do arquivo e selecionando o atalho de comando "glTF: Visualizar modelo 3D" no menu do botão direito.
Adicionando os gatilhos
Os gatilhos de animação são adicionados ao JSON do modelo glTF usando a extensão Mapa de Animação. A extensão do mapa de animação está documentada publicamente aqui no GitHub (OBSERVAÇÃO: ESTA É UMA EXTENSÃO DE RASCUNHO). Para adicionar a extensão ao seu modelo, basta rolar até o final do arquivo glTF no editor e adicionar o bloco "extensionsUsed" e "extensions" ao seu arquivo, caso ainda não existam. Na seção "extensionsUsed", você adicionará uma referência à extensão "EXT_animation_map" e, no bloco "extensions", adicionará seus mapeamentos às animações no modelo.
Conforme observado na especificação , você define o que aciona a animação usando a string "semântica" em uma lista de "animações", que é uma matriz de índices de animação. No exemplo abaixo, especificamos a animação a ser reproduzida enquanto o usuário está olhando para o objeto:
"extensionsUsed": [
"EXT_animation_map"
],
"extensions" : {
"EXT_animation_map" : {
"bindings": [
{
"semantic": "GAZE",
"animations": [0]
}
]
}
}
A semântica de gatilhos de animação a seguir tem suporte na página inicial do Windows Mixed Reality.
- "SEMPRE": Repetir constantemente uma animação
- "HELD": Repetido durante toda a duração em que um objeto é agarrado.
- "GAZE": Repetido enquanto um objeto está sendo observado
- "PROXIMIDADE": Repetido enquanto um espectador está perto de um objeto
- "APONTANDO": Repetido enquanto um usuário está apontando para um objeto
Salvando e exportando
Depois de fazer as alterações em seu modelo glTF, você pode salvá-lo diretamente como glTF. Você também pode clicar com o botão direito do mouse no nome do arquivo no editor e selecionar "glTF: Exportar para GLB (arquivo binário)" para exportar um .glb.
Restrições
As animações não podem ter mais de 20 minutos e não podem conter mais de 36.000 quadros-chave (20 minutos a 30 FPS). Além disso, ao usar animações baseadas em destino de transformação, não exceda 8192 vértices de destino de transformação ou menos. Exceder essas contagens fará com que o ativo animado não tenha suporte na página inicial do Windows Mixed Reality.
Recurso | Máximo |
---|---|
Duration | 20 minutos |
Quadros-chave | 36.000 |
Vértices de destino de Morph | 8192 |
Notas de implementação do glTF
O Windows MR não dá suporte à inversão de geometria usando escalas negativas. A geometria com escalas negativas provavelmente resultará em artefatos visuais.
O ativo glTF DEVE apontar para a cena padrão usando o atributo de cena a ser renderizado pelo Windows MR. Além disso, o carregador glTF do Windows MR antes da atualização do Windows 10 de abril de 2018 requer acessadores:
- Deve ter valores mínimo e máximo.
- O tipo SCALAR deve ser componentType UNSIGNED_SHORT (5123) ou UNSIGNED_INT (5125).
- Os tipos VEC2 e VEC3 devem ser componentType FLOAT (5126).
As seguintes propriedades do material são usadas a partir da especificação glTF 2.0 principal, mas não são necessárias:
- baseColorFactor, metallicFactor, roughnessFactor
- baseColorTexture: deve apontar para uma textura armazenada em dds.
- emissiveTexture: deve apontar para uma textura armazenada em dds.
- emissiveFactor
- Modo alfa
As seguintes propriedades do material são ignoradas da especificação principal:
- Todos os Multi-UVs
- metalRoughnessTexture: em vez disso, deve usar o empacotamento de textura otimizado da Microsoft definido abaixo
- normalTexture: em vez disso, deve usar o empacotamento de textura otimizado da Microsoft definido abaixo
- escala normal
- occlusionTexture: em vez disso, deve usar o empacotamento de textura otimizado da Microsoft definido abaixo
- oclusãode força
O Windows MR não dá suporte a linhas e pontos de modo primitivo.
Há suporte apenas para um único atributo de vértice UV.
Mais recursos
- glTF Exportadores e Conversores
- Kit de ferramentas glTF
- Especificação glTF 2.0
- Especificação de extensão de LOD glTF da Microsoft
- Especificação de extensões de empacotamento de textura de realidade misturada do PC
- Especificação de extensões de empacotamento de textura de realidade misturada do HoloLens
- Especificação de extensões glTF do Microsoft DDS Textures