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
Aqui você converte OBJ para GLB 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.
Até 100 arquivos de uma vez. Formatos misturados não são problema.
Eles são convertidos um após o outro e baixados juntos em um ZIP.
OBJ para GLB
Nenhum navegador lê OBJ nativamente, e nenhum lê GLB nativamente também — abrir um .glb direto faz o navegador baixar o arquivo em vez de renderizar. O que muda é o ecossistema de biblioteca. As bibliotecas de visualização 3D mais usadas na web recebem um GLB como entrada principal e carregam num pedido só, enquanto o suporte a OBJ é um carregador secundário que também precisa do MTL e de cada textura como pedidos separados.
Então a pergunta prática não é qual formato o navegador entende, e sim qual formato a biblioteca que você vai usar espera. Para qualquer coisa publicada nos últimos anos essa resposta é GLB, e numa página de produto em que o modelo é o conteúdo, reduzir quatro ou cinco pedidos de rede para um só faz diferença mensurável num celular.
Um arquivo OBJ não tem material dentro dele. Tem uma linha apontando para um arquivo .mtl ao lado, com material e caminhos de textura definidos ali, e linhas alternando entre as entradas desse arquivo. Este conversor lê só as linhas de vértice, grupo e face, e ignora o resto.
A consequência é inequívoca e vale planejar em cima dela: o seu GLB contém geometria e nome de grupo, e o visualizador desenha isso com o material padrão dele. Se o modelo devia aparecer com as texturas, o caminho é passar pelo Blender — importar o OBJ com o MTL junto, depois exportar como glTF binário, que empacota as imagens dentro do GLB. Esta página serve para o caso em que a forma é o produto final, não a aparência.
Um glTF 2.0 binário: cabeçalho curto, um bloco JSON, depois um bloco binário. Dentro do JSON, uma malha por grupo do OBJ, um nó por malha, uma cena listando todos, e por malha um acessor de posição em ponto flutuante e um acessor de índice.
Todo acessor de posição carrega o valor mínimo e máximo. Isso é uma exigência da especificação e também é a diferença prática entre um modelo que aparece ao carregar e um que não aparece — os visualizadores derivam a distância inicial da câmera a partir desses limites, e arquivos escritos sem eles são uma causa comum de cena aparentemente vazia.
O leitor começa um grupo novo a cada linha de grupo do OBJ, e o gravador emite uma malha glTF por grupo, cada uma no seu próprio nó com sua própria primitiva. Um OBJ exportado de um CAD com um grupo por face pode carregar centenas de grupos, e o GLB vai fielmente conter centenas de malhas.
Numa página, isso é um custo real. Cada primitiva é uma chamada de desenho separada e uma vinculação de buffer de GPU separada, e algumas centenas delas num celular intermediário é onde a taxa de quadros despenca. Juntar objetos no Blender antes de exportar o OBJ, ou remover as linhas de grupo com um editor de texto se elas não carregam significado nenhum, é um ajuste de dois minutos que vale mais que a maior parte do que acontece depois.
Nenhum atributo de normal é escrito. A especificação do glTF é explícita sobre o que um visualizador deve então fazer: calcular normais de face planas. Então uma esfera que parecia lisa no software de modelagem renderiza no navegador com cada triângulo visível como uma faceta distinta, o que soa como um estilo de baixo poligono proposital e geralmente não é.
Há duas correções limpas. Na biblioteca de visualização, calcular as normais de vértice a partir da geometria carregada resolve isso, e funciona porque as posições são mescladas em seis casas decimais durante a conversão. Ou faça a passagem de normais no Blender antes de exportar glTF de lá, o que também traz os materiais junto.
O glTF fixa os dois. É orientado com Y para cima e a unidade linear é o metro. O OBJ não fixa nenhum dos dois: é uma lista de números sem cabeçalho, sem unidade e sem convenção de eixo, e cada aplicação que escreve um arquivo desses tem seu próprio hábito.
Nenhuma conversão é aplicada aqui, então um OBJ com eixo Z para cima produz um GLB cujo modelo fica deitado, e um OBJ desenhado em centímetros produz um duzentas vezes maior do que deveria. Os dois são triviais de corrigir uma vez que você sabe qual é o seu caso — uma rotação e uma escala uniforme — e os dois são invisíveis até você carregar o arquivo. Conferir a caixa delimitadora contra uma dimensão que você já conhece é o diagnóstico mais rápido.
Faces com mais de três cantos são trianguladas em leque a partir do primeiro canto, o que é correto para quadriláteros convexos, o caso comum nesses arquivos, e pode produzir triângulos sobrepostos numa face côncava. Índices negativos, que contam para trás a partir do vértice mais recente, são resolvidos enquanto o arquivo é lido, porque o significado deles depende da posição no arquivo.
As posições são então soldadas: combinadas em seis casas decimais, então uma coordenada que aparece em vinte triângulos é guardada uma vez e referenciada vinte vezes. Isso reduz o tamanho do buffer e dá ao navegador uma malha cuja adjacência é real, o que é o que permite calcular normais suaves em vez do mesmo resultado plano.
Doze bytes por vértice para posições e doze bytes por triângulo para índices, mais um cabeçalho JSON pequeno. Um modelo de duzentos mil triângulos com cem mil vértices fica em torno de alguns megabytes, e nada disso é comprimido. Os índices usam sempre o tipo de quatro bytes, mesmo quando dois bastariam para uma malha pequena.
Se esse número é grande demais para a página, as respostas ficam antes e depois desta ferramenta, não nela: decime a malha num programa de modelagem primeiro, e rode uma ferramenta de compressão de glTF depois — lembrando que isso exige que o navegador carregue um decodificador compatível, um custo próprio numa página que mostra um modelo só.
Se o modelo precisa das texturas, converta passando pelo Blender para o MTL e as imagens virem junto. Se o modelo tem meio milhão de triângulos, decime antes de converter em vez de publicar e torcer. Se você precisa que pareça liso, trate as normais no visualizador ou no exportador, porque este caminho não vai entregar isso.
O que esta página faz bem é o caso honesto do meio: um OBJ limpo de uma peça, um adereço ou uma digitalização que precisa aparecer numa página como forma, num arquivo só, sem subir o modelo para ninguém. Essa conversão roda inteiramente no seu navegador, sem motor para baixar e com um teto de 100 MB, e produz um arquivo que qualquer visualizador web atual aceita.
| OBJ | GLB | |
|---|---|---|
| Nome completo | Objeto Wavefront | Binary glTF |
| Extensão do arquivo | .obj | .glb |
| Tipo de mídia | model/obj | model/gltf-binary |
| Publicado pela primeira vez | 1992 | 2016 |
| Publicado por | Wavefront Technologies | Khronos Group |
| Especificação | — | glTF 2.0 |
| Licença | Padrão aberto | Padrão aberto |
| Situação hoje | Atual | Atual |
| Abre no navegador | Nenhum navegador | Nenhum navegador |
| Considerado no lugar | GLTF, PLY, STL | GLTF |
Blender lê tanto OBJ quanto GLB, então dá para comparar o resultado com o original sem um segundo programa.
Os dois miram trabalhos diferentes: OBJ em mover dados entre programas e a edição, GLB em a web e entregar um arquivo pronto. Vale pesar isso antes, porque o motivo de um existir costuma ser o motivo de o outro ser incômodo.
GLB vem da Khronos Group é de 2016, descrito em glTF 2.0. Blender, three.js e Babylon.js 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.
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.
É. 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.
OBJ e GLB 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.
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 Binary glTF.