Criar modelos 3D para uso em casa

A casa Windows Mixed Reality é o ponto de partida em que 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 3D profundos na Windows Mixed Reality página inicial. Este artigo descreve as diretrizes para criar modelos 3D compatíveis com o Windows Mixed Reality página inicial.

Visão geral dos requisitos de ativos

Ao criar modelos 3D para Windows Mixed Reality, há alguns requisitos que todos os ativos devem atender:

  1. Exportação – os ativos devem ser entregues no formato de arquivo .glb (binary glTF), .obj ou .fbx
  2. Modelagem – os ativos devem ter menos de 10 mil triângulos, não ter mais de 64 nós e 32 submessos por LOD
  3. Materiais - 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
  4. Animação – As animações não podem ter mais de 20 minutos a 30 FPS (36.000 quadros-chave) e devem conter <= vértices de destino de transformação de 8192
  5. Otimização – os ativos devem ser otimizados usando o WindowsMRAssetConverter. Obrigató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, por fim, converte modelos em .glb/glTF antes de exibi-los na Realidade Misturada página inicial.

O restante deste artigo inclui uma visão geral detalhada desses requisitos e diretrizes extras para garantir que seus modelos funcionem bem com o Windows Mixed Reality página inicial.

Diretrizes detalhadas

Exportando modelos

A Windows Mixed Reality home 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 livre 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 suporte da Microsoft para o formato entre aplicativos e experiências do Windows também. Se você ainda não criou um ativo glTF antes de encontrar uma lista de exportadores e conversores com suporte na página github do grupo de trabalho glTF.

Diretrizes de modelagem

O Windows espera que os ativos sejam gerados usando as diretrizes de modelagem a seguir para garantir a compatibilidade com o Realidade Misturada experiência inicial. Ao modelar em seu programa de sua escolha, tenha em mente as seguintes recomendações e limitações:

  1. O eixo Up deve ser definido como "Y".
  2. O ativo deve enfrentar "avançar" em direção ao eixo Z positivo.
  3. Todos os ativos devem ser construídos no plano terrestre na origem da cena (0,0,0)
  4. As Unidades de Trabalho devem ser definidas como medidores e ativos para que os ativos possam ser criados em escala mundial
  5. Todas as malhas não precisam ser combinadas, mas é recomendável se você estiver direcionando dispositivos restritos a recursos
  6. Todas as malhas devem compartilhar um material, com apenas um conjunto de texturas sendo usado para todo o ativo
  7. UVs devem ser dispostos em um arranjo quadrado no espaço 0-1. Evite texturas de peças, embora sejam permitidas.
  8. Não há suporte para várias UVs
  9. Não há suporte para materiais de dois lados

Contagens de triângulos e níveis de detalhes (LODs)

A Windows Mixed Reality home 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 detalhes de geometria) opcionais para garantir uma experiência de alto desempenho e de alta qualidade. O WindowsMRAssetConverter ajudará você a combinar três versões do modelo em um único modelo .glb. O Windows determina qual LOD exibir com base na quantidade de imóveis de tela que o modelo está ocupando. Há suporte apenas para três níveis lod com as seguintes contagens de triângulos recomendadas:

Nível 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 submesh

A Windows Mixed Reality home não dá suporte a modelos com mais de 64 nós ou 32 submessos por LOD. Nós são um conceito na especificação glTF que define os objetos na cena. Submeshes são definidos na matriz de primitivos na malha do objeto .

Recurso Descrição Máximo com suporte Documentação
Nós Objetos na cena glTF 64 por LOD Aqui
Submeshes Soma de primitivos em todas as malhas 32 por LOD Aqui

Diretrizes de material

As texturas devem ser preparadas usando um fluxo de trabalho de aspereza metálica PBR. Comece criando um conjunto completo de texturas, incluindo Albedo, Normal, Oclusão, Metálico e Aspereza. 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 um máximo de 4x4.

Tamanho de textura recomendado Tamanho máximo da textura Mip mais baixo
512 x 512 4096x4096 max 4x4

Mapa do Albedo (cor base)

Cor bruta sem informações de iluminação. Este mapa também contém as informações de reflexão e difusas para superfícies de metal (branco no mapa metálico) e isolante (preto no mapa metálico), respectivamente.

Normal

Mapa normal do espaço tangente

Mapa de aspereza

Descreve o microsurface do objeto . Branco 1.0 é preto áspero 0.0 é suave. Esse mapa fornece ao ativo mais caracteres, pois ele realmente descreve a superfície. Por exemplo, arranhões, impressões digitais, manchas, sujeira e assim por diante.

Mapa de oclusão ambiente

Mapa de escala de valor mostrando áreas de luz ocluída, que bloqueia reflexões

Mapa metálico

Informa ao sombreador se algo é metal ou não. Raw Metal = 1,0 branco Não metal = 0,0 preto. Pode haver valores cinza transitórios que indicam algo que cobre 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 em 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 e as otimizações de textura corretos, 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 Otimização de modelo 3D para uso em aplicativos Dynamics 365.

Materiais

Para melhorar o tempo de carregamento de ativos em ambientes 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. É altamente recomendável compactar texturas.

HoloLens

As experiências de realidade misturada baseadas em HoloLens esperam que as texturas sejam empacotadas usando uma configuração de duas texturas usando a seguinte especificação de empacotamento:

Propriedade glTF Textura Esquema de empacotamento
pbrMetallicRoughness baseColorTexture Vermelho (R), Verde (G), Azul (B)
MSFT_packing_normalRoughnessMetallic normalRoughnessMetallicTexture Normal (RG), Aspereza (B), Metálico (A)

Ao compactar as texturas DDS, a compactação a seguir é esperada em cada mapa:

Textura Compactação esperada
baseColorTexture, normalRoughnessMetallicTexture BC7

Headsets imersivos (VR)

As experiências de Windows Mixed Reality baseadas em computador para headsets imersivos (VR) esperam que as texturas sejam empacotadas usando uma configuração de três texturas usando a seguinte especificação de empacotamento:

Sistema operacional >Windows = 1803

Propriedade glTF Textura Esquema de empacotamento
pbrMetallicRoughness baseColorTexture Vermelho (R), Verde (G), Azul (B)
MSFT_packing_occlusionRoughnessMetallic occlusionRoughnessMetallicTexture Oclusão (R), Aspereza (G), Metálico (B)
MSFT_packing_occlusionRoughnessMetallic normalTexture Normal (RG)

Ao compactar as texturas DDS, a compactação a seguir é esperada em cada mapa:

Textura Compactação esperada
normalTexture BC5
baseColorTexture, occlusionRoughnessMetallicTexture BC7
Sistema operacional <Windows = 1709

Propriedade glTF Textura Esquema de empacotamento
pbrMetallicRoughness baseColorTexture Vermelho (R), Verde (G), Azul (B)
MSFT_packing_occlusionRoughnessMetallic roughnessMetallicOcclusionTexture Aspereza (R), Metálico (G), Oclusão (B)
MSFT_packing_occlusionRoughnessMetallic normalTexture Normal (RG)

Ao compactar as texturas DDS, a compactação a seguir é esperada em cada mapa:

Textura Compactação esperada
normalTexture BC5
baseColorTexture, roughnessMetallicOcclusionTexture BC7

Adicionando LODs de malha

O Windows MR usa LODs de nó de geometria para renderizar modelos 3D em diferentes níveis de detalhes, dependendo da cobertura na tela. Embora esse recurso tecnicamente não seja necessário, ele é recomendado para todos os ativos. Atualmente, o Windows dá suporte a três níveis de detalhes. O LOD padrão é 0, que representa a mais alta qualidade. Outros LODs são numerados sequencialmente, por exemplo, 1, 2 e ficam progressivamente menores em qualidade. O Windows Mixed Reality Asset Converter dá suporte à geração de ativos que atendam a essa especificação LOD aceitando vários modelos glTF e mesclando-os em um único ativo com níveis LOD válidos. A tabela a seguir descreve os destinos de ordenação e triângulo lod esperados:

Nível 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 lod. LoDs ausentes farão com que o modelo não seja renderizado inesperadamente à medida que o sistema LOD alterna para o nível lod ausente. Atualmente, o glTF 2.0 não dá suporte a LODs como parte da especificação principal. Os LODs devem ser definidos usando a extensão MSFT_LOD.

Cobertura de 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 atualmente uma parte maior do espaço de tela são exibidos em um nível lod mais alto. A cobertura de 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 LOD Intervalo recomendado Intervalo Padrão
LOD 0 100% - 50% 0,5
LOD 1 Abaixo de 50% a 20% 0,2
LOD 2 Menos de 20% - 1% 0,01
LOD 4 Menos 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 no HoloLens e headsets imersivos (VR). Se você quiser disparar animações em seu modelo, precisará usar a extensão Mapa de Animação 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, disparar uma animação quando o usuário estiver próximo ao objeto ou enquanto estiver 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 a seguir descreve um fluxo de trabalho para adicionar esses gatilhos a qualquer objeto glTF animado.

Ferramentas

Primeiro, baixe as ferramentas a seguir se você ainda não as tiver. Essas ferramentas facilitarão a abertura de qualquer modelo glTF, visualizar, fazer alterações e salvar novamente como glTF ou .glb:

  1. Visual Studio Code
  2. Ferramentas glTF para Visual Studio Code

Abrir e visualizar o modelo

Comece abrindo o modelo glTF no VSCode arrastando o arquivo .glTF para a janela do editor. Se você tiver um .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: Import from glb", que exibirá um seletor de arquivo para você importar um .glb com.

Depois de abrir o modelo glTF, você deverá ver o JSON na janela do editor. Você também pode visualizar o modelo em um visualizador 3D dinâmico usando o clicando com o botão direito do mouse no nome do arquivo e selecionando o atalho de comando "glTF: Preview 3D Model" no menu de clique com o botão direito do mouse.

Adicionando os gatilhos

Os gatilhos de animação são adicionados ao modelo JSON do glTF usando a extensão mapa de animação. A extensão de mapa de animação é 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 arquivo se eles ainda não existirem. Na seção "extensionsUsed", você adicionará uma referência à extensão "EXT_animation_map" e, no bloco "extensões", adicionará seus mapeamentos às animações no modelo.

Conforme observado na especificação , você define o que dispara a animação usando a cadeia de caracteres "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 é compatível com a Windows Mixed Reality página inicial.

  • "ALWAYS": loop constante de uma animação
  • "HELD": em loop durante toda a duração, um objeto é capturado.
  • "GAZE": em loop enquanto um objeto está sendo examinado
  • "PROXIMITY": em loop enquanto um visualizador está próximo a um objeto
  • "APONTANDO": em loop enquanto um usuário aponta para um objeto

Salvando e exportando

Depois de fazer as alterações no 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 transformar não exceder 8192, transformar vértices de destino ou menos. Exceder essas contagens fará com que o ativo animado não tenha suporte na Windows Mixed Reality casa.

Recurso Máximo
Duration 20 minutos
Quadros chave 36.000
Transformar vértices de destino 8192

Notas de implementação do glTF

O Windows MR não dá suporte à inversão de geometria usando escalas negativas. 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 do Windows MR glTF antes da atualização de abril de 2018 do Windows 10requer acessadores:

  • Deve ter valores mínimos e máximos.
  • 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 de material são usadas da especificação core glTF 2.0, 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
  • alphaMode

As seguintes propriedades materiais 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
  • normalScale
  • occlusionTexture: em vez disso, deve usar o empacotamento de textura otimizado da Microsoft definido abaixo
  • occlusionStrength

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

Confira também