Cookies para estatística e publicidade
Usamos cookies de estatística e de publicidade, ambos enviados ao Google. Recusar não muda nada do que você vê.Ler a página de privacidade
GLTF
O formato 3D para a web. Geometria, material e animação num único arquivo JSON.
GLTF
GLTF é um formato de texto puro que abre em qualquer editor. Ele guarda formas e coordenadas em vez de pixels, então continua nítido em qualquer tamanho — uma logomarca levada ao tamanho de um outdoor não perde nada. Ele é usado para a web e entregar um arquivo pronto.
A extensão é .gltf e o nome por extenso é GL Transmission Format. Os dois importam menos do que aquilo que o arquivo consegue carregar, e é disso que trata o resto desta página.
A Khronos Group publicou o formato em 2015. A especificação é glTF 2.0.
A idade interessa por um motivo prático: quanto mais antigo o formato, mais programas tiveram tempo de aprendê-lo.
Ela está publicada por inteiro, então dá para implementá-la a partir do documento em vez de por observação — é por isso que o formato aparece em tantos programas e por isso que arquivos escritos há vinte anos ainda abrem. Especificação publicada não é o mesmo que livre de royalties: quando o formato embrulha um codec, o licenciamento das patentes é uma questão à parte, que a norma não resolve.
GLTF guarda o conteúdo exatamente. Salvar de novo não muda nada, então dá para abrir, editar e salvar quantas vezes você quiser sem acumular estrago — e é isso que faz dele um formato de trabalho e não de entrega.
GLTF consegue guardar uma animação em vez de uma imagem parada. Vale saber disso antes de converter: um destino que só comporta um quadro fica com o primeiro e larga o resto, quase sempre sem avisar.
Blender, three.js e Babylon.js leem esse formato, e a maioria dos programas do mesmo tipo também.
Quando um arquivo não abre, o formato raramente é o problema — mais comum é o programa ser mais antigo que ele. Converter para algo mais antigo é o caminho confiável, e é para isso que serve o resto deste site.
Nenhum navegador lê o formato.
Esse é de longe o motivo mais comum para convertê-lo: não que o formato seja ruim, mas que o lugar onde você quer mostrar o arquivo não consegue lê-lo.
GLTF foi feito para ser aberto e alterado. Mantenha o arquivo nesse formato enquanto o trabalho estiver em andamento e exporte a partir dele sempre que precisar de uma cópia pronta.
Todo outro formato 3D deste site é um formato de intercâmbio para programas de modelagem ou um formato de captura para scanners. glTF não é nenhum dos dois: foi desenhado pelo Khronos Group em 2015 como uma forma de *entregar* uma cena pronta a um renderizador, numa forma que uma placa gráfica consegue usar quase diretamente.
É isso que seus criadores quiseram dizer ao chamá-lo de o JPEG do 3D. Ninguém edita um JPEG num estúdio de fotografia; é o que sai no final. glTF guarda geometria, materiais, texturas, animações, câmeras e luzes organizados de forma que um visualizador consiga carregar e desenhar com o mínimo de trabalho no meio do caminho.
Um arquivo .gltf é JSON, e é legível — abra um e você vê a hierarquia de nós, as definições de material e os canais de animação dispostos em campos nomeados. Essa legibilidade é um recurso genuíno quando algo parece errado.
O que o JSON não contém é o volume. Posições de vértice, normais, coordenadas de textura e quadros-chave de animação vivem num buffer binário separado, geralmente um arquivo .bin ao lado, e texturas são arquivos PNG ou JPEG comuns referenciados por caminho. Um modelo é, portanto, uma pasta, não um arquivo — exatamente o problema que o GLB existe para resolver.
glTF usa um modelo de material metálico-rugosidade: cada superfície declara quão metálica é, quão rugosa, sua cor base, e opcionalmente mapas normais, de oclusão e emissivos. Todo renderizador moderno entende esse vocabulário, então o mesmo modelo fica consistente num navegador, num motor de jogo, num visualizador de realidade aumentada de celular e num configurador de produto.
Essa é a diferença mais nítida do OBJ, cujo arquivo MTL companheiro descreve uma abordagem de sombreamento do início dos anos 1990, sem espaço para rugosidade ou metalicidade. Um modelo exportado para OBJ perde a descrição de material em qualquer sentido relevante; exportado para glTF, mantém, e é por isso que a conversão vale a pena sempre que um modelo vai para algum lugar onde será renderizado em vez de editado.
glTF carrega animação esquelética: uma hierarquia de juntas, pesos de skinning, e canais com quadros-chave para translação, rotação e escala. Também carrega morph targets para expressões faciais e mistura de forma.
Nada mais em uso comum para a web faz isso. OBJ não tem animação nenhuma, STL e PLY não têm, e FBX tem bastante mas é proprietário e não documentado. Se um modelo precisa se mover numa página web, glTF não é uma das opções — é a opção.
Visualizadores web, primeiro: three.js, Babylon.js e o elemento model-viewer aceitam glTF nativamente, e a grande maioria do 3D em páginas web é um arquivo glTF por baixo. Configuradores de produto e visualizadores de e-commerce são a aplicação comercial.
Depois, realidade aumentada no Android, que usa glTF diretamente pelo Scene Viewer, e bibliotecas de ativos — Sketchfab, Poly Haven, os próprios modelos de exemplo do Khronos — que publicam nesse formato porque é o que funciona em toda parte sem conversão. Blender, Unity, Unreal, Godot, Substance e Cinema 4D importam e exportam.
A especificação tem um mecanismo de extensão definido, e duas importam na prática. Draco comprime a geometria, muitas vezes a um quinto ou um décimo do tamanho, o que para uma página web é a diferença entre um carregamento instantâneo e uma espera visível. KTX2 com Basis Universal faz o mesmo para texturas e adicionalmente deixa a placa gráfica mantê-las comprimidas na memória.
A pegadinha é que uma extensão que um visualizador não implementa deixa o arquivo inutilizável ali. glTF comprimido com Draco falha ao abrir em algumas ferramentas mais antigas, então é uma otimização de entrega, não algo a aplicar numa matriz. Guarde a versão sem compressão e comprima na saída.
De OBJ, STL ou PLY, a geometria converte de forma limpa e os materiais na maior parte não existem para converter — uma malha nua chega como malha nua com material cinza padrão, e qualquer coisa que deveria parecer com algo precisa de materiais atribuídos depois.
Para OBJ ou STL, espere perda proporcional ao que o glTF carregava. Animação, rigging, câmeras, luzes, a hierarquia de cena e os materiais fisicamente baseados não têm equivalente em nenhum dos dois, e STL adicionalmente descarta coordenadas de textura e cor. Converta para baixo só quando algo especificamente exigir esses formatos — uma impressora 3D para STL, uma ferramenta de modelagem mais antiga para OBJ.
| Extensão | .gltf |
|---|---|
| Tipo de mídia | model/gltf+json |
| Publicado por | Khronos Group |
| Primeira publicação | 2015 |
| Especificação | glTF 2.0 |