GLB

O que é um arquivo GLB?

glTF com as texturas dentro. Um arquivo em vez de uma pasta cheia de dependências.

O que é GLB

GLB é um formato binário, que só significa alguma coisa para um programa que o conhece. 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 é .glb e o nome por extenso é Binary glTF. Os dois importam menos do que aquilo que o arquivo consegue carregar, e é disso que trata o resto desta página.

De onde vem GLB

A Khronos Group publicou o formato em 2016. 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.

A especificação é pública

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.

Nada é jogado fora

GLB 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.

Ele pode carregar mais de um quadro

GLB 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.

O que abre GLB

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.

Abrir no navegador

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.

É um formato de trabalho

GLB 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.

O mesmo modelo, num arquivo só

GLB é glTF compactado num único contêiner binário: a descrição de cena em JSON, o buffer de geometria e toda textura, num arquivo só com um cabeçalho pequeno. Nada é adicionado e nada fica de fora — desempacote um GLB e você tem o .gltf, o .bin e as imagens que de outra forma ficariam numa pasta.

Essa é a diferença inteira, e é o motivo de quase tudo publicado como 3D na web ser um GLB. Um .gltf sem seus companheiros é uma descrição de cena referindo dados que não estão ali, e enviar um é o mesmo erro que enviar um OBJ sem o MTL.

Por que um arquivo só importa mais aqui que em outro lugar

Um modelo 3D tem mais peças soltas que a maioria dos recursos: um buffer binário, uma textura de cor base, um mapa normal, um mapa de rugosidade, um mapa de oclusão, um mapa emissivo. Um objeto único pode ser oito arquivos, e uma cena pode ser dezenas.

Um arquivo só remove uma classe inteira de falha — uma textura ausente, um caminho relativo quebrado, uma pasta compactada num nível errado. Também remove idas e vindas de rede: um navegador buscando um GLB faz uma requisição onde o equivalente .gltf faz oito, e numa conexão móvel a diferença no tempo até a primeira renderização é maior que a diferença em bytes.

O que a realidade aumentada espera

No Android, o Scene Viewer pega um GLB, e o elemento model-viewer que a maioria dos sites usa para 3D usa GLB como fonte principal. Aponte um celular para uma página de produto e o modelo que aparece no ambiente veio de um.

iOS é a exceção que vale saber: o Quick Look da Apple usa USDZ, o formato próprio dela, então um site suportando realidade aumentada nas duas plataformas publica um GLB e um USDZ lado a lado. O elemento model-viewer aceita os dois e escolhe pela plataforma.

Mantendo pequeno o suficiente para uma página web

Textura domina, não geometria. Um modelo com quatro mapas em 4K já são trinta megabytes antes de contar mais nada, e reduzir para 1K ou 2K geralmente não custa nada visível no tamanho em que o modelo é realmente exibido. Faça isso primeiro.

Depois Draco para a malha, que frequentemente leva a geometria a um quinto ou um décimo do tamanho, e KTX2 com Basis Universal para as texturas, que adicionalmente deixa a placa de vídeo manter elas comprimidas na memória em vez de expandir. Juntos, esses recursos costumam transformar uma exportação de quarenta megabytes em algo abaixo de três.

A única coisa em que o GLB é pior

Edição e inspeção. Um .gltf é JSON legível, então um valor de material errado ou um nó com escala errada pode ser encontrado e corrigido num editor de texto, e um controle de versão consegue mostrar uma diferença significativa entre duas revisões.

Um GLB é opaco. Qualquer mudança significa desempacotar, editar e reempacotar, e um repositório guardando arquivos GLB armazena um binário completo novo a cada commit. O arranjo sensato é o mesmo de qualquer lugar deste site: mantenha o .gltf e seus recursos como o mestre de trabalho, e produza o GLB como uma etapa de build para entrega.

Onde o GLB é aceito

Amplamente, para um formato de dez anos. Toda biblioteca 3D web, Blender, Unity, Unreal, Godot, Substance, Sketchfab, o visualizador de RA do Android, e os grandes marketplaces de recurso. O Microsoft Office até consegue embutir um num documento ou slide.

Onde não é aceito é qualquer coisa construída em torno de pipelines mais antigos: impressão 3D quer STL ou 3MF, CAD quer seus próprios formatos, e cinema e efeitos visuais usam USD ou Alembic. GLB é um formato de entrega em tempo real, e pedir que ele faça um trabalho de manufatura ou cinema é pedir o arquivo errado.

Convertendo de e para ele

GLB e glTF convertem um para o outro sem perdas nas duas direções, porque são o mesmo dado com embalagem diferente. Qualquer coisa que lê um lê o outro, e a conversão é empacotar ou desempacotar, não traduzir.

De OBJ, FBX ou um programa de modelagem, espere que os materiais precisem de atenção: o vocabulário baseado em física que o GLB usa não tem equivalente no MTL do OBJ, então um modelo importado chega cinza e correto em vez de texturizado e correto. Para STL para impressão, tudo exceto a forma é descartado — materiais, textura, animação, hierarquia de cena — e a malha geralmente vai precisar de reparo antes de um fatiador aceitar.

Os dados, num lugar só

Identificadores e procedência do formato GLB.
Extensão.glb
Tipo de mídiamodel/gltf-binary
Publicado porKhronos Group
Primeira publicação2016
EspecificaçãoglTF 2.0

Dúvidas comuns sobre arquivos GLB

Qual a diferença entre GLB e glTF?

Só embalagem. Um .gltf é JSON referindo um buffer binário separado e arquivos de textura, então um modelo é uma pasta; um .glb empacota tudo isso num arquivo binário só. Converter entre eles é sem perdas nas duas direções.

Como eu abro um arquivo GLB?

O Blender abre direto, assim como Unity, Unreal e Godot. Para uma olhada rápida, qualquer visualizador glTF baseado em web serve, e o Microsoft Office consegue embutir um num documento ou slide.

Por que meu arquivo GLB é tão grande?

Textura, quase sempre, não geometria. Quatro mapas em 4K já são trinta megabytes antes de contar mais nada. Reduza para 1K ou 2K primeiro, depois aplique Draco para a malha e KTX2 para as texturas.

Posso usar um GLB para realidade aumentada?

No Android, sim — o Scene Viewer pega GLB direto. O iOS usa o formato próprio USDZ da Apple, então um site suportando os dois publica um GLB e um USDZ lado a lado e deixa o elemento model-viewer escolher.

Devo guardar meus modelos como GLB?

Como cópia de entrega, sim. Como mestre de trabalho, não — um .gltf é JSON legível que pode ser inspecionado, corrigido num editor de texto e comparado de forma significativa no controle de versão, onde um GLB é opaco.

Posso imprimir em 3D um GLB?

Converta para STL ou 3MF primeiro, e espere reparar a malha. Modelos construídos para renderização em tempo real frequentemente não são estanques — superfícies sem espessura parecem perfeitas na tela e são impossíveis de imprimir.