Imagem 2 Low Poly
Uma foto de entrada, uma malha low-poly editável por orçamento de triângulos, cada uma pontuada em relação à foto através da mesma câmera fixa e contada de quatro maneiras independentes. A geometria low-poly por si só faz a aproximação: nenhuma textura, painel, foto projetada ou geometria não contada substitui a forma.
Entradas: a imagem de referência (nunca alterada), o assunto, os orçamentos. Exemplo prático: examples/cat/ no repositório (um gato malhado laranja, orçamentos 100 / 200 / 500 / 1000).
Antes de começar
| Situação | Faça isso |
|---|---|
| Uma foto, assunto inteiro visível, fundo liso | o caminho principal |
| Um animal de quatro patas | o modelo proxy fornecido (fit_camera_proxy.py, build_proxy.py) é um gato quadrúpede; ajuste seus priores |
| Qualquer outro assunto | escreva um modelo proxy para ele primeiro (cilindros generalizados por parte, formato catlib/skeleton.py); o restante das ferramentas é independente do assunto |
| Várias fotos, um vídeo, uma digitalização | fora do escopo: uma vista, uma câmera |
| O usuário deseja cor ou textura | apenas cores planas por face; diga isso antes de começar |
| Sem Blender | não suportado: contagem, montagem e todos os números oficiais precisam do Blender 5.2+ |
Diga antes de começar que tudo o que a foto não mostra é inferido, não verificado.
Fluxo de trabalho
S abaixo significa skills/image-to-lowpoly/scripts. Cada script usa --case CASE (ou LOWPOLY_CASE). Publique uma imagem rotulada em cada ponto de verificação (sobreposições, argila, arame, oito vistas): imagens primeiro, números depois.
- Caso e referência. Crie
CASE/reference/reference.png(cópia byte-idêntica da imagem do usuário) e um arquivo de proveniência com seu SHA-256. Nunca regenere, redimensione ou edite. - Alvos fixos. Anote marcos e janelas de imagem observando ampliações recortadas (12 nítidas: pontas das orelhas, olhos, nariz, quatro contatos das patas, base/meio/ponta da cauda para um gato; adapte a lista ao assunto), depois
python3 $S/preflight_reference.py --case CASE. Observemask_overlay.pngelandmarks_overlay.png. A máscara exclui a sombra do chão e os bigodes. - Câmera e proxy.
fit_camera_proxy.py --case CASE(CPU, dezenas de minutos), depoisbuild_proxy.py,build_proxy.py --lockebuild_proxy.py --report. Observe o proxy de todas as oito vistas: é a resposta para tudo que está oculto. Em seguida, congele: escreva os hashes da referência, máscara, marcos, regiões, câmera, cena, proxy e o código de avaliação emcontract/FROZEN.jsonantes que qualquer orçamento seja pontuado (references/contract.md). - Controles.
make_decimation_baseline.py --case CASE --budget Npara cada orçamento: Decimação do proxy para exatamente N, e o mesmo após o refinador compartilhado. Estes são os números a serem superados. - Alocar e construir, por orçamento. Atribua a cada orçamento seu próprio trabalhador e diretório
variants/<N>/(references/budget-worker.md). Escreva a tabela de alocação (região, triângulos, anéis x lados, motivo), construa pelo menos duas alocações materialmente diferentes, dê a cada uma o mesmo refinamento curto, compare, escolha.variants/<N>/build.pyescreve ummesh.jsoncatmesh-1com exatamente N triângulos (afirme isso), regiões, materiais e anexos de marcos. Uma superfície fechada: solde membros, cauda e orelhas ao corpo. - Ponto de verificação inicial.
evaluate.py --case CASE --mesh variants/<N>/checkpoints/v0_initial/mesh.json --views. Esta é a linha "inicial". - Refinar, medir, observar, editar, repetir.
refine_vertices.py(--flips,--freeze-vertspara faces e qualquer kit congelado),evaluate.py, depois observeref_overlay.png,ref_clay.png,ref_wire.pnge as oito vistas. Faça edições de topologia direcionadas onde a sobreposição mostra que o orçamento foi mal alocado. Mantenha o melhor ponto de verificação validado; o mais novo não precisa vencer. - Revisão cega.
make_critic_packet.py --case CASE --round Kempacota a foto e renderizações de argila, arame e contorno com nomes neutros. Inicie um subagente novo que veja apenas essa pasta; transforme suas descobertas em edições geométricas neutras em relação ao orçamento. Rejeite qualquer sugestão que seja textura, cartão ou geometria não contada. - Finalizar e agregar.
finalize_variant.py --case CASE --budget N --checkpoint TAG --reason "..."copia o ponto de verificação e o reavalia;aggregate_metrics.pyconstrói a tabela de orçamentos cruzados e recusa hashes ou contagens incompatíveis;make_comparison.pyfaz as planilhas. - Relatar e parar. Apresente a planilha de argila/arame com as quatro contagens, a tabela de inicial, final e ambos os controles por orçamento, as tabelas de alocação, os veredictos do revisor e o que está errado. Diga onde a malha projetada não supera o controle. O usuário decide o que fazer a seguir.
- Timelapse (opcional). Grave estágios de construção (
--stages-dirno seu script de construção) e instantâneos do otimizador (refine_vertices.py --snapshot-dir DIR --snapshot-every K), depoistimelapse/timelapse.py --case CASE: a malha desenhada sobre a foto através da câmera fixa.
Regras rígidas
- A contagem é a geometria exportada avaliada. Quatro contagens (arquivo de malha,
.blendavaliado sobre cada objeto, GLB reimportado, GLB analisado) devem concordar e ser no máximo N; mire exatamente N. Nunca a contagem de polígonos do Blender (references/counting.md). - Nada esconde triângulos ou forma. Apenas triângulos, um objeto, sem modificadores, sem subdivisão, curvas, cabelo, instâncias, cartões alfa, preenchimento duplicado ou degenerado, painéis ou extrusões de silhueta plana.
- O alvo nunca se move. Referência, máscara, marcos, janelas e câmera são feitos uma vez e hashados. Uma correção genuína é divulgada e cada orçamento é reavaliado.
- Nenhum número único decide. IoU, distância do limite, marcos e lacunas entre pernas não devem se contradizer, e a argila e as oito vistas devem parecer melhores. Uma pontuação melhor com uma forma pior é uma regressão.
- Solde, não interpenetre. Triângulos enterrados são orçamento desperdiçado e as junções aparecem.
- O otimizador é compartilhado; a alocação é o experimento. Mesmo refinador, mesmas configurações disponíveis para cada orçamento e para o controle.
- Marcos se movem com a geometria. Um marco está anexado à característica que nomeia; nunca deslize a fixação para melhorar um número.
- Uma renderização por vez. Apenas
render_variant.pyrenderiza, e ele pega o bloqueio sozinho. - Materiais nunca contam como forma. Cores planas por face com significado anatômico; classifique a geometria apenas em argila e silhuetas.
- Diga o que não é. Lado oculto inferido; um resultado que empata com o controle é um empate; cabeças e partes finas são onde essas malhas são mais fracas.
Referências
| Arquivo | Leia quando |
|---|---|
references/contract.md | configurando um caso: layout, unidades, câmera, formato de malha, métricas, renderizações, proxy, marcos, kit de cabeça |
references/budget-worker.md | delegando ou fazendo um orçamento: procedimento, prioridades, o que observar |
references/counting.md | a contagem de quatro vias, falhas graves, o que é divulgado |
references/lessons.md | o que deu errado na execução do gato e a regra que cada falha se tornou |