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

Some additional material properties or types of materials can be expressed using glTF extensions:

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

  • Transmission (uses KHR_materials_transmission)

  • «Shadeless» materials (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.

The importer supports Metal/Rough PBR (core glTF), Spec/Gloss PBR (KHR_materials_pbrSpecularGlossiness) and Shadeless (KHR_materials_unlit) materials.

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 is capable of storing a baked ambient occlusion map. Currently there is no arrangement of nodes that causes Blender to use such a map in exactly the same way as intended in glTF. However, if the exporter finds a custom node group by the name of glTF Settings, and finds an input named Occlusion on that node group, it will look for an Image Texture attached there to use as the occlusion map in glTF. The effect need not be shown in Blender, as Blender has other ways of showing ambient occlusion, but this method will allow the exporter to write an occlusion image to the glTF. This can be useful to real-time glTF viewers, particularly on platforms where there may not be spare power for computing such things at render time.

../../_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

The Cycles render engine has a Bake panel that can be used to bake ambient occlusion maps. The resulting image can be saved and connected directly to the glTF Settings node.

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

When the Clearcoat input on the Principled BSDF node has a non-zero default value or Image Texture node connected, the KHR_materials_clearcoat glTF extension will be included in the export. This extension will also include a value or Image Texture from the Clearcoat Roughness input if available.

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

When the Transmission input on the Principled BSDF node has a non-zero default value or Image Texture node connected, the KHR_materials_transmission glTF extension will be included in the export. When a texture is used, glTF stores the values in the red (R) channel. The Color Space should be set to 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.

Certain Blender features can only be exported to glTF via these extensions. The following glTF 2.0 extensions are supported directly by this 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

It is possible for Python developers to add Blender support for additional glTF extensions by writing their own third-party add-on, without modifying this glTF add-on. For more information, see the example on GitHub and if needed, register an extension prefix.

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

glTF allows multiple animations per file, with animations targeted to particular objects at time of export. To ensure that an animation is included, either (a) make it the active Action on the object, (b) create a single-strip NLA track, or (c) stash the action.

Supported

Only certain types of animation are supported:

  • Keyframe (translation, rotation, scale)

  • Chaves de formato

  • Armatures / skinning

Animation of other properties, like lights or materials, will be ignored.

An NLA Strip animation consists of multiple actions on multiple objects that should play together. To create an NLA strip animation with the name «My Animation», push the action that should play each object onto an NLA track for that object with the name «My Animation».

../../_images/addons_import-export_scene-gltf2_nla-strip-animation-example.png

Will be exported as an animation called «My Animation» with ConeAction playing on the Cone and CubeAction playing on the Cube.

NLA Strip animations will be exported if the Animation ‣ Group by NLA Track option is selected (on by default). All glTF animations are imported as NLA Strip animations.

If option is disabled, Blender NLA strip actions will be ignored. Only active action of each objects will be taken into account, and merged into a single glTF animation.

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

Folder to place texture files in. Relative to the gltf-file.

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

Apply modifiers (excluding armatures) to mesh objects.

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

Export vertex colors with meshes.

Materials

Export materials.

Imagens

Output format for images. PNG is lossless and generally preferred, but JPEG might be preferable for web applications due to the smaller file size.

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

Export the scene in the current animation frame.

Animation

Exports active actions and NLA tracks as glTF animations.

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

Apply sampling to all animations.

Group by NLA Track

Whether to export NLA strip animations.

Export Deformation Bones Only

Export deformation bones only (and needed bones for hierarchy).

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

Export skinning (armature) data.

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.