Any3DAny3D
·Any3D Team

Plataformas Diferentes, Destinos Diferentes: Um Guia de Seleção de Compressão

3d-compressiontexture-compressionvertex-compressionoptimizationpipeline

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:

  1. Plataforma/dispositivo: PC desktop, navegador mobile, óculos de VR, Mini Programa—capacidades radicalmente diferentes
  2. Uso: exibição única (página de produto e-commerce) ou imersão longa (jogo VR)
  3. 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árioEsquema de texturaEsquema de vérticeGargalo principalRazão-chave
Web desktop (navegador PC)KTX2 ou WebPMeshOpt / quantizaçãoVelocidade de downloadVRAM é abundante; foco em arquivos pequenos, carregamento rápido
Web mobile (navegador celular)KTX2 (obrigatório)MeshOptVRAMVRAM do celular é apertada; texturas devem ser comprimidas por blocos
WebXR / óculos de VRKTX2 (obrigatório)MeshOpt + LODVRAM + taxa de quadrosExplosão de VRAM causa crash; quedas de quadro causam náusea
Mini Programa WeChatKTX2 / WebPMeshOpt / quantização simplesPacote + compatibilidadeTamanho do pacote é limitado; evite decoders pesados
Exibição de produto e-commerceWebP (leve) / KTX2 (preciso)MeshOptVelocidade do primeiro carregamentoExige abertura instantânea; troque tamanho por velocidade
Cenas grandes / gêmeos digitaisKTX2 (obrigatório)MeshOpt + Draco + LODVRAM + chamadas de desenhoMuitas 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:

FormatoTamanho do arquivoUso de VRAMVelocidade de uploadCompatibilidadeQualidadeCaso de uso
PNGGrandeGrande (após descompressão)LentaMuito amplaSem perdasPrecisa de valores/alpha exatos, ou fallback legado
JPGMinúsculoGrande (após descompressão)LentaMuito amplaCom perdasMapas de cores, prioridade web
WebPMuito pequenoGrande (após descompressão)LentaBastante amplaAltaWeb desktop, buscando velocidade de download
AVIFAinda menorGrande (após descompressão)LentaProgressivaAltaPlataformas novas, compressão extrema
KTX2 (ETC1S)PequenoMinúsculoRápidaPrecisa de transcodificaçãoMédia (cores ficam boas)Mapas de cores, mobile/VR
KTX2 (UASTC)MédioPequenoRápidaPrecisa de transcodificaçãoAltaMapas 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 modeloFoco do investimentoRazão
Personagem/produto PBR (muitos mapas)Compressão de texturasTexturas são 80%+; ROI baixo em vértices
Modelo CAD/escaneado (vértices super densos, poucos mapas)Compressão de vérticesVértices são a maior parte
Personagem animado (esqueleto + skinning)Invista em ambos, mas priorize vértices além do DracoDados de animação também ocupam bastante; Draco é fraco em animação
Edifício/cena (grande, mapas médios)Texturas + LODTexturas 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âmetroEfeitoPadrão
--texture-compress basisuComprime texturas para KTX2 (ETC1S/UASTC automático)Desligado
--meshoptHabilita compressão de vértices MeshOptDesligado
--simplifySimplificação geométrica (reduz vértices, com perdas)Desligado
--weldMescla vértices duplicadosLigado
--pruneRemove nós/materiais não utilizadosLigado

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 optimize de 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.

Apoie-nos