glTF 2.0
Reference
- Categoria
Import-Export
- Menu
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
)
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.
Se um nó Image Texture é encontrado conectado à entrada Base Color, a imagem será usada como a cor base do 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.
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.
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.
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.
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.
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.
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.
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.
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).
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:
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.
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 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.
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
.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.