¿Qué hace polywright-generate?
Dos motores crean modelos imaginados: código (exacto, editable, nítido, con dimensiones) y generadores (orgánicos, rápidos, aproximados, topología desordenada). Elige según el objeto, no por costumbre. Vuelve al centro: ../polywright/SKILL.md. Tabla de modelos con licencias y VRAM: references/generators.md. Patrones de código: references/code-modeling.md.
Paso 1: ¿código o generador?
| Objeto | Motor |
|---|---|
| Tiene dimensiones, encaja con algo, es principalmente planos y cilindros (soporte, carcasa, estante, edificio, letrero, caja) | código: build123d, CadQuery o OpenSCAD para piezas imprimibles y CAD; bpy para kits de juego y edificios |
| Muchas variaciones de una misma cosa (vallas, casas, rocas, un bosque) | código procedural (bpy, Geometry Nodes) a partir de unos pocos activos principales |
| Pieza única orgánica o escultórica (estatua, criatura, personaje, tronco de árbol, comida) | generador a partir de una imagen de referencia o conjunto multivista |
| Personaje que se va a animar | generador para la forma, luego retopología y rig (polywright-finish) |
| Un objeto real del que tienes una foto | prueba primero polywright-capture; un generador adivina los lados ocultos |
Las difusiones redondean bordes afilados e inventan dimensiones; el código no puede esculpir la cara de un león. Muchos buenos modelos son ambos: un pedestal codificado con un pico de cabeza de león generado unido mediante booleanos.
Paso 2: generadores
- Referencias primero (polywright-references): una imagen limpia sobre fondo blanco, luz plana, poca perspectiva, 1024 px; para personajes una pose en A; para una mejor vista trasera, un conjunto frontal/izquierdo/trasero/derecho a la misma escala.
python ../polywright/scripts/pw.py doctormuestra los hosts de ComfyUI y sus checkpoints 3D.- Ejecuta uno:
- Hunyuan3D-2 integrado (solo forma, unos 100 s en una tarjeta de 16 GB a 30 pasos, octree 256):
pw.py gen --image refs/front.png [--left L --back B --right R] --out work/raw.glb [--seed N] - Cualquier otro flujo de trabajo de ComfyUI, en formato API o guardado desde el editor (un archivo de plantilla funciona tal cual; pw.py lo convierte con las definiciones de nodos del host):
pw.py gen --image refs/front.png --workflow <archivo> --out work/raw.glb. TRELLIS.2 y Pixal3D con texturas PBR: la plantilla de ComfyUI3d_pixal3d_trellis2_image_to_model.json(en la carpetacomfyui_workflow_templates_json/templatesde la instalación de ComfyUI); su interruptor selecciona Pixal3D por defecto, así que añade--set 316.value=truepara TRELLIS.2. En una tarjeta de 16 GB (tiempo de GPU): TRELLIS.2 377 s en frío (73 a 190 s en caliente), en posición vertical, el mejor detalle; Pixal3D 329 s, en el marco de la cámara (inclinado:pw.py convert IN OUT --level); ambos con unos 700k triángulos y texturas PBR de 4096 px; Hunyuan3D-2 99 s, solo forma.--set NODE.input=VALORcambia cualquier entrada. - APIs alojadas (Meshy tiene la lista de precios públicos más clara; Tripo, Rodin, Hunyuan 3.x): a través de su propia API o MCP, o nodos asociados de ComfyUI. Indica el costo antes de gastarlo.
- Hunyuan3D-2 integrado (solo forma, unos 100 s en una tarjeta de 16 GB a 30 pasos, octree 256):
- Cada ejecución escribe
<salida>.gen.json(host, modelo, semilla, pasos). Registra el modelo y su licencia:pw.py manifest <directorio> --add-tool "<modelo>" --tool-version <v>. - Inspecciona:
pw.py inspect work/raw.glbluegopw.py render work/raw.glb --out renders/raw. Compara la hoja con la referencia: la parte trasera y la inferior son suposiciones; extremidades extra, partes delgadas fundidas y huecos fusionados son comunes. Regenera con otra semilla o mejores vistas antes de arreglar a mano. Letras y números pintados se hornean como manchas y los colores se desvían:pw.py markborra y redibuja la marca y mueve el color al de la foto (L-003; figuras para video).
La salida en bruto no tiene escala, es densa (cientos de miles de triángulos), a menudo no múltiple, sin UVs, con Y hacia arriba. Nunca está lista para juegos ni para impresión tal cual: escálala y termínala (polywright-finish, polywright-print).
Paso 3: código
Escribe un script que construya el objeto a partir de partes nombradas con dimensiones reales, ejecútalo, míralo, arréglalo:
- bpy:
pw.py bpy build.py -- --out work/model.blend(las trampas dependen de la versión de Blender: polywright-blender). - build123d o CadQuery (Python) u OpenSCAD (
openscad -o out.stl model.scad, backend Manifold) para sólidos: herméticos por construcción, exporta STEP para CAD y STL o 3MF para impresión.
Incluye comprobaciones en el script (tamaño total, espacios entre partes, espesor de pared, número de partes) e imprímelas; los agentes arreglan bien los fallos por tracebacks, pero los errores de forma solo con mediciones y renders. Dos reintentos ante un traceback, luego repiensa.
Paso 4: texturas para una malla generada o modelada
TRELLIS.2 y Pixal3D hornean texturas PBR en su flujo de trabajo. Para una malla sin texturar: la etapa de texturizado condicionado por forma de TRELLIS.2, StableGen (complemento de Blender con backend ComfyUI, GPLv3) que proyecta SDXL, Flux o Qwen Image 2.1 desde cámaras (0.4.0 añade retexturizado regional enmascarado y auto-rigging con SkinTokens; Qwen Image 2.1 y FIBO 2.0 Edit son no comerciales, MOSS Image es Apache-2.0), o materiales simples de bibliotecas CC0 (polywright-references). La pintura de Hunyuan 2.1 necesita unos 21 GB.
Licencias (registrar por ejecución)
TRELLIS.2, Pixal3D, TripoSG, PartCrafter: MIT. Los pesos abiertos de Hunyuan3D: licencia comunitaria de Tencent (no licenciado en la UE, Reino Unido ni Corea del Sur; límite de 1M MAU; las salidas no pueden entrenar otros modelos). SF3D y SPAR3D: licencia comunitaria de Stability (gratuito con ingresos menores a 1M USD). Alojados: los términos del plan. Los pesos solo para investigación (PartPacker, Lyra, CHORD) se quedan fuera de cualquier producto enviado. Las tiendas requieren divulgación de IA (polywright enruta referencias).
Mantenimiento
Unidad perenne, nivel fast (los modelos y licencias cambian mensualmente). Acompañantes: RESEARCH.md, CHANGELOG.md, LEARNINGS.md, TESTS.md con evals/evals.json, MAINTENANCE.md, estado en evergreen.json. Lee evergreen.json en cada uso; actualiza cuando corresponda.