CommunityImagengithub.com

image-to-sculpt

Convierte una imagen de cualquier sujeto en una escultura 3D estanca (watertight), medida con respecto a la imagen original y registrada paso a paso en Blender.

¿Qué es image-to-sculpt?

Image-to-sculpt es una habilidad para agentes de IA (como Claude Code, Cursor o Codex) que transforma una única imagen de un sujeto (render, foto, dibujo, idea generada por IA) en un modelo 3D estanco, con pasos registrados y verificables en Blender. El flujo comienza con mapas frontales (máscara, profundidad métrica, normales), genera vistas laterales no visibles en la imagen original, las registra y construye un casco volumétrico (visual hull). Luego realiza múltiples pases de ajuste contra cada mapa de normales, silueta y profundidad de la foto, aplicando simetría, regiones de enfoque, cortes de separación y suavizado. La habilidad proporciona una CLI (`scripts/i2s.py`) para gestionar casos, llamadas a fal (con presupuesto), registro, tallado, ajuste, verificación de mapas, reproducción en Blender, creación de timelapses, videos de giro (turntable), exportaciones (GLB, OBJ, STL) y un informe final. Es ideal cuando el usuario desea un modelo 3D a partir de una imagen, convertir una figura o personaje en malla, generar un timelapse de escultura, o verificar un modelo 3D contra una imagen de referencia. No apto para escenas, habitaciones, texto a 3D sin imagen, rigging, etc.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/gokayfem/image-to-sculpt/tree/HEAD/skills/image-to-sculpt

Installed? Explore more Imagen skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

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.

EntradaHaz estoNotas
Un render de personaje/criatura/objeto o una imagen de IAnew → runla ruta principal
Una foto de un objeto real (figura, juguete, producto, estatua)new --kind photo → runMoGe proporciona distancia focal y profundidad reales
Un PNG recortado con transparencianew → runel canal alfa es la máscara; sin llamada de máscara
Una imagen con varios elementosprep --select "el dragón rojo"SAM-3 selecciona el sujeto
Un dibujo, boceto o ilustración planaprep --restylenano banana lo convierte primero en un render 3D, manteniendo la pose
Varias fotos del mismo objetoviews --import DIRtus fotos reemplazan las vistas generadas; los ángulos se encuentran por registro
Solo una ideaimagine OUT.png "idea" → newun render de figura completa limpio para empezar
Sin clave APIun 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.

  1. 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.
  2. Mapas frontales. i2s.py prep CASE (máscara, profundidad MoGe-3 + distancia focal, normales Marigold; unidades normalizadas al sujeto). Comprueba ref/front_mask.png y ref/front_normals.png antes de continuar. Sujeto mal seleccionado → --select. Dibujo → --restyle.
  3. Vistas. i2s.py views CASE (9 vistas + 1 reservada, ~$2 estimados; --set minimal para 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).
  4. 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 en case.json; i2s.py symmetry CASE on|off anula el plano de simetría detectado.
  5. Ajuste. i2s.py fit CASE --stage all (formas → superficie → detalle, 38 pases registrados), luego cut (abre espacios entre dedos, piernas, brazo y cuerpo que la foto muestra), smooth (elimina telarañas y motas), fit --stage polish. i2s.py run CASE realiza los pasos 2-8 en orden con este plan predeterminado (references/fitting.md).
  6. Comprobación e iteración. i2s.py check CASE escribe 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" luego fit --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.
  7. 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).
  8. Informe y parada. report escribe out/REPORT.md, out/index.html y 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/ y build/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 en case.json antes de esperar, y nada se reenvía a ciegas. FAL_KEY nunca 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

ArchivoLeer cuando
references/inputs.mdenrutar una entrada inusual; máscaras, restyle, seleccionar, fotos importadas, solo idea
references/views.mdgenerar, juzgar, registrar, seleccionar y añadir vistas
references/fitting.mdqué hace un pase, etapas, parámetros, cortar/suavizar/enfocar, el plan predeterminado
references/checking.mdleer hojas de mapas y métricas, la vista reservada, qué corregir a continuación
references/blender-and-delivery.mdreproducción en Blender, videos, exportaciones, el informe, la página de revisión
references/conventions.mdmarco mundial, cámaras, unidades, formatos de archivo (para escribir nuevas herramientas)
references/lessons.mdqué 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).

Skills relacionados