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çãoTamanho do arquivo (bytes)TriângulosChaves de animação
Original438,0444,6722,736
Conservadora269,4524,6721,205
Meshopt · 30 FPS207,7684,6721,205
Meshopt · 15 FPS206,2404,672625
Meshopt · Retenção de 50% dos triângulos193,7962,3361,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

CesiumMan — Original
Original
CesiumMan — Meshopt · 30 FPS
Meshopt · 30 FPS
CesiumMan — Meshopt · 15 FPS
Meshopt · 15 FPS
CesiumMan — Retenção de 50% dos triângulos
Retenção de 50% dos triângulos

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 ↗