Plataformas Diferentes, Destinos Diferentes: Um Guia de Seleção de Compressão
Os quatro artigos anteriores cobriram as ferramentas de compressão de vértices e texturas. Mas saber como usar as ferramentas é uma coisa; qual usar e em qual cenário é outra. Este artigo responde isso—e tem o objetivo de permitir que você decida ao terminar a leitura.
Depois deste, você deve conseguir responder: que plataforma meu projeto roda, o gargalo do primeiro carregamento é download ou VRAM, e qual esquema texturas e vértices devem usar cada um.
Definindo o tom: orientado por cenário, não por ferramenta
Todo o artigo tem um princípio central, que a série não para de enfatizar:
Não existe esquema de compressão "melhor"—apenas o esquema "melhor adaptado ao cenário".
Três variáveis que guiam a escolha:
- Plataforma/dispositivo: PC desktop, navegador mobile, óculos de VR, Mini Programa—capacidades radicalmente diferentes
- Uso: exibição única (página de produto e-commerce) ou imersão longa (jogo VR)
- Gargalo principal: download lento, VRAM insuficiente ou decodificação bloqueando o primeiro carregamento
Pense no gargalo primeiro, depois volte para escolher ferramentas. A matriz abaixo cristaliza esse raciocínio.
Matriz central de decisão: plataforma × esquema recomendado
Esta é a tabela mais importante do artigo. Por plataforma, ela dá o esquema recomendado para textura e vértice, com motivos.
| Plataforma / cenário | Esquema de textura | Esquema de vértice | Gargalo principal | Razão-chave |
|---|---|---|---|---|
| Web desktop (navegador PC) | KTX2 ou WebP | MeshOpt / quantização | Velocidade de download | VRAM é abundante; foco em arquivos pequenos, carregamento rápido |
| Web mobile (navegador celular) | KTX2 (obrigatório) | MeshOpt | VRAM | VRAM do celular é apertada; texturas devem ser comprimidas por blocos |
| WebXR / óculos de VR | KTX2 (obrigatório) | MeshOpt + LOD | VRAM + taxa de quadros | Explosão de VRAM causa crash; quedas de quadro causam náusea |
| Mini Programa WeChat | KTX2 / WebP | MeshOpt / quantização simples | Pacote + compatibilidade | Tamanho do pacote é limitado; evite decoders pesados |
| Exibição de produto e-commerce | WebP (leve) / KTX2 (preciso) | MeshOpt | Velocidade do primeiro carregamento | Exige abertura instantânea; troque tamanho por velocidade |
| Cenas grandes / gêmeos digitais | KTX2 (obrigatório) | MeshOpt + Draco + LOD | VRAM + chamadas de desenho | Muitas texturas, modelos grandes; comprima em todas as frentes |
Alguns julgamentos vale a pena memorizar:
- Sempre que VRAM for o gargalo, KTX2 é obrigatório (mobile, VR, cenas grandes se enquadram)
- Quando download é o gargalo e VRAM é abundante, WebP é suficiente (desktop, e-commerce)
- Para ambientes sensíveis ao pacote como Mini Programas, prefira MeshOpt ao Draco—decoder menor, melhor compatibilidade
- Só considere Draco para modelos muito grandes; para a grande maioria dos modelos de pequeno a médio porte, MeshOpt é mais equilibrado
Formatos de texturas comparados em todas as dimensões
Saber "use KTX2" não é suficiente. Para formatos de textura especificamente, levante todas as dimensões:
| Formato | Tamanho do arquivo | Uso de VRAM | Velocidade de upload | Compatibilidade | Qualidade | Caso de uso |
|---|---|---|---|---|---|---|
| PNG | Grande | Grande (após descompressão) | Lenta | Muito ampla | Sem perdas | Precisa de valores/alpha exatos, ou fallback legado |
| JPG | Minúsculo | Grande (após descompressão) | Lenta | Muito ampla | Com perdas | Mapas de cores, prioridade web |
| WebP | Muito pequeno | Grande (após descompressão) | Lenta | Bastante ampla | Alta | Web desktop, buscando velocidade de download |
| AVIF | Ainda menor | Grande (após descompressão) | Lenta | Progressiva | Alta | Plataformas novas, compressão extrema |
| KTX2 (ETC1S) | Pequeno | Minúsculo | Rápida | Precisa de transcodificação | Média (cores ficam boas) | Mapas de cores, mobile/VR |
| KTX2 (UASTC) | Médio | Pequeno | Rápida | Precisa de transcodificação | Alta | Mapas normais/dados |
Note que as três primeiras linhas (PNG/JPG/WebP/AVIF) todas mostram VRAM como "grande"—não importa quão pequenas no disco, uma vez na VRAM todas descomprimem de volta para pixels brutos. Essa é a limitação fundamental dos formatos tradicionais.
Uma estratégia mista é comum: mapas de cores principais usam KTX2 para garantir VRAM; mapas secundários (por exemplo, um pequeno emissive) usam WebP por conveniência. Você não precisa usar KTX2 em tudo; aloque pelo gargalo.
Fluxograma de decisão: escolha passo a passo
A matriz é o resultado; o fluxograma mostra como chegar nele.
Onde seu projeto roda?
│
├─ Web desktop (VRAM abundante)
│ └─ Primeiro carregamento lento?
│ ├─ Sim → WebP (ou AVIF) + MeshOpt [buscar velocidade de download]
│ └─ Não, mas muitos modelos → KTX2 + MeshOpt [deixar margem]
│
├─ Web mobile / VR / cenas grandes (VRAM apertada)
│ └─ Texturas devem usar KTX2 (cores ETC1S, dados UASTC)
│ └─ Vértices super densos?
│ ├─ Sim → + Draco [taxa máxima, pode tolerar decodificação lenta]
│ └─ Não → + MeshOpt [equilibrado]
│
└─ Mini Programa / runtime restrito
└─ Sensível ao pacote?
├─ Sim → quantização simples ou MeshOpt + WebP [zero/pequeno decoder]
└─ OK → MeshOpt + KTX2 [combinação padrão]
Vértices vs compressão de texturas: onde investir
Uma pergunta comum: orçamento é limitado, otimize qual extremidade primeiro? Veja a composição do modelo:
| Característica do modelo | Foco do investimento | Razão |
|---|---|---|
| Personagem/produto PBR (muitos mapas) | Compressão de texturas | Texturas são 80%+; ROI baixo em vértices |
| Modelo CAD/escaneado (vértices super densos, poucos mapas) | Compressão de vértices | Vértices são a maior parte |
| Personagem animado (esqueleto + skinning) | Invista em ambos, mas priorize vértices além do Draco | Dados de animação também ocupam bastante; Draco é fraco em animação |
| Edifício/cena (grande, mapas médios) | Texturas + LOD | Texturas economizam VRAM; LOD economiza chamadas de desenho |
Um ranking aproximado de retorno: textura KTX2 > vértice MeshOpt/quantização > simplificação geométrica (LOD) > vértice Draco. Faça os de maior retorno primeiro.
Estratégia mista: mapas principais em KTX2, mapas secundários em WebP
Nem todo mapa vale a pena comprimir em KTX2. Um material PBR típico tem 5-6 mapas; comprimir todos em KTX2 é muito trabalho de engenharia e às vezes desnecessário.
Uma divisão prática:
- Obrigatório KTX2: albedo (grande, cor), normal (sensível a precisão), roughness/metallic (afetam iluminação)
- Pode ser WebP/JPG: emissive (geralmente pequeno), AO (média-baixa frequência), normal de detalhe (se houver)
O critério de julgamento: o mapa é grande, é detalhe de alta frequência, será amostrado frequentemente. Os três → KTX2; nenhum → formato tradicional é mais fácil.
Seleção automatizada: gltf-transform faz tudo de uma vez
O comando optimize do gltf-transform é a bala de prata para a maioria dos cenários—ele detecta automaticamente os tipos de textura, comprime texturas pela estratégia recomendada e opcionalmente lida com vértices.
# Install
npm install -g @gltf-transform/cli
# Standard optimization: texture KTX2 + vertex MeshOpt + de-duplication
gltf-transform optimize model.glb model-optimized.glb \
--texture-compress basisu \
--meshopt
Referência de parâmetros:
| Parâmetro | Efeito | Padrão |
|---|---|---|
--texture-compress basisu | Comprime texturas para KTX2 (ETC1S/UASTC automático) | Desligado |
--meshopt | Habilita compressão de vértices MeshOpt | Desligado |
--simplify | Simplificação geométrica (reduz vértices, com perdas) | Desligado |
--weld | Mescla vértices duplicados | Ligado |
--prune | Remove nós/materiais não utilizados | Ligado |
Uma combinação de "compressão forte" adequada para mobile:
gltf-transform optimize model.glb model-mobile.glb \
--texture-compress basisu \
--meshopt \
--simplify --simplify-ratio 0.5 \
--prune --weld
Uma combinação "suave" para desktop (preserva detalhes, apenas comprime texturas e vértices):
gltf-transform optimize model.glb model-desktop.glb \
--texture-compress webp \
--meshopt
Não quer escrever um script? Use o compressor online da Any3D
Não quer instalar Node e configurar uma cadeia de ferramentas localmente? O compressor online da Any3D roda inteiramente no seu navegador—escolha um GLB, ajuste parâmetros por plataforma (mobile/desktop/VR) visualmente, e seu modelo nunca sai do seu dispositivo (processamento totalmente local). Exporte versões comprimidas com um clique. O mesmo motor gltf-transform por baixo do capô, zero configuração. O próximo artigo encadeia o fluxo completo com o passo a passo ponta a ponta.
Resumo em uma linha
- VRAM é o gargalo → KTX2, sem escolha
- Download é o gargalo, VRAM abundante → WebP/AVIF também serve
- Sensível ao tamanho do decoder → MeshOpt > quantização simples > Draco
- Modelos muito grandes → só então considere Draco
- Não tem certeza → rode
gltf-transform optimizede uma vez; ajuste se estiver errado
Próximo passo
O framework de seleção está pronto. O artigo final encerra: partindo de um modelo real, percorra o fluxo completo de exportação do Blender, compressão de texturas, compressão de vértices e carregamento no engine, com um script de automação completo e um resumo da série.