Atualizado 13 de setembro de 2026
O que uma conversão 3D conserva e quanto custa
Converter uma malha não é grátis nem é uma operação sem perdas. GLB e glTF conservam tudo. OBJ conserva os objetos separados e seus nomes de material, mas descarta a cor por vértice. STL conserva apenas os triângulos. PLY conserva a cor por vértice, mas achata a cena em uma única malha. USDZ conservou os dois objetos e as UVs, perdeu a cor por vértice e os nomes de material ao reler, e escreve um zip de USDA. Os números abaixo foram medidos, não estimados.
Cada número desta página vem de executar o mesmo conversor que este site usa, com arquivos reais, e de ler os atributos diretamente dos bytes que ele escreveu. Medido com 13 de setembro de 2026 three.js r179. O método está no final da página e o script está no repositório.

O que cada formato conserva?#
Uma cena de referência com dois cubos com nomes distintos, cada um com seu próprio material metálico com nome, cor por vértice, coordenadas UV e normais, foi convertida para os seis destinos. GLB e glTF voltaram completos. Todos os outros formatos perderam algo, e cada um perdeu algo diferente.
| Destino | Dois objetos | Coordenadas UV | Cor por vértice | Nomes de material | Número de vértices |
|---|---|---|---|---|---|
| GLB | Se conservam os 2 | Se conserva | Se conserva | Se conserva | 48 vértices |
| glTF | Se conservam os 2 | Se conserva | Se conserva | Se conserva | 48 vértices |
| OBJ | Se conservam os 2 | Se conserva | Se perde | Se conserva | 72 vértices |
| STL | Fundidos em 1 | Se perde | Se perde | Se perde | 72 vértices |
| PLY | Fundidos em 1 | Se conserva | Se conserva | Se perde | 48 vértices |
| USDZ | Se conservam os 2 | Se conserva | Se perde | Se perde | 72 vértices |
Por que STL e PLY fundem uma cena em uma única malha?#
Nenhum dos dois formatos possui gráfico de cena. GLB, glTF e OBJ podem descrever vários objetos com nome em um mesmo arquivo; STL descreve um único sólido e PLY uma única lista de elementos, então os dois cubos chegam como uma única malha e não há como separá-los novamente.
É a perda que mais surpreende, porque não se vê. O modelo convertido parece idêntico em um visualizador. Só quando você tenta selecionar, mudar o material ou animar uma de suas partes é que descobre que as partes já não existem.
Se o modelo precisa continuar sendo separável, o destino precisa ser GLB, glTF ou OBJ. Se for para uma laminadora ou para uma impressão de um único material, a fusão não custa nada.
Quanto cresce o arquivo?#
Mais do que a maioria espera. Em uma malha gerada real, o OBJ ocupou 5,6 vezes o que o GLB de origem ocupava, e o PLY 1,4 vezes. Os dois levam a mesma geometria.
| Conversão | Origem | Resultado | Proporção | Vértices escritos |
|---|---|---|---|---|
| mug.glb a GLB | 880 KB | 1.173 KB | 1,3x | 25.000 |
| mug.glb a glTF | 880 KB | 1.564 KB | 1,8x | 25.000 |
| mug.glb a OBJ | 880 KB | 4.928 KB | 5,6x | 150.000 |
| mug.glb a STL | 880 KB | 2.441 KB | 2,8x | 150.000 |
| mug.glb a PLY | 880 KB | 1.221 KB | 1,4x | 25.000 |
| mug.glb a USDZ | 880 KB | 2.927 KB | 3,3x | 150.000 |
| lion.glb a GLB | 8.768 KB | 11.690 KB | 1,3x | 249.369 |
| lion.glb a glTF | 8.768 KB | 15.587 KB | 1,8x | 249.369 |
| lion.glb a OBJ | 8.768 KB | 51.880 KB | 5,9x | 1.496.202 |
| lion.glb a STL | 8.768 KB | 24.352 KB | 2,8x | 1.496.202 |
| lion.glb a PLY | 8.768 KB | 12.176 KB | 1,4x | 249.369 |
| lion.glb a USDZ | 8.768 KB | 30.487 KB | 3,5x | 1.496.202 |
Por que OBJ e STL multiplicam o número de vértices?#
Porque nenhum dos dois compartilha vértices entre triângulos. Uma malha bem indexada guarda cada canto uma única vez e a referência de todos os triângulos que o tocam; OBJ e STL, tal como estão escritos aqui, guardam separadamente os três cantos de cada triângulo. No teste com lion.glb, isso converteu 249.369 vértices em 1.496.202, umas 6 vezes mais.
A geometria não muda. A mesma superfície, os mesmos triângulos, o mesmo contorno; apenas a contabilidade fica mais cara, e o arquivo cresce mais ou menos na mesma proporção.
PLY é o contraexemplo útil. Mantém o índice, assim a mesma malha é escrita com um tamanho próximo ao do original e continua levando a cor por vértice. Para uma malha grande em que só é necessário conservar a geometria, PLY é o destino honesto mais barato desta lista.
O texto em relação ao binário piora isso. glTF é JSON com os buffers codificados em base64, o que custa cerca de um 33 por cento a mais do que o GLB idêntico, porque base64 converte cada três bytes em quatro.
Por que o arquivo cresceu mesmo ao converter de GLB para GLB?#
Porque o conversor calcula as normais dos vértices de qualquer malha que chegue sem elas e então as escreve. Uma malha gerada frequentemente não tem atributos normais, então a ida e volta adiciona mais um vetor completo por vértice.
O teste com mug.glb é um exemplo claro: eles entram 880 KB E eles vão embora 1.173 KB , sem qualquer alteração na geometria. As normais adicionadas são a diferença.
É uma decisão deliberada, não uma falha. Uma malha sem normais parece plana e facetada na maioria dos escopos, então o conversor calcula essas ferramentas uma vez ao carregar, em vez de deixar cada ferramenta subsequente para adivinhar.
A conversão muda a forma?#
Não. Cada destino foi convertido e depois lido novamente, e a superfície saiu idêntica: o mesmo número de triângulos e a mesma área de superfície total, até o limite da medição, em uma malha de 498.734 triângulos. A geometria é a parte de um arquivo 3D que sobrevive intacta à conversão.
| Destino | Triângulos depois | Erro de área de superfície | Como as coordenadas são salvas |
|---|---|---|---|
| GLB | sem alterações | 0% | float32 binário |
| glTF | sem alterações | 0% | buffer em base64 |
| OBJ | sem alterações | 0% | texto com 17 decimais |
| STL | sem alterações | 0% | float32 binário |
| PLY | sem alterações | 0% | float32 binário |
| USDZ | sem alterações | 0% | zip de USDA |
Então, a conversão 3D tem perdas ou não?#
Ambas, e a distinção é o útil. A geometria não perde nada: a forma que entra é a forma que sai. Tudo que envolve a geometria sim se perde, e quais partes você perde depende totalmente do destino que você escolheu.
Aqui nada trunca as coordenadas. GLB, STL e PLY escrevem floats binários de 32 bits. glTF embute o mesmo buffer binário como base64 dentro do seu JSON. USDZ escreve um zip de USDA. OBJ é o único que escreve as posições como texto decimal, e as escreve com precisão completa em vez de arredondá-las, que é parte da razão pela qual seus arquivos são muito maiores.
Isso significa que a preocupação habitual, de que cada conversão degrada um pouco o modelo, como salvar novamente um JPEG, não se aplica. Converter de GLB para OBJ e voltar não suaviza a malha.
O que ele faz é descartar o que aparece mais acima nesta página: o grafo de cena em STL e PLY, a cor por vértice em OBJ, STL e USDZ, os nomes de material em STL, PLY e USDZ, e as UV em STL. Essas perdas são permanentes, no sentido de que reconverter não pode inventá-las novamente.
Qual destino você deve escolher?#
Escolha o destino de acordo com o que precisa sobreviver, não de acordo com a extensão que a ferramenta receptora coloca primeiro em sua lista. Estas são as escolhas defensáveis com base no que foi medido acima.
| Se você precisa | Escolha | Por quê |
|---|---|---|
| Tudo preservado, em um único arquivo | GLB | O único destino que manteve juntos o grafo de cena, os nomes de material, as UVs e a cor por vértice, com o menor tamanho entre os formatos completos. |
| Tudo mantido, legível por uma pessoa | glTF | O mesmo conteúdo que GLB, cerca de um 33 por cento maior porque os buffers vão em base64 dentro do JSON. |
| Objetos separados com nome em um programa de desktop | OBJ | Manteve os dois objetos e os dois nomes de material. Descartou a cor por vértice e escreve o arquivo maior dos seis. |
| Impressão 3D | STL | Triângulos e nada mais, que é tudo que um fatiador lê. O menor dos destinos que não são glTF em uma malha real. |
| Geometria e cor por vértice, com pouco peso | PLY | O único destino que não é glTF que manteve a cor por vértice, e mantém o índice, então fica próximo ao tamanho da origem. |
| Quick Look da Apple / RA no iPhone | USDZ | Manteve os dois objetos e as UV na cena de referência. Perdeu a cor por vértice e os nomes de materiais ao reler. Um zip de USDA que um telefone pode abrir. |
O que define esses formatos#
As medições acima são nossas; o que cada formato pode conter não decidimos nós. Estas são as especificações e as referências de formato que o decidem, para que o que esta página diz possa ser conferido na fonte em vez de acreditar cegamente.
- Especificação de glTF 2.0The Khronos Group
Define o grafo de cena, os materiais e os acessórios que GLB e glTF possuem, e explica por que foram os únicos destinos que sobreviveram intactos aqui.
- Tipo de mídia model/gltf-binaryIANA
O tipo registrado para GLB, o contêiner binário que foi medido acima.
- Tipo de mídia model/stlIANA
STL conforme registrado: triângulos e normais de face, sem nenhum campo para cor, UV, materiais ou nomes de objetos.
- O formato de arquivo Wavefront OBJPaul Bourke
A referência de sempre para OBJ, que não possui um campo próprio para a cor por vértice, o que coincide com o que a conversão descartou.
- O formato de arquivo de polígonos PLYPaul Bourke
Documenta as propriedades por vértice, cor incluída, que fazem de PLY o único destino que não é glTF que o conserva aqui.
- Especificação do formato de arquivo USDZPixar / OpenUSD
USDZ é um zip cuja primeira entrada é a cena USDA. Esse é o pacote que este conversor escreve e lê.
Como foi medido#
A medição executa o produto, não uma descrição dele. O script importa os mesmos carregadores e exportadores que o conversor do navegador, com as mesmas opções, e está no repositório para que os números possam ser reproduzidos ou discutidos.
- Construir uma cena de referência com dois cubes com nome, cada um com um material metálico com nome, cor por vértice, coordenadas UV e normais.
- Carregar malhas geradas reais da mesma forma que o conversor carrega o arquivo que você fornece, incluindo a etapa que calcula as normais de vértice quando uma malha chega sem elas.
- Exportar para GLB, glTF, OBJ, STL, PLY e USDZ com os mesmos exportadores que o conversor chama e os mesmos ajustes binários.
- Registrar o tamanho em bytes de cada resultado.
- Ler os atributos diretamente dos bytes escritos e não de uma cena recarregada, porque um carregador inventa o que o arquivo não contém: um OBJ sem linhas vn é recarregado da mesma forma com um atributo de normais sintetizado.
- Publicar a tabela diretamente a partir desse resultado. Medido o 13 de setembro de 2026 three.js r179.
Perguntas
- Converter um arquivo 3D perde qualidade?
- A forma não. Cada destino foi convertido e lido novamente, e o número de triângulos e a área da superfície total saíram idênticos em uma malha de 498.734 triângulos, sem truncar coordenadas em nenhum formato. O que se perde é tudo que envolve a geometria, e depende do destino: STL descarta as UVs, a cor, os materiais e o grafo da cena; OBJ descarta a cor por vértice; PLY descarta os nomes de materiais e funde a cena; USDZ descarta a cor por vértice e os nomes de materiais ao reler; GLB e glTF conservaram tudo.
- Qual formato 3D ocupa menos?
- GLB, em uma malha real. Nesses testes GLB escreveu 1.173 KB onde OBJ escreveu 4.928 KB para o mesmo modelo, porque GLB é binário e mantém um índice de vértices compartilhado, enquanto o OBJ resultante é texto e guarda separadamente cada canto de cada triângulo.
- Por que meu OBJ ocupa muito mais do que o GLB de onde saiu?
- Por duas razões, ambas de medida: OBJ é texto e não binário, e o OBJ que se escreve aqui não compartilha vértices entre triângulos, então o número de vértices se multiplica por algumas 6 em uma malha bem indexada. A superfície é idêntica; a contabilidade não.
- STL preserva a cor?
- Não. Um STL binário guarda uma normal de face e três cantos por triângulo, e não tem nenhum campo para cor, UV, materiais ou nomes de objeto. Isso foi cumprido em todos os STL escritos nesses testes.
- Posso conservar a cor por vértice sem usar GLB?
- Sim, com PLY. Nestes testes foi o único destino que não é glTF que declarou uma propriedade de cor no seu cabeçalho. Isso sim, achata uma cena de vários objetos em uma única malha, então você conserva a cor e perde as partes.
- Converter um modelo 3D várias vezes o degrada?
- Não. Diferente de voltar a salvar um JPEG, uma conversão 3D não acumula erro: as coordenadas são copiadas como floats binários ou, no caso de OBJ, escrevem-se como decimais com precisão completa. Uma viagem de ida e volta por qualquer um desses formatos devolveu a superfície idêntica. O que não volta é a informação de materiais e da cena que o destino não podia levar desde o início.
- Posso reproduzir esses números?
- Sim. O script de medição está no repositório, em scripts/measure-conversions.mjs, e escreve o JSON que esta página lê. Foi executado pela última vez em 13 de setembro de 2026 three.js r179.