Converter GLB para OBJ

Aqui você converte GLB para OBJ de graça e sem conta: solte o arquivo acima e em poucos segundos o resultado está pronto para baixar. A conversão acontece dentro do seu próprio navegador, então o arquivo nunca é enviado. Funciona igual no Windows, no macOS e no Linux e também no iPhone e no Android, e continua funcionando mesmo se você cortar a conexão.

  • Onde roda No seu navegador. O arquivo nunca é enviado.
  • Reconstruído OBJ funciona de um jeito diferente de GLB. Não é a degradação gradual de um codec com perda: o que OBJ consegue expressar é reproduzido fielmente, e o que não tem equivalente ali não sobrevive de jeito nenhum.
  • Limite de tamanho Até 100 MB por arquivo, de graça e sem conta.
  • Vale saber Só a geometria. Materiais, cores, texturas e animação não vão junto, e um modelo colocado várias vezes volta com cada cópia fixada na sua própria posição.

Até 100 arquivos de uma vez. Formatos misturados não são problema.

Por que um GLB acaba precisando virar um OBJ

O glTF e sua forma binária são bem mais novos que a maior parte do software que engenheiros e artistas realmente têm instalado. A Wavefront publicou o OBJ em 1992, e ele continua sendo o menor denominador comum: Blender, MeshLab e Maya leem, e também lê praticamente todo importador de CAD, ferramenta de reparo de malha, fatiador e utilitário acadêmico escrito desde então. Um GLB vindo de um pipeline web precisa virar OBJ para sequer abrir nesse mundo.

Vale entender a conversão como uma mudança de tipo, não uma perda de qualidade. Um GLB é uma cena: hierarquia de nós, materiais, texturas, animação, câmeras. Um OBJ é uma lista de pontos e os triângulos entre eles, mais um ponteiro para um arquivo de material separado. Tudo que não é geometria precisa achar outro lugar para morar, e nesta conversão não acha.

O que o arquivo OBJ contém depois que um GLB passa por ele

Três tipos de linha e nada além disso. Uma linha de comentário nomeando o programa, uma linha `o` por malha carregando o nome que vinha do GLB, uma linha `v` por vértice com três coordenadas decimais, e uma linha `f` por triângulo com três índices. Sem linhas `vt`, sem `vn`, sem grupos de suavização `s`, sem `usemtl`, sem `mtllib`.

A convenção de índices é a parte que costuma pegar quem escreve o próprio analisador de arquivos: no OBJ os índices começam em um, não em zero, e contam por todo o arquivo em vez de reiniciar a cada grupo. O conversor acompanha esse deslocamento enquanto percorre as malhas, então um segundo objeto referenciando seu próprio primeiro vértice é gravado com o total acumulado somado. Errar isso produz um OBJ que abre e mostra os triângulos errados, o que é pior do que um que simplesmente falha.

O MTL que falta é o custo real de GLB para OBJ

Um OBJ nunca guardou material dentro de si mesmo. Ele guarda uma linha `mtllib` apontando para um arquivo `.mtl` complementar, e é esse arquivo que guarda as cores, o brilho e os caminhos das texturas. Este conversor não grava linha `mtllib` nenhuma e não produz `.mtl` nenhum, então o OBJ fica materialmente vazio, e seu importador aplica o cinza padrão dele.

Isso é consequência de ler só a geometria. Os parâmetros de metálico-rugosidade do GLB, sua cor base, texturas de normal e coordenadas UV nunca são extraídos, então não há nada para escrever num MTL que não seria inventado. Inventar seria pior: um MTL com valores padrão plausíveis diz a um artista mais adiante que o material veio da origem quando não veio.

Os nomes das partes sobrevivem do GLB para grupos do OBJ

Cada nome de malha do glTF é gravado como a linha `o` daquele grupo no OBJ, então um modelo montado a partir de componentes nomeados — carcaça, suporte, tampa — entra no Blender ou no Maya como três objetos nomeados, e não como uma forma só. Uma malha sem nome na origem recebe um nome gerado para que a estrutura de grupos continue legível.

Isso importa mais do que parece. Numa conversão só de geometria, os nomes são quase a única informação semântica que sobrevive, e são o que permite que alguém do outro lado reatribua materiais às partes certas. Se o seu GLB tem malhas sem nome e você vai precisar dessa distinção, nomeie elas antes de exportar, não depois de importar.

Como a hierarquia de cena do GLB infla a contagem de vértices do OBJ

O glTF pode posicionar uma mesma malha várias vezes referenciando ela a partir de vários nós com matrizes diferentes. O OBJ não tem equivalente. O conversor resolve a diferença percorrendo a cena, compondo cada matriz de nó com a do pai, e gravando a transformação de mundo resultante direto nas coordenadas dos vértices antes de escrever elas.

Então um GLB com uma malha de parafuso instanciada sessenta vezes produz um OBJ com sessenta grupos e sessenta cópias completas da geometria do parafuso. O modelo fica correto — é o único jeito de mantê-lo correto — e o arquivo fica sessenta vezes maior que a origem instanciada nessa região. Se o seu software de destino consegue instanciar, reconstruir a instância lá depois de importar costuma valer o esforço.

Escala e unidade quando números do GLB viram números do OBJ

Nenhuma escala é aplicada. Quaisquer valores de coordenada que o GLB continha são gravados no OBJ sem alteração, na precisão em que o JavaScript imprime eles. Esse é o comportamento correto e também é uma armadilha, porque os dois formatos entendem um número de jeitos diferentes.

O glTF 2.0 define sua unidade linear como metro, então uma cadeira modelada em tamanho real tem coordenadas ao redor de 0,9. O OBJ não declara unidade nenhuma, e cada importador aplica sua própria suposição — comumente metros no Blender, comumente centímetros ou polegadas em ferramentas de CAD mais antigas. Confira a caixa delimitadora depois de importar contra uma dimensão que você conhece, uma vez, em vez de descobrir o fator depois numa peça impressa ou numa montagem.

O que o buffer de índices do GLB vira na lista de vértices do OBJ

Ele passa direto, como está. O glTF já guarda triângulos como índices numa lista de posições compartilhada, então não há nada para reconstruir: cada entrada do acessor vira uma linha `v` na mesma ordem, e cada índice vira uma entrada `f` apontando para ela. Nada é fundido neste caminho — a etapa de fusão que junta coordenadas coincidentes se aplica ao ler STL e OBJ, onde duplicatas são a norma, e não aqui.

Isso importa quando o GLB veio de um exportador de verdade, porque o glTF guarda uma UV e uma normal por vértice. Um vértice numa costura de textura ou numa aresta viva precisa ser dividido em duas ou três cópias na mesma posição para que os atributos possam diferir. Essas cópias sobrevivem no OBJ, onde os atributos que justificavam elas não sobrevivem, então um modelo fechado pode acusar arestas de fronteira ao longo das costuras. "Merge by Distance" no Blender, ou "Merge Close Vertices" no MeshLab, resolve isso num único comando.

Abrindo o OBJ convertido no Blender, MeshLab ou Maya

Os três importam sem configuração nenhuma. Espere uma aparência facetada de imediato: sem linhas `vn` no arquivo, cada importador calcula normais planas por face, e uma superfície curva tesselada em triângulos parece exatamente a casca poligonal que é. "Shade Smooth" no Blender, ou um ângulo de auto-suavização perto de 30 graus, restaura a aparência que o GLB tinha.

Espere nenhum material. Atribuir um é um trabalho de dois cliques em qualquer um dos três programas, e vale fazer isso antes de qualquer outra coisa para o modelo ficar visível contra o fundo do visualizador. Se o modelo não aparece de jeito nenhum, a causa costuma ser escala, não uma importação falha — dê zoom na seleção e leia o painel de dimensões.

Quando manter o GLB é a decisão melhor

Se o destino lê glTF, não converta. Blender, three.js, Babylon.js, Unity, Unreal, o Visualizador 3D do Windows e o Preview do macOS abrem um GLB com o material intacto, e passar ele por um OBJ custa tudo isso de graça.

Converta quando o destino genuinamente não consegue ler glTF, ou quando você quer especificamente um arquivo de texto que dá para inspecionar, buscar ou comparar. Um OBJ é um vértice por linha e uma face por linha, o que faz dele o mais fácil de conferir a olho entre esses seis formatos — e é essa legibilidade, não fidelidade, a vantagem que ele mantém sobre tudo que veio depois.

Como converter GLB para OBJ

  1. Solte o seu arquivo GLB nesta página, ou clique para escolher um.
  2. Escolha OBJ como destino. A conversão acontece no seu navegador e o arquivo não é enviado.
  3. Baixe o arquivo OBJ pronto.

GLB ou OBJ: o que muda

GLB comparado com OBJ
GLBOBJ
Nome completoBinary glTFObjeto Wavefront
Extensão do arquivo.glb.obj
Tipo de mídiamodel/gltf-binarymodel/obj
Publicado pela primeira vez20161992
Publicado porKhronos GroupWavefront Technologies
EspecificaçãoglTF 2.0
LicençaPadrão abertoPadrão aberto
Situação hojeAtualAtual
Abre no navegadorNenhum navegadorNenhum navegador
Considerado no lugarGLTFGLTF, PLY, STL

Abrir o resultado

Blender lê tanto GLB quanto OBJ, então dá para comparar o resultado com o original sem um segundo programa.

Para que serve cada formato

Os dois miram trabalhos diferentes: GLB em a web e entregar um arquivo pronto, OBJ em mover dados entre programas e a edição. Vale pesar isso antes, porque o motivo de um existir costuma ser o motivo de o outro ser incômodo.

GLB é o formato da Khronos Group, publicado em 2016. Está descrito em glTF 2.0, e vale conhecer se o arquivo precisa sobreviver à ferramenta que o escreveu.

OBJ vem da Wavefront Technologies é de 1992. Blender, MeshLab e Maya leem o formato.

OBJ foi publicado em 1992 e GLB em 2016. O mais antigo costuma ser o arquivo mais seguro para entregar; o mais novo faz o mesmo com menos bytes.

De GLB para OBJ: perguntas frequentes

Meu arquivo GLB é enviado para algum lugar?

Não. Esta conversão acontece inteiramente no seu navegador, então o arquivo não sai do seu aparelho. Você mesmo pode conferir: abra a aba de rede das ferramentas de desenvolvedor e converta alguma coisa. Você verá a própria página e as requisições de estatística e de publicidade com que este serviço é pago, e nenhuma que leve o seu arquivo.

Converter GLB para OBJ é grátis?

É. Sem conta, sem marca d’água e sem cota diária para gastar: roda no seu próprio aparelho, então você pode voltar quantas vezes quiser. O navegador processa arquivos de até 100 MB, 100 por vez.

Perde qualidade ao converter GLB para OBJ?

GLB e OBJ descrevem o conteúdo de maneiras radicalmente diferentes. A conversão é, portanto, uma reconstrução e não uma cópia: fiel, mas não idêntica byte a byte. Só a geometria. Materiais, cores, texturas e animação não vão junto, e um modelo colocado várias vezes volta com cada cópia fixada na sua própria posição.

Preciso instalar alguma coisa para abrir um arquivo OBJ?

Para a conversão, não: ela acontece no navegador que você já tem aberto. Para abrir o resultado você precisa depois do programa com que o seu aparelho normalmente exibe Wavefront Object.

Mais sobre esses formatos