Otimização de GLB animado: um estudo de caso com CesiumMan
Quanto se ganha ao reduzir as amostras de animação ou os triângulos após a compressão? Testamos o CesiumMan, um personagem público com deformação por esqueleto, para avaliar essas decisões separadamente. O Meshopt proporcionou a maior parte da economia de bytes; reduzir a frequência de amostragem da animação acrescentou muito pouco.
O modelo e as condições do teste
O GLB original tem 438,044 bytes, 4,672 triângulos, uma animação e um esqueleto de deformação com 19 articulações. Executamos o gltfpack 1.3 nativo no Windows em 2 de outubro de 2026. Todas as exportações partiram do mesmo original. As texturas mantiveram seu formato original; nós com nome, materiais com nome e dados extras foram preservados. A amostragem da animação permaneceu no padrão de 30 FPS, exceto no teste a 15 FPS.
Origem e licença do modelo · Baixar medições e hash do arquivo original
Compare o arquivo inteiro, não apenas a contagem de chaves
| Configuração | Tamanho do arquivo (bytes) | Triângulos | Chaves de animação |
|---|---|---|---|
| Original | 438,044 | 4,672 | 2,736 |
| Conservadora | 269,452 | 4,672 | 1,205 |
| Meshopt · 30 FPS | 207,768 | 4,672 | 1,205 |
| Meshopt · 15 FPS | 206,240 | 4,672 | 625 |
| Meshopt · Retenção de 50% dos triângulos | 193,796 | 2,336 | 1,205 |
Aqui, chaves de animação significa a soma das contagens dos acessores de entrada de todos os amostradores de animação, não poses distintas ou quadros renderizados. Todas as saídas continuam com uma animação e 19 articulações do esqueleto de deformação. Essas contagens não comprovam que os tempos, as transformações ou a deformação permaneceram inalterados.
O que cada mudança proporcionou
O Meshopt reduziu o original em 52.6% sem solicitar redução de triângulos. Até a exportação conservadora alterou os dados de animação: sua contagem de chaves caiu de 2,736 para 1,205. Preservar todos os triângulos não é uma configuração sem perdas.
A 15 FPS, a contagem de chaves caiu novamente quase pela metade, mas o arquivo ficou apenas 1,528 bytes menor que a exportação Meshopt a 30 FPS: uma economia de 0.74%. Para este modelo, manteríamos 30 FPS, a menos que uma verificação separada do movimento justificasse a frequência menor. Menos chaves não se traduzem na mesma redução percentual do arquivo inteiro.
A meta de 50% dos triângulos foi atingida exatamente: 2,336 triângulos. Isso economizou 13,972 bytes, ou 6.72%, em comparação com o Meshopt sozinho. Ativar a simplificação agressiva com essa mesma meta produziu o mesmo tamanho em bytes e a mesma contagem de triângulos neste teste, portanto não trouxe benefício de tamanho aqui. Esse resultado não se aplica de forma geral a outras malhas.
Inspecione a mesma pose e depois o movimento
Estas renderizações usam a primeira animação aos 0.5 segundos, a mesma câmera e iluminação e o Three.js 0.180.0. As texturas continuam visíveis e o personagem mantém sua silhueta geral nesta vista. Uma imagem estática não pode comprovar a qualidade do movimento nem revelar todos os erros de deformação; inspecione os cotovelos, os joelhos e a transição do ciclo no seu próprio visualizador.
Há também uma diferença de duração: o Three.js informa um clipe original de 2.0000 segundos, cerca de 2.0083 segundos para as exportações a 30 FPS e 2.0417 segundos para a exportação a 15 FPS. Se sua aplicação sincroniza ações com a duração do clipe, teste essa integração em vez de presumir que os tempos originais foram preservados.
Reproduzir as exportações
Use o GLB original como input.glb em cada comando abaixo. Esses comandos correspondem às opções do site. As saídas Meshopt exigem um decodificador compatível, e os arquivos otimizados também exigem suporte à quantização de geometria.
gltfpack -i input.glb -o conservative.glb -kn -km -ke
gltfpack -i input.glb -o meshopt.glb -cc -kn -km -ke
gltfpack -i input.glb -o fps15.glb -cc -af 15 -kn -km -ke
gltfpack -i input.glb -o half.glb -si 0.5 -cc -kn -km -ke
Nossa escolha inicial para este recurso seria Meshopt a 30 FPS com todos os triângulos preservados. Considere a versão com metade dos triângulos quando o custo da geometria for relevante e as verificações de deformação forem satisfatórias. Estas medições abrangem um único personagem pequeno; não medem tempo de GPU, velocidade de carregamento nem fidelidade da animação em diferentes dispositivos.
Modelo: CesiumMan, © 2017 Cesium, licenciado sob CC BY 4.0. As renderizações mostram nossas versões derivadas otimizadas ao lado do original. O logotipo da Cesium continua fazendo parte do modelo; os direitos de marca são independentes. A Cesium não endossou este site nem esta comparação. CC BY 4.0 · Aviso sobre marcas comerciais
Carregar modelos gltfpack no Three.js → · Redução de polígonos GLB com gltfpack →
Abrir o otimizador ↗


