glTF 2.0

Reference

Categoria

Import-Export

Menu

File ‣ Import/Export ‣ glTF 2.0 (.glb, .gltf)

Usage

glTF™ (GL Transmission Format) é usado para transmissão e carregamento de modelos 3D em aplicações web e nativas. glTF reduz o tamanho dos modelos 3D e o processamento em tempo de execução necessário para desempacotar e renderizar esses modelos. Esse formato é comumente usado na web, e tem suporte em vários motores 3D como Unity3D, Unreal Engine 4, and Godot.

O importador/exportador suporta as seguintes funcionalidades:

  • Malhas

  • Materiais (Principled BSDF) e Sem sombra (Shadeless - Unlit)

  • Texturas

  • Câmeras

  • Luzes pontuais (point, spot e direcional)

  • Extensões (listadas abaixo)

  • Extras (propriedades customizadas)

  • Animação (keyframe, shape key, e skinning)

Malhas

A estrutura interna do glTF mimetiza os buffers de memória comumente usados por chips gráficos quando renderizando em tempo real, de modo que os modelos podem ser entregues para clientes desktop, web, ou dispositivos móveis e ser prontamente exibido com processamento mínimo. Como resultado, quads e n-gons são automaticamente convertidos em triângulos ao exportar para glTF. UVs discontínuas e arestas sombreadas planas podem resultar em contagens de vértices moderadamente maiores no glTF comparado ao Blender, como tais vértices são separados para exportação. Da mesma forma, curvas e outros dados não-malha não são preservados, e devem ser convertidos para malha antes da exportação.

Materials

O sistema de materiais central no glTF suporta um fluxo de trabalho PBR metal/rough com os seguintes canais de informação:

  • Base Color

  • Metallic

  • Rugosidade

  • Baked Ambient Occlusion

  • Normal Map (tangent space, +Y para cima)

  • Emissive

Algumas propriedades de materiais adicionais ou tipos de materiais podem ser expressas usando extensões glTF:

  • Clearcoat, Clearcoat Roughness, Clearcoat Normal (usa KHR_materials_clearcoat)

  • Transmission (usa KHR_materials_transmission)

  • Materiais «Shadeless» (uses KHR_materials_unlit)

../../_images/addons_import-export_scene-gltf2_material-channels.jpg

Um exemplo dos vários mapas disponíveis no formato núcleo do glTF 2.0. Esse é o water bottle sample model mostrado ao lado de cortes de seus vários mapas de imagens.

Materiais Importados

O sistema de materiais glTF é diferente dos materiais do próprio Blender. Quando um arquivo glTF é importado, o add-on irá contruir um conjunto de nós do Blender para replicar cada material glTF o mais próximo possível.

O importador suporta materiais Metal/Rough PBR (core glTF), Spec/Gloss PBR (KHR_materials_pbrSpecularGlossiness) e Shadeless (KHR_materials_unlit).

Dica

Examinar o resultado do processo de importação é uma boa maneira para ver exemplos dos tipos de nós de materiais e configurações que podem ser exportadas para glTF.

Materiais Exportados

O exportador suporta os materiais Metal/Rough PBR (core glTF) e Shadeless (KHR_materials_unlit). Ele irá construir um material glTF baseado nos nós que ele reconhecer no material Blender. O processo de exportação lida com as configurações descritas abaixo.

Nota

Quando texturas com imagens são usadas por materiais, o glTF requer que as imagens estejam no formato PNG ou JPEG. O add-on irá converter automaticamente outros formatos de imagens, aumentando o tempo de exportação.

Base Color

A cor base do glTF é determinada procurando por uma entrada de Base Color em um nó Principled BSDF. Se a entrada está desconectada, a cor padrão de entrada (o campo de cor perto do soquete desconectado) é usado como Base Color para o material glTF.

../../_images/addons_import-export_scene-gltf2_material-base-color-solid-green.png

Uma cor base sólida pode ser especificada diretamente no nó.

Se um nó Image Texture é encontrado conectado à entrada Base Color, a imagem será usada como a cor base do glTF.

../../_images/addons_import-export_scene-gltf2_material-base-color-image-hookup.png

Uma imagem é usada como cor base glTF.

Metallic e Roughness

Esses valores são lidos a partir do nó Principled BSDF. Se essas duas entradas estão desconectadas, o nó irá mostrar deslizadores para controlar seus respectivos valores entre 0.0 e 1.0, e esses valores serão copiados no glTF.

Ao usar uma imagem, o glTF espera os valores metálicos serem codificados no canal azul (B), e roughness codificado no canal verde (G) da mesma imagem. Se imagens são conectadas ao nó do Blender em uma maneira que não segue essa convenção, o add-on pode tentar adaptar a imagem à forma correta durante a exportação (com um aumento no tempo de exportação).

Na árvore de nós do Blender, é recomendado usar o nó Separate RGB para separar os canais a partir de um nó Image Texture, e conectar o canal verde (G) no Roughness, e azul (B) no Metallic. O exportador glTF irá reconhecer esse arranjo como compatível ao padrão glTF, e isso irá permitir ele simplesmente copiar a imagem da textura no arquivo glTF durante a exportação.

O nó Image Texture para isso deve ter o seu Color Space definido como Non-Color.

../../_images/addons_import-export_scene-gltf2_material-metal-rough.png

Uma imagem metallic/roughness conectada de maneira consistente com o padrão glTF, permitindo ser usado literalmente dentro de um arquivo glTF exportado.

Baked Ambient Occlusion

glTF é capaz de armazenar um mapa gravado de ambient occlusion. Atualmente não há arranjo de nós que faça com que o Blender use tal mapa exatamente da mesma maneira que o pretendido no glTF. Entretanto, se o exportador encontra um grupo de nós personalizado com o nome de glTF Settings, e encontra uma entrada nomeada OCclusion nesse grupo de nós, ele irá procurar por uma Image Texture ligada a ele para usar como o mapa de oclusão no glTF. O efeito não precisa ser mostrado no Blender, já que o Blender tem outras maneiras de mostrar a oclusão do ambiente, mas esse método irá permitir o exportador escrever uma imagem de oclusão para o glTF. Isso pode ser útil para visualizadores glTF em tempo real, particularmente em plataformas onde pode não haver poder livre para computar essas coisas na hora da renderização.

../../_images/addons_import-export_scene-gltf2_material-occlusion-only.png

Um mapa ambient occlusion pré gravado, conectado a um nó que não renderiza mas irá exportar para glTF.

Dica

A maneira mais fácil de criar um grupo de nós personalizado é importar um modelo glTF existente que contém um mapa de oclusão, como a water bottle ou outro modelo existente. Um grupo de nós personalizado criado manualmente também pode ser usado.

glTF armazena oclusão no canal vermelho (R), permitindo compartilhar a mesma imagem com os canais roughness e metallic opcionalmente.

../../_images/addons_import-export_scene-gltf2_material-orm-hookup.png

Essa combinação de nós mimetiza a maneira que o glTF empacota os valores occlusion, roughness e metallic em uma única imagem.

Dica

O motor de renderização Cycles tem um painel Bake que pode ser usado para gravar mapas ambient occlusion. A imagem resultante pode ser salva e conectada diretamente ao nó glTF Settings.

Normal Map

Para usar um mapa normal no glTF, conecte a saída de um nó Image Texture a entrada de um nó Normal Map, e conecte a saída do Normal Map à entrada de normal do nó Principled BSDF. O nó Image Texture para isso deve ter sua propriedade Color Space definida para Non-Color.

O nó Normal Map deve permanecer na sua propriedade padrão de Tangent Space já que esse é o único tipo de mapa normal suportado atualmente pelo glTF. A força do mapa normal pode ser ajustada nesse nó. O exportador não está exportando esses nós diretamente, mas ira usá-los para localizar a imagem correta e irá copiar a configuração de força no glTF.

../../_images/addons_import-export_scene-gltf2_material-normal.png

Uma imagem de mapa normal conectada de modo que o exportador irá encontrá-la e copiá-la no arquivo glTF.

Dica

O motor de render Cycles tem um painel Bake que pode ser usado para gravar mapas normais em tangent-space para quase qualquer outro arranjo de nós de normais vetoriais. Troque o tipo de Bake para Normal. Mantenha as configurações padrão de espaço (space: Tanget, R: +X, G: +Y, B: +Z) ao usar esse painel bake para glTF. A imagem grava resultante pode ser salva e ligada em um novo material usando o nó Normal Map como descrito acima, permitindo exportá-la corretamente.

Veja: Cycles Render Baking

Emissive

Um nó Image Texture pode ser conectado à entrada Emission no nó do Principled BSDF para incluir um mapa emissivo com o material glTF. Alternativamente, o nó Image Texture pode ser conectado a um nó Emission shader, e opcionalmente combinado com propriedades do nó Principled BSDF através de um nó Add Shader.

Se o mapa emissivo está sozinho no material, é melhor definir a Base Color padrão para preto, e o Roughness padrão para 1.0. Isso minimiza a influência de outros canais se eles não são necessários.

../../_images/addons_import-export_scene-gltf2_material-emissive.png

Esse arranjo é suportado para compatibilidade com versões anteriores. É mais simples utilizar o nó Principled BSDF diretamente.

Clearcoat

Quando a entrada Clearcoat no nó Principled BSDF tem um valor padrão não-zero ou um nó Image Texture conectado, a extensão glTF KHR_materials_clearcoat será incluída na exportação. Essa extensão irá incluir também um valor ou Image Texture da entrada Clearcoat Roughness se disponível.

Se são usadas Image Textures, o glTF requer que os valores clearcoat sejam escritos no canal vermelho (R), e Clearcoat Roughness no canal verde (G). Se imagens monocromáticas são conectadas, o exportador irá remapeá-las para esses canais de cor.

A entrada Clearcoat Normal aceita os mesmos tipos de entradas que a entrada Normal base, especificamente um mapa normal tangent-space com o +Y para cima, e uma força definida pelo usuário. Essa entrada pode reusar o mesmo mapa normal que o material base está usando, ou pode ser atribuído seu próprio mapa normal, ou pode ser deixado desconectado para um revestimento liso.

Todos os nós Image Texture usados para sombreamento clearcoat devem ter seus Color Space definidos para Non-Color.

../../_images/addons_import-export_scene-gltf2_material-clearcoat.png

Um exemplo de uma aplicação complexa de clearcoat que irá exportar corretamente para glTF. Um muito mais simples, smooth coating pode ser aplicado apenas a partir do nó Principled BSDF sozinho.

Transmissão

Quando a entrada Transmission no nó Principled BSDF tem um valor padrão não-zero ou um nó Image Texture conectado, a extensão KHR_materials_transmission será incluída na exportação. Quando uma textura é usada, o glTF armazena os valores no canal vermelho (R). O Color Space deve ser definido para Non-Color.

Transmission é diferente de alpha blending, porque o transmission permite reflexões especulares de força máxima. Em glTF, alpha blending é destinado a representar materiais físicos que estão parcialmente ausentes na geometria especificada, como gaze médica. Transmission é destinada a representar materiais físicos que são sólidos mas permitem transmitir luz refletida não-especular através do material, como vidro.

glTF não oferece um «Transmission Roughness» separado, mas o roughness base do material pode ser usado para borrar o transmission, como vidro fosco.

Dica

Tipicamente o modo alpha blend de um material transmissivo deve permanecer «Opaque», a configuração padrão, a menos que o material cubra apenas parcialmente a geometria especificada.

Nota

Em motores tempo-real onde transmission é suportada, várias limitações técnicas no motor podem determinar quais partes da cena são visíveis através da superfície transmissível. Em particular, materiais transmissíveis podem não ser visíveis atrás de outros materiais transmissíveis. Essas limitações afetam transmissões baseadas em física, mas não materiais alpha-blended não-transmissivos.

Aviso

Transmission é complexo para motores de renderização em tempo-real implementar, e suporte para a extensão glTF KHR_materials_transmission ainda não é difundido.

Double-Sided / Backface Culling

Para materiais onde apenas as faces frontais serão visíveis, ative Backface Culling no painel Settings do material Eeevee. Ao usar outros motores (Cycles, Workbench) você pode trocar temporariamente para o Eevee para configurar essas opção, depois trocar de volta.

Deixe essa opção desmarcada para materiais dupla-face.

../../_images/addons_import-export_scene-gltf2_material-backface-culling.png

O inverso dessa configuração controla a bandeira DoubleSided do glTF.

Blend Modes

A entrada Base Color pode opcionalmente fornecer valores alfa. Como esses valores são tratados pelo glTF depende do blend mode selecionado.

Com o motor de render Eevee selecionado, cada mateiral tem um Blend Mode no painel de configuração de material. Use essa configuração para definir como os valores alfa do canal Base Color são tratados no glTF. Três configurações são suportadas pelo glTF:

Opaque

Valores alfa são ignorados.

Alpha Blend

Valores alfa mais baixos causam fusão com objetos de fundo.

Alpha Clip

Valores alfa abaixo da configuração de limite Clip Threshold farão com que porções do material não sejam renderizadas. O restante é renderizado como opaco.

../../_images/addons_import-export_scene-gltf2_material-alpha-blend.png

Com o motor Eevee selecionado, o blend mode do material é configurável.

Nota

Esteja ciente que a transparência (ou modo Alpha Blend) é complexo para motores em tempo-real renderizar, e pode se comportar de maneiras inesperadas depois da exportação. Onde possível, use o modo Alpha Clip no lugar, ou coloque polígonos opacos atrás de apenas uma camada de polígonos Alpha Blend.

UV Mapping

Controle seleção e transformações do mapa UV é disponível conectando um nó UV Map e um nó Mapping a qualquer nó Image Texture.

Configurações do nó Mapping são exportadas usando a extensão glTF chamada KHR_texture_transform. Há um seletor de tipo de mapeamento na parte superior. Point é o tipo recomendado para exportar. Texture e Vector também são suportados. Os deslocamentos suportados são:

  • Location - X e Y

  • Rotation - Z apenas

  • Scale - X e Y

Para o tipo Texture, Scale X e Y devem ser iguais (escalonamento uniforme).

../../_images/addons_import-export_scene-gltf2_material-mapping.png

Uma escolha deliberada de mapeamento UV.

Dica

Esses nós são opcionais. Nem todos os leitores glTF suportam múltiplos mapas UV ou transformações de textura.

Fatores

Qualquer nó Image Texture pode opcionalmente ser multiplicado com uma cor ou escalar constante. Eles serão gravados como fatores no arquivo glTF, que são números que são multiplicados com as texturas de imagem especificadas. Isso não é comum.

Exemplo

Um único material pode usar todos os itens acima ao mesmo tempo, se desejado. Essa figura mostra uma estrutura de nós típica quando várias das opções acima são aplicadas de uma vez:

../../_images/addons_import-export_scene-gltf2_material-principled.png

Um material Principled BSDF com uma textura emissiva.

Exportando um Material Shadeless (Não iluminado)

Para exopotar um material não iluminado, misture um camera ray, e evite usar o nó Principled BSDF.

../../_images/addons_import-export_scene-gltf2_material-unlit.png

Um dos vários arranjos de nós que irá exportar KHR_materials_unlit e renderizar shadeless no Blender.

Extensões

O núcleo do formato glTF 2.0 pode ser extendido com informações extras, usando extensões glTF. Isso permite o formato de arquivo contenha detalhes que não foram considerados universais no momento da primeira publicação. Nem todos leitores glTF suportam todas extensões, mas algumas são bastante comuns.

Certos recursos do Blender só podem ser exportados para glTF via essas extensões. As seguintes extensões glTF 2.0 são suportadas diretamente por esse add-on.

Import

  • KHR_materials_pbrSpecularGlossiness

  • KHR_lights_punctual

  • KHR_materials_unlit

  • KHR_texture_transform

  • KHR_materials_clearcoat

  • KHR_mesh_quantization

Export

  • KHR_draco_mesh_compression

  • KHR_lights_punctual

  • KHR_materials_clearcoat

  • KHR_materials_transmission

  • KHR_materials_unlit

  • KHR_texture_transform

Extensões glTF de Terceiros

É possível para desenvolvedores Python adicionar ao Blender suporte a extensões glTF adicionais escrevendo seus próprios add-ons, sem modificar esse add-on glTF. Para mais informações, veja o exemplo no GitHub e se necessário, registre um prefixo de extensão.

Propriedades personalizadas

Propriedades personalizadas são sempre importadas, e serão exportadas da maioria dos objetos se a opção Include ‣ Custom Properties é selecionada antes da exportação. Elas são armazenadas no campo extras no objeto correspondente no arquivo glTF.

Diferente das extensões glTF, propriedades personalizadas (extras) não tem namespace definido, e podem ser usadas para qualquer propósito específico d.

Animation

Uma animação glTF muda as transformações de objetos ou bone poses, ou os valores de shape keys. Uma animação pode afetar múltiplos objetos, e pode haver múltiplas animações em um arquivo glTF.

Import

Modelos importados são configurados para que a primeira animação no arquivo seja reproduzida automaticamente. Deslize a Timeline para ver ela rodar.

Quando o arquivo contém múltiplas animações, o resto será organizado usando o editor Nonlinear Animation. Cada animação torna-se uma ação armazenada em uma trilha do NLA. O nome da trilha é o nome da animação glTF. Para tornar a animação dentro dessa trilha visível, clique em Solo (ícone de estrela) ao lado da trilha que deseja reproduzir.

../../_images/addons_import-export_scene-gltf2_animation-solo-track.png

Esse é o fox sample model mostrando sua animação «Run».

Se uma animação afeta múltiplos objetos, ela será quebrada em múltiplas partes. A parte da animação que afeta um objeto torna-se uma ação armazenada naquele objeto. Use o nome das trilhas para dizer quais ações são parte da mesma animação. Para reproduzir toda a animação, você precisa habilitar o Solo (ícone de estrela) para todas as suas trilhas.

Nota

Atualmente não é possível ver a pose não-animada de um modelo que tinha animações.

Export

Você pode exportar animações criando ações. Como animações glTF são feitas a partir de ações é controlado pela opção de exportação Animation ‣ Group by NLA Track.

Group by NLA Track on (padrão)

Uma ação será exportada se ela é a ação ativa no objeto, ou é associada a uma trilha NLA (ex. com os botões Stash ou Push Down no Action Editor). Ações que não estiverem associadas com um objeto em uma dessas maneiras não são exportadas. Se você quer exportar múltiplas ações, certifique-se que elas estão associadas!

Uma animação glTF pode ter um nome, que é o nome da ação por padrão. Você pode substituí-lo renomeando sua trilha NLA do NLATrack/[Action Stash] para o nome que quiser usar. Por exemplo, a Fig. fox model irá exportar três animações, «Survey», «Walk», e «Run». Se você renomear duas trilhas em dois objetos diferentes para o mesmo nome, eles irão se tornar parte da mesma animação glTF e irão reproduzir juntas.

O importador organiza ações para que elas sejam exportadas corretamente com esse modo.

Group by NLA Track off

Nesse modo, a organização NLA não é usada, e apenas uma animação é exportada usando as ações ativas em todos os objetos.

Nota

Para ambos modos, lembre que apenas certos tipos de animações são suportados:

  • Transformação de objeto (localização, rotação e escala)

  • Pose bones

  • Valores de Shape key

Animações de outras propriedades, como física, luzes, ou materiais, serão ignoradas.

Nota

Para amostrar animações de shape key controladas por drivers usando transformações de bone, elas devem estar em um objeto malha que é filho direto da armadura de bones.

Variações de Formato de Arquivo

A especificação glTF identifica diferentes maneiras que os dados podem ser armazenados. O importador lida com todas essas formas. O exportador irá perguntar ao usuário para selecionar uma das seguintes formas:

glTF Binary (.glb)

Isso produz um arquivo .glb único com todos dados de malha, imagens de texturas, e informações relacionadas empacotadas em um único arquivo binário.

Dica

Usar um único arquivo torna fácil compartilhar ou copiar o modelo para outros sistemas e serviços.

glTF Separate (.gltf + .bin + textures)

Isso produz um arquivo .gltf baseado em texto JSON descrevendo a estrutura geral, junto com um arquivo .bin contendo dados de malha e vetor, e opcionalmente um número de arquivos .png ou .jpg contendo imagens de texturas referenciadas pelo arquivo .gltf.

Dica

Ter uma variade de arquivos separados torna muito mais fácil para o usuário voltar e editar qualquer JSON ou imagens depois da exportação completada.

Nota

Esteja ciente que compartilhar esse formato requer compartilhar todos os arquivos separados juntos como um grupo.

glTF Embedded (.gltf)

Isso produz um arquivo .gltf baseado em texto JSON, com todos os dados de malhas e imagem codificado (usando Base64) no arquivo. Essa forma é útil se o modelo deve ser compartilhado em uma conexão de apenas texto.

Aviso

Essa é a forma menos eficiente, e deve ser usada apenas quando requerido.

Properties

Import

Pack Images

Empacota todas imagens no arquivo blend.

Shading

Como as normais são computadas durante a importação.

Guess Original Bind Pose

Determina a pose para bones (e consequentemente, malhas skinned) no modo Edit. Quando ativado, tenta adivinhar a pose que foi usada para computar a matriz de ligação inversa.

Bone Direction

Muda a heurística que o importador usa para decidir onde colocar a ponta dos bones. Note que a configuração Fortune pode causar imprecisões em modelos que usam escalonamento não-uniforme. Caso contrário, isso é puramente estético.

Export

Format

Veja: File Format Variations.

Texturas

Pasta para colocar as texturas dentro. Relativa ao arquivo gltf.

Copyright

Direitos legais e condições para o modelo.

Remember Export Settings

Armazena as configurações de exportação no arquivo blend, de modo que elas serão lembradas a próxima vez que o arquivo for aberto.

Include

Selected Objects

Exporta apenas objetos selecionados.

Propriedades personalizadas

Exporta propriedades personalizadas como extras glTF.

Câmeras

Exporta câmeras.

Punctual Lights

Exporta luzes direcionais, pontuais e spot. Usa a extensão glTF KHR_lights_punctual.

Transform

Y Up

Exporta usando a convenção glTF, +Y para cima.

Geometria

Apply Modifiers

Aplica modificadores (excluindo armaduras) para objetos malha.

UVs

Exporta UVs (coordenadas de texturas) com malhas.

Normais

Exporta normais de vértices com malhas.

Tangents

Exporta tangentes de vértices com malhas.

Vertex Colors

Exporta cores de vértices com malhas.

Loose Edges

Exporta bordas soltas como linhas, usando o material do primeiro slot de materiais.

Loose Points

Exporta pontos soltos como pontos glTF, usando o material do primeiro slot de materiais.

Materials

Exporta materiais.

Imagens

Formato de saída para imagens. PNG é sem perda de qualidade e preferido geralmente, mas JPEG pode ser preferível para aplicações web devido ao menor tamanho de arquivo.

Compression

Comprime as malhas usando Google Draco.

Compression Level

Maiores compressões resultam em codificação e decodificação mais lentos.

Quantization Position

Valores maiores resultam em melhores taxas de compressão.

Normal

Valores maiores resultam em melhores taxas de compressão.

Texture Coordinates

Valores maiores resultam em melhores taxas de compressão.

Generic

Valores maiores resultam em melhores taxas de compressão.

Animation

Use Current Frame

Exporta a cena no quadro de animação atual.

Animation

Exporta ações ativas e trilhas NLA como animações glTF.

Limit to Playback Range

Corta animações para o intervalo de reprodução selecionado.

Sampling Rate

Com que frequência avaliar valores animados (em quadros).

Always Sample Animations

Aplica amostragem a todas animações.

Group by NLA Track

Se deve exportar animações de tira NLA.

Export Deformation Bones Only

Exporta apenas ossos de deformação (e ossos necessários para hierarquia).

Shape Keys

Exporta chaves de formato (morph targets).

Shape Key Normals

Exporta normais de vértices com chaves de formato (morph targets).

Shape Key Tangents

Exporta tangentes de vértices com chaves de formato (morph targets).

Skinning

Exporta dados de skinning (armadura).

Include All Bone Influences

Permite mais que 4 influências de junção de vértice. Modelos podem aparecer incorretamente em muitos visualizadores.

Contribuindo

Esse importador/exportador é desenvolvido através do glTF-Blender-IO repository, onde você pode preencher reportes de bugs, enviar requisições de funcionalidades, ou contribuir com código.

Discussão e desenvolvimento do formato glTF 2.0 em si acontece no Khronos Group glTF GitHub repository, e feedbacks lá são bem-vindos.