Image 2 Sculpt
Uma imagem entra, uma escultura sai e você pode provar: cada superfície que a imagem mostra é ajustada às próprias normais, contorno e profundidade da imagem em sua própria câmera; cada superfície oculta vem de vistas geradas que primeiro tiveram que concordar entre si; e cada etapa da construção é gravada e reproduzida no Blender.
Roteamento de entrada
Qualquer entrada termina na mesma estrutura de caso (i2s.py new CASE --input ...). Detalhes: references/inputs.md.
| Entrada | Faça isto | Notas |
|---|---|---|
| Uma renderização de personagem/criatura/objeto ou imagem de IA | new → run | o caminho principal |
| Uma foto de um objeto real (boneco, brinquedo, produto, estátua) | new --kind photo → run | MoGe fornece distância focal e profundidade reais |
| Um PNG recortado com transparência | new → run | o canal alfa é a máscara; nenhuma chamada de máscara |
| Uma imagem cheia com várias coisas | prep --select "o dragão vermelho" | SAM-3 seleciona o assunto |
| Um desenho, esboço ou ilustração plana | prep --restyle | nano banana transforma em uma renderização 3D primeiro, mantendo a pose |
| Várias fotos do mesmo objeto | views --import DIR | suas fotos substituem as vistas geradas; ângulos encontrados por registro |
| Apenas uma ideia | imagine OUT.png "ideia" → new | uma renderização limpa de corpo inteiro para começar |
| Sem chave de API | um PNG recortado (+ suas próprias vistas) | apenas frontal funciona também: a silhueta é inflada, a profundidade atrás é um palpite |
Fluxo de trabalho
Envie um visual rotulado em cada ponto de verificação (checks/sheet_*.png, a folha de vistas, um quadro da mesa giratória): imagens primeiro, números depois. Rodadas de correção adicionam etapas; nada gravado é jamais editado.
- Andaime.
i2s.py new CASE --input IMG --subject "frase curta substantiva". Olhe para a imagem e escreva a frase do assunto você mesmo ("troll cartunesco atarracado", "coruja de cerâmica em forma de estatueta"): ela entra em cada prompt de vista. A entrada é copiada com seu sha256 e preenchida até a proporção de aspecto mais próxima do gerador, para que cada vista compartilhe uma lente. - Mapas frontais.
i2s.py prep CASE(máscara, profundidade MoGe-3 + distância focal, normais Marigold; unidades normalizadas para o assunto). Verifiqueref/front_mask.pngeref/front_normals.pngantes de prosseguir. Assunto errado selecionado →--select. Desenho →--restyle. - Vistas.
i2s.py views CASE(9 vistas + 1 reservada, ~$2 estimados;--set minimalpara 5). Olhe para cada imagem gerada: uma pose alterada, um membro extra ou um assunto cortado é uma vista ruim. O registro rejeitará vistas que discordam (IoU < 0,80 contra o casco das outras), mas diga o que viu. Regiões que nenhuma vista vê precisam de novas vistas em ângulos que as observem (--angles "-30:25"), não mais suavização (references/views.md). - Casco.
i2s.py hull CASE: registro de cada vista (o ângulo solicitado é apenas um prior: trocas esquerda/direita são encontradas, frente/trás é mantida), re-centralização, triagem, a escultura gravada, detecção de simetria. Leia os ângulos registrados emcase.json;i2s.py symmetry CASE on|offsubstitui o plano de espelho detectado. - Ajuste.
i2s.py fit CASE --stage all(formas → superfície → detalhe, 38 passagens gravadas), depoiscut(abre lacunas entre dedos, pernas, braço e corpo que a foto mostra),smooth(remove teias e manchas),fit --stage polish.i2s.py run CASEfaz as etapas 2-8 em ordem com este plano padrão (references/fitting.md). - Verificação e iteração.
i2s.py check CASEescreve uma folha por vista: referência, normais de referência, escultura, erro normal, diferença de silhueta. Procure por protuberâncias, teias, lacunas faltantes, características achatadas. Mire neles:parts CASE --prompt "mãos"depoisfit --stage focus --region hands,cut --region hands,smooth --region box:...(references/checking.md). Nunca reivindique uma correção sem a folha antes/depois. - Finalização, Blender, filmes.
finish(suavização de facetas, OBJ/STL),blender(cada etapa reproduzida a partir da câmera da foto, mesa giratória 360°, cada vista,sculpt.blend, GLB),film(lapso temporal de dois painéis que termina na rotação de 360°, mesa giratória, folha de vistas, imagem hero) (references/blender-and-delivery.md). - Relatório e parada.
reportescreveout/REPORT.md,out/index.htmle o gráfico por etapa. Apresente o lapso temporal, a folha de vistas e a tabela medida, diga o que está fraco e pare. O usuário decide o que fazer a seguir.
Regras rígidas
- A foto governa o que ela vê. As vistas geradas apenas preenchem onde a foto não vê; sua profundidade nunca é usada (discorda por centímetros entre as vistas). Nunca tire a média das normais de uma vista gerada sobre a da foto.
- Registre cada vista; nunca confie no ângulo solicitado. As vistas geradas estavam erradas por 20–155° no troll, principalmente trocas esquerda/direita. A busca permite essas trocas, mas mantém as vistas frontais na frente e as traseiras atrás (a parte traseira de um assunto simétrico se parece com sua frente). Leia os ângulos registrados em
case.json. - Trie antes de esculpir. Uma vista que discorda das outras é um assunto ou pose diferente: rejeite-a (e diga isso) em vez de cortar a escultura com ela.
- Reserve uma vista. Ela nunca move a superfície; sua câmera é congelada antes do ajuste. Relate-a separadamente das vistas usadas para ajustar. Ela também é gerada, portanto mede consistência, não verdade.
- Meça, não confie apenas no olho. IoU, distância de contorno, ângulo normal, rugosidade contra a rugosidade de referência, profundidade da foto. Um número nunca representa "qualidade": relate-os lado a lado.
- Campos de distância permanecem exatos. Cada operação redistancia a grade (distâncias exatas de triângulo em uma banda, EDT além). Deslocar um campo inexato, espelhar o próprio campo ou desfocar alvos normais criou escadas, anéis de moiré e narizes achatados no caso a partir do qual isso foi construído (
references/lessons.md). - Grave tudo. Cada escultura, passagem, corte e suavização é uma etapa em
build/steps/ebuild/log.jsonl, reproduzida no Blender e mostrada no lapso temporal. Nunca edite uma etapa gravada; adicione uma nova. - Chamadas pagas: cada chamada fal passa pelo orçamento do caso (
settings.budget_usd), seu id de requisição é salvo emcase.jsonantes de esperar, e nada é reenviado cegamente.FAL_KEYnunca é impresso ou escrito. - Feedback visual em cada ponto de verificação, e o quadro 0 de cada filme é uma miniatura finalizada.
- Diga o que é inventado. A parte traseira de um assunto visto apenas de frente é o palpite do gerador.
Referências
| Arquivo | Leia quando |
|---|---|
references/inputs.md | roteando uma entrada incomum; máscaras, restyle, selecionar, fotos importadas, apenas ideia |
references/views.md | gerando, julgando, registrando, triando e adicionando vistas |
references/fitting.md | o que uma passagem faz, estágios, parâmetros, cortar / suavizar / focar, o plano padrão |
references/checking.md | lendo folhas de mapa e métricas, a vista reservada, o que corrigir a seguir |
references/blender-and-delivery.md | reprodução no Blender, filmes, exportações, o relatório, a página de revisão |
references/conventions.md | quadro mundial, câmeras, unidades, formatos de arquivo (para escrever novas ferramentas) |
references/lessons.md | o que deu errado nos primeiros casos e por que as regras acima existem |
Modelos: templates/CONTRACT.md (copiado em cada caso), templates/acceptance.json (alvos).