Visualizador GLB · abrir, inspecionar, comprimir

Visualizador e Compressor GLB — Abra, Inspecione e Reduza .glb / .gltf Online

Crie seu próprio visualizador glb

Solte um arquivo .glb ou .gltf e veja-o na hora no seu navegador — sem upload, sem software. Inspecione a malha, confira os materiais e depois comprima e otimize o arquivo para o seu jogo. Grátis, sem cadastro.

✦Jogo
Veja um .glb de um personagem pronto para o jogo

Um visualizador GLB no navegador decodifica o arquivo dentro da aba e o desenha com WebGL. Solte um .glb ou .gltf na página e o modelo aparece na tela em algumas centenas de milissegundos em um desktop; não há etapa de upload, nem instalador, nem conta. Um GLB é um asset glTF 2.0 empacotado em um único arquivo binário: um cabeçalho de 12 bytes, um chunk JSON que descreve o grafo de cena e um chunk BIN que guarda os buffers de vértices, os buffers de índices e, normalmente, as imagens embutidas.

A mesma página é a etapa de inspeção e redução de um pipeline de jogo. Você abre a exportação, observa o wireframe, as normais, as ilhas de UV e os slots de material, confirma que nada quebrou na saída do Blender ou do Maya, depois comprime o arquivo e baixa uma cópia para a sua engine. Esta página cobre o que cada visualização de inspeção detecta, as três alavancas de compressão e a ordem para acioná-las, e os orçamentos dentro dos quais uma cena de navegador realmente precisa viver.

Abra um .glb bem aqui

Arraste um arquivo para a zona de soltar ou escolha um na caixa de diálogo de arquivos. A página o lê por meio da File API como um Blob URL mais um ArrayBuffer e o analisa na mesma aba. Abra o painel de rede do navegador enquanto faz isso: nenhuma requisição carrega o modelo. Nada é colocado em fila, nada é gravado em um servidor e fechar a aba o descarta.

O local importa duas vezes. Primeiro a privacidade: personagens não lançados, trabalhos de clientes sob NDA, assets escaneados que você pagou. Enviá-los por um conversor de terceiros é um problema de licenciamento antes de ser um problema de desempenho. Segundo a latência: um GLB de 40 MB por uma conexão de upload de 10 Mbps dá cerca de meio minuto de espera antes mesmo de qualquer conversão começar, e essa espera muda a frequência com que você de fato verifica um arquivo. Uma leitura local em um SSD é uma fração de segundo, e o custo de análise é trabalho de CPU na sua própria máquina.

Entrada aceita: .glb é o caso de arquivo único. .gltf é a mesma cena em JSON, então normalmente chega com um buffer .bin e uma pasta de imagens. Selecione vários, arraste a pasta inteira ou solte um zip e o visualizador resolve as URIs relativas. Data URIs embutidas funcionam sem sidecars. As texturas podem ser PNG, JPEG, WebP ou KTX2 (Basis Universal), e a geometria pode estar comprimida com Draco ou meshopt, porque o visualizador traz ambos os decodificadores e lê a lista de extensões no chunk JSON para decidir qual usar.

O que ele renderiza: materiais PBR sob uma luz direcional mais um mapa de ambiente opcional, uma grade de 1 m que pode ser ativada para você ler a escala real, uma lista de clipes para cada animação do arquivo e um painel de estatísticas com contagem de triângulos, contagem de vértices, contagem de nós, uma estimativa de draw calls e as dimensões em pixels e o tamanho em bytes de cada imagem embutida. A memória é o único limite rígido. Um GLB de 100 MB normalmente abre em um desktop; uma aba de celular pode ser encerrada pelo navegador antes de terminar a análise.

O que um visualizador GLB de navegador faz de diferente

A alternativa é uma ida e volta: abrir o DCC, importar, olhar, exportar, carregar a engine, perceber o problema, voltar. Cada salto custa minutos e cada salto pode introduzir sua própria alteração, então você acaba depurando o pipeline em vez do asset. Manter a inspeção na mesma aba onde o arquivo já está elimina a ida e volta e, mais útil ainda, significa que os números que você lê são os números do arquivo que você está prestes a enviar.

Inspecione: wireframe, normais, layout de UV, materiais

Quatro visualizações detectam a maioria das exportações ruins antes que cheguem à engine. O wireframe mostra a densidade de triângulos e revela onde o exportador triangulou um n-gon. As normais mostram a orientação das faces, então uma superfície invertida aparece preta sob uma única luz direcional. O layout de UV achata o canal de UV em uma grade com a textura ao fundo, o que torna óbvias as ilhas sobrepostas, os texels esticados e a geometria fora do intervalo de 0 a 1. Materiais lista cada material com suas texturas, modo alfa, flag de faces duplas e configurações de espaço de cor.

Inspecione antes de comprimir, sempre. Draco e meshopt reescrevem os buffers de vértices e alteram o layout dos vértices, e redimensionar uma textura pode esconder uma emenda que já estava lá. Se você comprimir primeiro, deixa de conseguir dizer se um artefato é seu ou do compressor.

O painel de estatísticas faz parte da inspeção. Anote a contagem de triângulos, a contagem de vértices, a contagem de nós, a contagem de materiais e as dimensões de cada imagem embutida antes de mexer em qualquer coisa. Esses são os números de referência com que você compara após cada etapa de compressão, e eles dizem qual alavanca realmente vale a pena puxar.

SintomaO que a visualização mostra
Sombreamento facetado em uma superfície que deveria ser lisaWireframe mais normais: vértices divididos ao longo de cada aresta, ou uma aresta dura onde os grupos de suavização foram perdidos
Superfícies escuras ou invertidasNormais: faces apontando para dentro acendem em preto contra uma única fonte direcional
Textura estica, vaza ou se repete erradoLayout de UV: ilhas sobrepostas, ilhas empurradas para fora do intervalo de 0 a 1, ou densidade de texels que varia ao longo da malha
O modelo parece certo, mas é mais pesado do que o esperadoWireframe: densidade de triângulos em áreas planas, mais a contagem de triângulos no painel de estatísticas
A cor base parece lavada ou clara demaisMateriais: a flag sRGB na textura baseColor. Linear em um mapa de cor parece errado imediatamente
Textura preta ou ausente após importar na engineMateriais: imagem referenciada por URI mas não empacotada no chunk BIN, então o arquivo sidecar se perdeu
Partes transparentes se ordenam atrás das sólidasMateriais: alphaMode BLEND onde MASK bastaria, e flags de faces duplas dobrando o overdraw
Lightmap ausente no segundo canal de UVLayout de UV em TEXCOORD_1: ausente, ou presente mas vazio porque o exportador o descartou

Comprima um GLB sem quebrá-lo

Três alavancas, e elas não são iguais. Descartar dados que nada referencia é gratuito e reversível reexportando. Recodificar texturas remove a maior parte dos bytes em um asset típico, porque as imagens dominam o arquivo. A compressão de geometria é a que pode quebrar um modelo, então ela vem por último.

Nenhuma delas tem uma taxa garantida. Um GLB que é um único PNG de 4096 por 4096 não se comporta nada como um GLB que é majoritariamente dados de vértices, e uma cena pesada em malha com 30 texturas em 512 não responderá da mesma forma que um único personagem com um atlas 4K. Meça após cada etapa em vez de confiar em um número do asset de outra pessoa.

Os decodificadores são uma restrição de entrega, não um detalhe. Draco precisa de um módulo decodificador Draco, meshopt precisa do MeshoptDecoder, e KTX2 precisa de um transcodificador com os formatos de destino corretos. O three.js traz o GLTFLoader, mas você mesmo precisa conectar o DRACOLoader, o MeshoptDecoder e o KTX2Loader; Babylon.js e o glTFast da Unity têm equivalentes. Se você comprimir com uma extensão que seu runtime não conhece, o modelo carrega preto ou lança um erro, e vai parecer uma corrupção de arquivo em vez de um erro de configuração.

  • Alavanca 1 — Descarte dados não usadosImagens que nenhum material referencia, materiais duplicados que diferem apenas no nome, morph targets com deltas todos zerados, TEXCOORD_1 quando não há lightmap, câmeras e luzes que vieram junto do exportador do Blender, clipes de animação em props estáticos e extensões KHR_ que seu runtime ignora. Esta etapa é sem perdas, e é também a etapa que as pessoas pulam.
  • Alavanca 2 — Redimensione e recodifique texturasÉ daqui que costuma vir a maior parte da redução de bytes. Os mapas de cor base e emissivo toleram JPEG ou WebP em qualidade mais baixa porque já são sRGB e não carregam gradientes finos. Mapas de normal, metallicRoughness e oclusão não devem ir para JPEG, porque o ringing da compressão aparece como artefatos de sombreamento por toda a superfície; mantenha-os em PNG ou mova-os para KTX2 com UASTC. O KTX2 por meio de KHR_texture_basisu permanece comprimido na memória da GPU, o que reduz a VRAM além do tamanho do arquivo, e o ETC1S é a opção mais barata para mapas de cor.
  • Alavanca 3 — Comprima a geometriaDuas opções na prática. EXT_meshopt_compression decodifica rápido e é um bom padrão para assets que chegam em streaming durante o jogo. Draco costuma produzir malhas estáticas menores, mas custa mais tempo de decodificação e move o trabalho para a thread principal, a menos que você use um worker. Combine qualquer uma delas com KHR_mesh_quantization: posições de 14 a 16 bits, normais octaédricas de 10 ou 8 bits, UVs de 12 bits. A quantização desloca ligeiramente a geometria, então verifique os menores detalhes e qualquer malha usada para colisão.
1

01

Abra o arquivo e registre a referência: triângulos, vértices, nós, estimativa de draw calls, lista de imagens com dimensões, tamanho total em bytes.

2

02

Remova primeiro os dados não referenciados. Recarregue e compare as estatísticas. Nada deve mudar visualmente, e o arquivo deve ficar menor.

3

03

Cuide das texturas depois, da maior para a menor, e reveja no mesmo nível de zoom em que a textura será vista durante o jogo.

4

04

Comprima a geometria por último com meshopt ou Draco mais quantização, depois recarregue e reinspecione o wireframe, as normais e o layout de UV.

5

05

Exporte em GLB, depois carregue esse arquivo exato na engine com os decodificadores correspondentes ativados antes de apagar o original.

GLB vs glTF vs FBX — qual deles a sua engine quer

glTF 2.0 é o formato de runtime. GLB e .gltf são dois contêineres para os mesmos dados: o GLB coloca o JSON e o buffer binário em um único arquivo, o .gltf os mantém separados como texto legível mais sidecars. FBX é um formato de intercâmbio de DCC que é anterior ao glTF e ainda é o que a maioria dos riggers e animadores entrega, e OBJ é só geometria, sem animação e sem materiais PBR.

Convenções de eixo e unidade causam mais bugs de importação do que o tamanho do arquivo. O glTF é metros, Y para cima, destro, com câmeras olhando para -Z. Os exportadores FBX discordam sobre unidades, e uma incompatibilidade entre centímetros e metros aparece como um modelo cerca de 100 vezes pequeno ou grande demais. O exportador glTF do Blender converte Z-up para Y-up para você; desative isso e o modelo chega deitado de lado. Confira a bounding box no visualizador contra uma dimensão conhecida antes de culpar a engine.

FormatoO que éOnde é a escolha natural
GLBglTF 2.0 como um único arquivo binário: chunk JSON mais chunk BIN com buffers e imagens embutidosRuntime no navegador, Godot, Unity com glTFast, Babylon.js, three.js. Também é o formato certo para enviar a outra pessoa
.gltf mais .bin e arquivos de imagemA mesma cena como JSON puro com buffers e texturas externosControle de versão e edição manual. O JSON faz diff de forma limpa, o que o GLB não faz
FBXFormato de intercâmbio da Autodesk com seu próprio SDK e tratamento inconsistente de unidadesExtrair rigs, animação e blend shapes do Maya ou do 3ds Max. Não é um formato de runtime
OBJ mais MTLGeometria e um arquivo de material básico, sem animação, sem PBRProps estáticos e impressão 3D. Nada a ganhar para um asset de jogo
USDZContêiner AR não comprimido da AppleQuick Look do iOS e visualização AR, não renderização de jogo
STLSopa de triângulos sem UVs, materiais ou dados de normais além das normais de faceApenas impressão 3D e reparo de malha

Otimize para a web: draw calls, tamanho de textura, orçamento de polígonos

Trate esses valores como pontos de partida que você ajusta por projeto, não como limites. Uma cena de navegador que mantém uma taxa de quadros estável em um laptop intermediário costuma ficar abaixo de algumas centenas de milhares de triângulos e, muito mais importante, abaixo de algumas centenas de draw calls. Instancing e mesclagem de materiais mexem no primeiro número; nada mexe no segundo exceto combinar geometria.

As draw calls são contadas por malha por material. Duzentos props que cada um carrega seu próprio material custam duzentos draws mesmo que cada um tenha apenas algumas centenas de triângulos, e o custo de CPU para submetê-los pode exceder o custo de GPU da geometria. Mescle geometria estática que compartilha um material, junte texturas pequenas em uma única imagem e use instancing para props repetidos. Materiais transparentes custam mais do que sua contagem de triângulos sugere porque se ordenam e se misturam por pixel, e a projeção de sombras re-renderiza a mesma geometria em um mapa de profundidade.

O tamanho da textura geralmente domina tanto o arquivo quanto a VRAM, que é a parte que as pessoas entendem ao contrário. Uma textura RGBA8 de 4096 por 4096 ocupa 67.108.864 bytes na memória antes dos mipmaps, e os mipmaps adicionam cerca de um terço em cima; uma malha de 100k triângulos com posições, normais e UVs de 4 bytes é alguns megabytes em comparação. Um único mapa de normal 4K descuidado pesa mais do que toda a malha sobre a qual ele está. O KTX2 mantém a textura comprimida na memória da GPU, o que é uma economia diferente do tamanho do arquivo e muitas vezes a que importa no mobile.

O espaço de cor entra nesta lista porque é rotineiramente errado. Cor base e emissivo são sRGB. Normal, metallicRoughness e oclusão são lineares. Troque-os e o material fica ou lavado, ou escuro demais, e nenhum ajuste de iluminação corrige isso, porque os dados foram interpretados errado no momento do carregamento.

AlvoTriângulosDraw callsOrçamento de texturaTamanho do download
Cena de navegador em mobile50k a 150k no totalabaixo de 1001024 no máximo, 512 na média2 a 5 MB
Cena de navegador em desktop200k a 500k no total150 a 3002048 no máximo5 a 15 MB
Asset de destaque únicoaté cerca de 1M1 a 52048, KTX210 a 20 MB
Props de fundoabaixo de 5k cadaatlas compartilhado e instancing256 a 512 cadacompartilhado com o atlas

Inspecione um modelo real antes de comprimir

Ler sobre topologia não é o mesmo que girá-la. A Blender Model Gallery está embutida nesta página em modo wireframe, para que você possa girar uma exportação real e olhar os triângulos que a engine realmente vai desenhar, em vez dos quads limpos que o modelador viu.

Observe três coisas enquanto ele gira. Curvatura: onde os triângulos se aglomeram é onde o exportador os adicionou, e uma parede plana de 20 triângulos ao lado de uma esfera de 20.000 triângulos é normal. Emendas: uma mudança de sombreamento ao longo de uma aresta significa que os vértices foram divididos ali, o que é correto em uma emenda de UV e errado em uma superfície lisa. Silhueta: o contorno é o que o jogador lê à distância, e ele sobrevive a uma etapa de decimação muito melhor do que o detalhe interno.

Os mesmos orçamentos se aplicam aos assets enviados em Mini World e The Cyclops' Island, ambos rodando em uma aba de navegador por meio do 3D game builder. Um prop de 40k triângulos sozinho é aceitável; quarenta deles em uma cena não é, e a visualização de wireframe é onde você descobre isso antes que a taxa de quadros descubra.

Blender Model Gallery — exportações .glb reais; alterne para wireframe para verificar a topologia antes de comprimir.
Assim que um arquivo for pequeno o bastante, coloque-o em um mundo e caminhe ao seu redor.

Entre no mundo ao qual ele pertence

Um sprite é um personagem sem lugar para ficar. O último passo é o que ninguém mais oferece: pegue a folha que você acabou de montar e coloque-a em um mundo pelo qual alguém possa caminhar — uma pequena ilha, um planeta, uma esquina chuvosa. Cada mundo neste site foi feito a partir de uma descrição escrita e publicado como uma página que você pode jogar.

FAQ

Preciso fazer upload do meu .glb para visualizá-lo? +

Não. O arquivo é lido pela File API do navegador e analisado na aba; abrir, inspecionar e comprimir rodam tudo localmente. Abra o painel de rede se quiser confirmar que nenhuma requisição carrega o seu modelo. A própria página precisa ser carregada uma vez, então você precisa de conexão para acessar a ferramenta, mas o modelo nunca sai da máquina.

A ferramenta modifica o meu arquivo? +

Não. O arquivo no disco nunca é tocado. Toda operação roda sobre uma cópia na memória e a compressão gera um novo download, então você mantém as duas versões. Guarde o original até ter carregado o arquivo comprimido na sua engine.

A compressão é com perdas? +

Depende de qual alavanca você puxa. Descartar dados não referenciados é sem perdas e reversível reexportando. Redimensionar e recodificar uma textura é com perdas, e quantizar posições de vértices e normais é com perdas; ambos costumam ficar invisíveis em configurações sensatas e óbvios em configurações agressivas. Reveja as normais, o layout de UV e os menores detalhes da malha após cada etapa.

Quais formatos posso abrir e exportar? +

Abrir: .glb, .gltf com seus sidecars .bin e de imagem, e versões compactadas em zip de qualquer um deles. As texturas podem ser PNG, JPEG, WebP ou KTX2, e a geometria comprimida com Draco ou meshopt é decodificada no carregamento. Exportar: GLB, ou .gltf mais um .bin separado quando você quer o JSON legível em um diff, opcionalmente com texturas KTX2.

É grátis? Preciso de uma conta? +

Grátis, e não há cadastro, nem conta, nem marca d'água na saída. O trabalho acontece na sua máquina, então não há custo de servidor por arquivo a repassar para você.

Minha engine vai importar o arquivo comprimido? +

Normalmente sim, desde que o runtime esteja configurado para as extensões que você usou. Draco precisa de um decodificador, meshopt precisa do MeshoptDecoder, e KTX2 precisa de um transcodificador; three.js, Babylon.js e o glTFast da Unity suportam os três, mas não por padrão. O Godot importa um .glb simples sem nenhuma configuração. Carregue o arquivo comprimido na engine uma vez antes de apagar o original.

Volte para o 3D Game Builder

Todos os 31 mundos, jogos e cenas 3D finalizados ficam em uma única página — todos eles jogáveis.

Plataforma: Neta StudioPágina: Visualizador e Compressor GLBLeia a seguir: /explore/tool/3d-model-generator · /explore/tool/text-to-3d-model · /explore/guide/blender-uv-unwrap
×