Otimizador de GLB
Reduza o tamanho e o custo de renderização de um arquivo GLB ou glTF. Solte um arquivo aqui e escolha o que fazer: remover dados que não são referenciados, soldar e simplificar a geometria, mesclar malhas para reduzir as chamadas de desenho, redimensionar e recodificar texturas e compactar tudo com Meshopt. Você vê o tamanho após cada etapa, pode visualizar o resultado antes de confirmar e nenhum arquivo é enviado. A otimização e a visualização são gratuitas; o download do resultado faz parte dos planos Standard e Pro.
Publique uma fração dos bytes.
Remova o que nada referencia, solde e simplifique a geometria, recodifique as texturas e empacote tudo com Meshopt. Você recebe um número de tamanho depois de cada etapa e uma prévia do resultado antes de confirmar.
84% smaller. Our sample character with 10 clips baked in.
Meshopt, quantização e por que não há Draco aqui
Meshopt (EXT_meshopt_compression) é a opção padrão e a escolha certa para qualquer conteúdo executado em um navegador. Ele alcança tamanhos comparáveis aos do Draco e decodifica várias vezes mais rápido, o que importa porque a decodificação acontece enquanto o jogador olha para uma tela de carregamento. three.js, Babylon.js e PlayCanvas são compatíveis com ele, e o decodificador é pequeno o bastante para não ser motivo de preocupação.
A quantização não precisa de nenhuma extensão. Ela armazena posições, normais e UVs em tipos numéricos menores, que qualquer carregador de glTF lê sem precisar de um decodificador. A redução é mais modesta, mas o arquivo continua sendo um glTF simples, o que é a opção mais segura para entregar a um pipeline que você não controla.
Arquivos Draco abrem normalmente aqui, então você pode descompactá-los ou convertê-los para Meshopt. Gerar Draco é outra questão, e esta ferramenta não faz isso. O único codificador Draco que funciona em um navegador é uma compilação asm.js que leva minutos só para inicializar, enquanto os pacotes mantidos oferecem apenas compilações para Node. Disponibilizar um botão que congela sua aba seria pior do que não oferecê-lo. Se você precisa especificamente de uma saída em Draco, a CLI do glTF-Transform faz isso com um único comando na sua máquina:
npx @gltf-transform/cli draco input.glb output.glbO que cada etapa realmente faz
Remover dados não utilizados executa as operações de limpeza e desduplicação. É comum que exportadores deixem materiais que não são usados, texturas duplicadas com nomes diferentes e nós vazios. Em um arquivo que já passou por duas ou três ferramentas, só esta etapa muitas vezes gera uma redução considerável e não altera a aparência do modelo.
Soldar vértices mescla vértices que compartilham posição e normal, convertendo um conjunto de triângulos em uma malha indexada. A maioria dos exportadores já faz isso; os que não fazem obrigam você a armazenar três cópias de cada canto compartilhado.
Unir malhas por material resolve o problema das chamadas de desenho. Se o seu modelo tem duzentos objetos separados que usam o mesmo material, a GPU está fazendo duzentas operações em vez de uma. A união achata a hierarquia, por isso fica desativada por padrão: se o seu jogo move peças individuais ou se o modelo tem rig, você precisa preservar essa hierarquia.
Simplificar geometria reduz a malha com o simplificador do Meshopt, usando como meta a porcentagem de triângulos definida por você. É a opção certa para modelos digitalizados ou de CAD que chegam com centenas de milhares de triângulos desnecessários. Abaixo de cerca de 40%, a redução começa a ficar visível em formas orgânicas, mas menos em superfícies rígidas.
Reduzir quadros-chave de animação reamostra as faixas de animação e descarta quadros-chave situados em uma linha reta entre os quadros vizinhos. Em um clipe exportado a 60 fps por uma ferramenta que registrou cada quadro, esses dados podem representar a maior parte do arquivo.
Texturas são redimensionadas e recodificadas. WebP tem aproximadamente um terço do tamanho de um PNG equivalente e é compatível com todos os navegadores atuais. Limitar a resolução a 1024 geralmente não causa diferença visível em um modelo de jogo e, muitas vezes, proporciona a maior redução possível no download.
Tamanho do download não é o mesmo que uso de memória
A compressão reduz o arquivo. Ela não reduz a memória de vídeo ocupada pelas texturas após o envio para a GPU, pois JPEG, PNG e WebP são expandidos para pixels brutos na GPU. Uma textura de 2048×2048 ocupa cerca de 22 MB de VRAM, independentemente de ter sido baixada com 4 MB ou 200 KB.
Se o visualizador de GLB indicar que o problema é a memória das texturas, e não o tamanho do arquivo, a solução é o KTX2, que permanece compactado na GPU até mesmo na memória. As duas tecnologias são complementares: KTX2 para o que a GPU armazena, Meshopt para o que é transferido pela rede.
Perguntas frequentes
Como comprimir um arquivo GLB?
Solte o arquivo acima, mantenha as configurações padrão e clique em Otimizar. As configurações padrão removem dados não utilizados, soldam vértices e aplicam a compressão Meshopt, uma combinação segura para jogos web. A lista de etapas mostra de onde veio a redução.
Quanto meu arquivo pode diminuir?
Isso depende totalmente do conteúdo. Um modelo com muitas malhas e sem compressão costuma diminuir de 60% a 80% com Meshopt. Um arquivo composto principalmente por texturas PNG quase não diminui até que elas sejam convertidas para WebP. Um arquivo composto principalmente por dados de animação responde à redução de quadros-chave e a praticamente nada mais. O detalhamento por etapa mostra em qual caso você se encontra.
A otimização danifica o modelo?
A remoção de dados não utilizados, a soldagem, a redução de quadros-chave e a compressão Meshopt não causam perda visual. A simplificação, sim: ela remove triângulos, e isso fica visível em configurações agressivas. O redimensionamento de texturas e a conversão para JPEG também geram perdas. A visualização mostra o resultado real para que você possa verificá-lo antes de baixar.
O Unity ou o Godot abrirão o resultado?
A compatibilidade com Meshopt depende do importador e da versão usada. Portanto, se o arquivo for destinado a uma engine em vez de um navegador, escolha Quantização, que não exige extensão e funciona em qualquer lugar. Meshopt é a melhor opção quando o destino é uma página web.
É possível abrir um arquivo que já está compactado?
Sim. Arquivos de entrada compactados com Draco e Meshopt são decodificados durante o carregamento, então você pode descompactar um arquivo Draco, convertê-lo para Meshopt ou compactá-lo novamente com configurações diferentes.
Meu modelo é enviado para algum servidor?
Não. Todo o pipeline, incluindo os codificadores, é executado em um Web Worker no seu navegador. Depois que a página é carregada, a ferramenta funciona offline.