Image 2 Sculpt
Una imagen de entrada, una escultura de salida que puedes probar: cada superficie que muestra la imagen se ajusta a las normales, el contorno y la profundidad de esa imagen en su propia cámara; cada superficie oculta proviene de vistas generadas que primero tuvieron que coincidir entre sí; y cada paso de la construcción se registra y reproduce en Blender.
Enrutamiento de entrada
Cualquier entrada termina en la misma estructura de caso (i2s.py new CASE --input ...). Detalles: references/inputs.md.
| Entrada | Haz esto | Notas |
|---|---|---|
| Un render de personaje/criatura/objeto o una imagen de IA | new → run | la ruta principal |
| Una foto de un objeto real (figura, juguete, producto, estatua) | new --kind photo → run | MoGe proporciona distancia focal y profundidad reales |
| Un PNG recortado con transparencia | new → run | el canal alfa es la máscara; sin llamada de máscara |
| Una imagen con varios elementos | prep --select "el dragón rojo" | SAM-3 selecciona el sujeto |
| Un dibujo, boceto o ilustración plana | prep --restyle | nano banana lo convierte primero en un render 3D, manteniendo la pose |
| Varias fotos del mismo objeto | views --import DIR | tus fotos reemplazan las vistas generadas; los ángulos se encuentran por registro |
| Solo una idea | imagine OUT.png "idea" → new | un render de figura completa limpio para empezar |
| Sin clave API | un PNG recortado (+ tus propias vistas) | solo la vista frontal también funciona: la silueta se infla, la profundidad detrás es una estimación |
Flujo de trabajo
Publica un visual etiquetado en cada punto de control (checks/sheet_*.png, la hoja de vistas, un fotograma de giro): primero
las imágenes, luego los números. Las rondas de corrección añaden pasos; nada grabado se edita jamás.
- Andamiaje.
i2s.py new CASE --input IMG --subject "sintagma nominal corto". Mira la imagen y escribe la frase del sujeto tú mismo ("trol gordito de dibujos animados", "figurilla de búho de cerámica"): se incluye en cada prompt de vista. La entrada se copia con su sha256 y se rellena a la relación de aspecto del generador más cercana, para que todas las vistas compartan un mismo lente. - Mapas frontales.
i2s.py prep CASE(máscara, profundidad MoGe-3 + distancia focal, normales Marigold; unidades normalizadas al sujeto). Compruebaref/front_mask.pngyref/front_normals.pngantes de continuar. Sujeto mal seleccionado →--select. Dibujo →--restyle. - Vistas.
i2s.py views CASE(9 vistas + 1 reservada, ~$2 estimados;--set minimalpara 5). Examina cada imagen generada: un cambio de pose, un miembro extra o un sujeto recortado es una mala vista. El registro rechazará vistas que no coincidan (IoU < 0.80 contra el casco de las demás), pero menciona lo que viste. Las regiones que ninguna vista ve necesitan nuevas vistas en ángulos que las miren (--angles "-30:25"), no más suavizado (references/views.md). - Casco.
i2s.py hull CASE: registro de cada vista (el ángulo solicitado es solo una prioridad: los intercambios izquierda/derecha se detectan, adelante/atrás se mantiene), re-centrado, selección, el tallado registrado, detección de simetría. Lee los ángulos registrados encase.json;i2s.py symmetry CASE on|offanula el plano de simetría detectado. - Ajuste.
i2s.py fit CASE --stage all(formas → superficie → detalle, 38 pases registrados), luegocut(abre espacios entre dedos, piernas, brazo y cuerpo que la foto muestra),smooth(elimina telarañas y motas),fit --stage polish.i2s.py run CASErealiza los pasos 2-8 en orden con este plan predeterminado (references/fitting.md). - Comprobación e iteración.
i2s.py check CASEescribe una hoja por vista: referencia, normales de referencia, escultura, error de normales, diferencia de silueta. Busca protuberancias, telarañas, espacios faltantes, rasgos aplanados. Apúntalos:parts CASE --prompt "manos"luegofit --stage focus --region hands,cut --region hands,smooth --region box:...(references/checking.md). Nunca afirme una corrección sin la hoja de antes/después. - Finalización, Blender, videos.
finish(suavizado de caras, OBJ/STL),blender(cada paso se reproduce desde la cámara de la foto, giro de 360°, cada vista,sculpt.blend, GLB),film(timelapse de dos paneles que termina en el giro de 360°, video de giro, hoja de vistas, imagen principal) (references/blender-and-delivery.md). - Informe y parada.
reportescribeout/REPORT.md,out/index.htmly el gráfico por paso. Presenta el timelapse, la hoja de vistas y la tabla de medidas, di qué es débil y para. El usuario decide qué sigue.
Reglas estrictas
- La foto gobierna lo que ve. Las vistas generadas solo rellenan donde la foto no ve; su profundidad nunca se utiliza (discrepa por centímetros entre vistas). Nunca promedies las normales de una vista generada sobre las de la foto.
- Registra cada vista; nunca confíes en el ángulo solicitado. Las vistas generadas se desviaron entre 20 y 155° en
el trol, principalmente intercambios izquierda/derecha. La búsqueda permite esos cambios pero mantiene las vistas
frontales al frente y las traseras detrás (la parte trasera de un sujeto simétrico tiene contornos similares a la
delantera). Lee los ángulos registrados en
case.json. - Selecciona antes de tallar. Una vista que no coincide con las demás es un sujeto o pose diferente: recházala (y dímelo) en lugar de cortar la escultura con ella.
- Reserva una vista. Nunca mueve la superficie; su cámara se congela antes del ajuste. Infórmala por separado de las vistas utilizadas para ajustar. También es generada, por lo que mide consistencia, no verdad.
- Mide, no solo mires. IoU, distancia de contorno, ángulo de normales, rugosidad contra la rugosidad de la referencia, profundidad de la foto. Un solo número nunca representa "calidad": infórmalos uno al lado del otro.
- Los campos de distancia se mantienen exactos. Cada operación redistancia la cuadrícula (distancias exactas de
triángulos en una banda, EDT más allá). Desplazar un campo inexacto, reflejar el campo en sí mismo o difuminar
objetivos normales generó escalones, anillos de muaré y narices aplanadas en el caso en que se basó esto
(
references/lessons.md). - Graba todo. Cada tallado, pase, corte y suavizado es un paso en
build/steps/ybuild/log.jsonl, reproducido en Blender y mostrado en el timelapse. Nunca edites un paso registrado; añade uno nuevo. - Llamadas de pago: cada llamada a fal pasa por el presupuesto del caso (
settings.budget_usd), su id de solicitud se guarda encase.jsonantes de esperar, y nada se reenvía a ciegas.FAL_KEYnunca se imprime ni escribe. - Retroalimentación visual en cada punto de control, y el fotograma 0 de cada video es una miniatura terminada.
- Di lo que se ha inventado. La parte trasera de un sujeto visto solo desde el frente es la suposición del generador.
Referencias
| Archivo | Leer cuando |
|---|---|
references/inputs.md | enrutar una entrada inusual; máscaras, restyle, seleccionar, fotos importadas, solo idea |
references/views.md | generar, juzgar, registrar, seleccionar y añadir vistas |
references/fitting.md | qué hace un pase, etapas, parámetros, cortar/suavizar/enfocar, el plan predeterminado |
references/checking.md | leer hojas de mapas y métricas, la vista reservada, qué corregir a continuación |
references/blender-and-delivery.md | reproducción en Blender, videos, exportaciones, el informe, la página de revisión |
references/conventions.md | marco mundial, cámaras, unidades, formatos de archivo (para escribir nuevas herramientas) |
references/lessons.md | qué salió mal en los primeros casos y por qué existen las reglas anteriores |
Plantillas: templates/CONTRACT.md (copiada en cada caso), templates/acceptance.json (objetivos).