CommunityImagengithub.com

m4bwav/polywright-blender

Utiliza esta habilidad siempre que se automatice, depure o guiones Blender, antes de escribir cualquier código bpy: ejecuciones headless que reportan errores (pw.py bpy), trampas de la API bpy que aún se escriben en Blender 5.x (importadores eliminados, sockets renombrados, nombres EEVEE), recetas probadas (modificadores, booleanos, remesh, UVs, horneados, turntables, pases de profundidad, exportaciones por lotes), servidores MCP de Blender y sus riesgos, y otras herramientas 3D según el SO. Úsalo en 'escribe un script de Blender', 'automatiza Blender', 'exporta por lotes .blend', cualquier traceback de bpy o...

¿Qué es polywright-blender?

Esta habilidad está diseñada para agentes de IA que trabajan con Blender, proporcionando un conjunto completo de directrices y scripts para automatizar tareas 3D de manera confiable, sin depender de sesiones interactivas en vivo. El núcleo es `pw.py bpy`, un script que ejecuta Blender en modo headless (sin interfaz gráfica), captura la salida de forma limpia y reporta errores de manera estructurada. La habilidad documenta las trampas de la API de Blender 5.x, como cambios en operadores de importación, sockets de Geometry Nodes y nombres de materiales EEVEE, para evitar fallos comunes. Además, incluye recetas probadas para tareas como aplicar modificadores, booleanos con el solver Manifold, remesh, horneado de normales y AO, exportación para motores de juegos y generación de turntables. Para sesiones en vivo, recomienda usar servidores MCP (oficial o comunitario) con precaución, ya que ejecutan código sin restricciones. La habilidad soporta múltiples plataformas (Windows, macOS, Linux) y se complementa con herramientas externas como trimesh, OpenSCAD y gltf-transform para tareas de reparación y conversión de mallas. Está diseñada para mantenerse actualizada con cada versión LTS de Blender (actualmente 5.2) y se gestiona mediante un archivo `evergreen.json` que indica el estado de las dependencias.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/m4bwav/polywright/tree/HEAD/skills/polywright-blender

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

¿Qué hace polywright-blender?

Blender es el caballo de batalla: gratuito, en todos los SO, automatizable hasta el último botón. Un agente lo maneja mejor en modo headless, sobre copias, con informes de texto cortos, no a través de capturas de pantalla de una sesión en vivo.

Volver al centro: ../polywright/SKILL.md.

Profundidad: references/bpy-api-traps.md, references/bpy-recipes.md, references/bpy-recipes-scenes.md y references/bpy-recipes-physics.md (cada receta es ejecutada por el conjunto de pruebas), references/mcp-bridges.md, references/tools-by-os.md.

Paso 1: qué Blender

python ../polywright/scripts/pw.py doctor lo encuentra (POLYWRIGHT_BLENDER, PATH, carpetas de instalación en Windows, macOS y Linux) e imprime la versión. Apunta a la LTS actual (5.2, con soporte hasta julio de 2028). Escribe la versión en el primer comentario del script; los datos de la API a continuación son para 5.2.

Paso 2: ejecutar scripts en modo headless

python ../polywright/scripts/pw.py bpy build.py [--blend in.blend] [--timeout 1800] -- <argumentos del script>

Las opciones propias de pw.py pueden colocarse antes o después del nombre del script; todo después de -- va al script. Ejecuta blender --background --factory-startup --python-exit-code 3 --python build.py -- args, elimina el ruido del registro de Blender y devuelve ok, las líneas de salida propias del script y el traceback. Sin --python-exit-code, un error de Python dentro de Blender aún sale con 0: nunca juzgues el éxito solo por el código de salida en otros casos. Imprime tus propias líneas [pw] para los números que necesites (tamaños, recuentos, comprobaciones).

Reglas del script:

  • Comienza desde bpy.ops.wm.read_factory_settings(use_empty=True) o un .blend explícito; nunca dependas del archivo de inicio del usuario.
  • Prefiere bpy.data y bmesh sobre bpy.ops. Cuando se necesite un operador, establece primero el objeto activo y la selección, o usa with bpy.context.temp_override(...).
  • Los operadores de viewport fallan en modo headless (view3d.*, screen.screenshot, render.opengl): encuadra las cámaras desde los límites tú mismo (como hace pw.py render).
  • Lee los ítems de los enum en lugar de adivinar nombres: m.bl_rna.properties["solver"].enum_items.
  • Tamaño real en metros; aplica transformaciones antes de medir; las importaciones glTF vienen en modo cuaternión con la corrección de eje en un padre: limpia los padres manteniendo las transformaciones, luego aplica, luego mide.
  • Escribe cada ruta de salida como absoluta (os.path.abspath) e imprime si el archivo existe después: una ruta render.filepath relativa reportó éxito pero no escribió nada visible (L-004).
  • Guarda un .blend numerado por cada hito en work/; reinicia desde él en lugar de mantener una sesión en vivo larga.
  • Hornea simulaciones antes de renderizar, con la carpeta de caché al lado del .blend (el predeterminado es temporal y se pierde al salir). El progreso del horneado inunda la salida estándar y pw.py bpy corta el medio: escribe los resultados en un archivo JSON.
  • Dos reintentos en un traceback; luego consulta la API (archivo de trampas, introspección, búsqueda en la documentación del MCP oficial) en lugar de adivinar una tercera vez.

Paso 3: las trampas (lista breve; lista completa en el archivo de trampas)

Escribe (antiguo)Usa en 5.x
bpy.ops.import_scene.obj, import_mesh.stl, import_mesh.ply, wm.collada_*wm.obj_import, wm.stl_import, wm.ply_import; Collada ha desaparecido
BLENDER_EEVEE_NEXTBLENDER_EEVEE
import bglel módulo gpu
Principled Specular, Subsurface, Transmission, Emission, ClearcoatSpecular IOR Level, Subsurface Weight, Transmission Weight, Emission Color, Coat Weight
action.fcurvesacciones con slots: capas, strips, channelbags
mod["Socket_2"] = x en Geometry Nodesmod.properties.inputs.Socket_2.value = x
import_image.to_planeimage.import_as_mesh_planes
Workbench shading.show_shadowshading.show_shadows
obj.select = True, scene.objects.active, mesh.use_auto_smooth, scene.node_tree (libros 2.7x)select_set, view_layer.objects.active, shade_auto_smooth o set_sharp_from_angle, scene.compositing_node_group
transform_apply(scale=True) solotambién aplica ubicación y rotación: pasa location=False, rotation=False

Paso 4: trabajos comunes

pw.py ya hace inspeccionar, renderizar, convertir, LODs, imprimible y unión. Para cualquier otra cosa, toma una receta de references/bpy-recipes.md: imágenes de referencia a escala, modificadores y aplicar, Booleano con el solver Manifold y un fallback EXACT, remesh voxel, QuadriFlow, UV inteligente y UV de lightmap, horneado de normal y AO de alto a bajo, materiales con sockets de 5.x, fotogramas de turntable, pases de profundidad y normal para video, exportaciones por motor, y un accesorio diseñado a partir de una descripción escrita (torno, barrido, espejo; L-003). Escenas: references/bpy-recipes-scenes.md: dispersión de Geometry Nodes, profundidad inversa, máscaras, Neblina y normales desde un render, arcilla por anulación de material, Line Art, MP4 a través del FFmpeg propio de Blender. Física y rigs: references/bpy-recipes-physics.md: horneados de cuerpo rígido y tela, por qué un rig de Rigify no es un esqueleto de juego, vinculación a un armadura manualmente, remesh de volumen. Emparejamiento, F-modifier movimiento y drivers: references/bpy-recipes-motion.md. Láminas de un modelo con partes especulares: eleva la cámara lateral de 10 a 15 grados, o una parte oculta la otra (L-005).

Paso 5: sesiones en vivo (MCP)

Existen dos servidores: el MCP oficial de Blender Lab (v1.0.3, Blender 5.1+, análisis de escenas y búsqueda en la documentación de la API) y el comunitario mcp-for-blender (anteriormente blender-mcp; búsqueda de activos y ganchos de generador). Ambos ejecutan cualquier Python que envíe el modelo, sin sandbox, en el puerto 9876. Usa uno, nunca ambos; solo cuando el usuario esté viendo Blender y quiera ediciones en vivo; nunca pegues texto de archivos descargados en su código. Configuración y modos de fallo: references/mcp-bridges.md. En una sesión en vivo, envuelve los operadores vinculados al editor en context.temp_override(window=w, area=a, region=r); los operadores modales y bpy.app.timers solo se ejecutan ahí, nunca bajo -b.

Otras herramientas

Comprobaciones y reparaciones de mallas sin Blender: trimesh + manifold3d (+ PyMeshLab); entrega web: gltf-transform o gltfpack; sólidos: OpenSCAD, build123d, CadQuery, FreeCAD; los laminadores tienen interfaces de línea de comandos. Versiones y qué se ejecuta en cada SO: references/tools-by-os.md. En macOS, Blender 5.x y la rueda bpy son solo para Apple Silicon; la rueda bpy necesita exactamente el Python que incluye Blender (3.13 para 5.2).

Mantenimiento

Unidad perenne, nivel moderate (una versión de Blender cada cuatro meses; comprobar en cada una). 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 sea necesario.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

m4bwav/polywright

Start here whenever a task needs a 3D model and no sibling below clearly owns it: a model of a real or imagined thing for a game (Unity, Roblox, Unreal, three.js), a 3D print, AI video or AR, or another plugin asking for a mesh. Picks the route (find, capture, generate, code), scaffolds the asset folder and manifest other plugins read, and runs pw.py (inspect, render a sheet, convert, check a budget, bpy headless, match a picture's camera, army blockouts with depth and pose passes for AI...

m4bwav/polywright-finish

Use whenever a mesh must be made ready for a game engine, the web or AR: is it game-ready, too many polygons, LODs, retopology, UVs, baking, PBR and normal-map conventions, collision, rigging, and axis, unit and format export for Roblox, Unity, Unreal, Godot, three.js (meshopt, KTX2), USDZ and video blockouts. Use on 'is this game-ready', 'make this work in Roblox/Unity', 'optimise for the web', 'reduce polygons', 'add LODs', 'retopologise', 'bake normals', 'imports sideways or tiny', 'flip...

m4bwav/polywright-generate

Use whenever an imagined or hypothetical 3D model must be made from a prompt, a drawing, concept art, photos or a blockout: image-to-3D through ComfyUI (TRELLIS.2, Pixal3D, Hunyuan3D-2 via pw.py gen) or hosted (Meshy, Tripo, Rodin), or code (bpy, build123d, CadQuery, OpenSCAD) when it has dimensions; then texturing and the licence record. Use on 'make me a 3D model of a dragon', 'turn this drawing or concept art into 3D', 'image to 3D', 'text to 3D', 'TRELLIS', 'Hunyuan3D', 'Meshy', 'model a...

m4bwav/polywright-references

Use whenever reference images, views or textures for a 3D model are needed, before modelling or image-to-3D: orthographic front, side and back views with a height bar, A-pose turnarounds, multi-view sets, blockout renders repainted into consistent views, seamless textures and quick normal/height/roughness maps (pw.py texture). Use on 'what references do I need', 'reference sheet', 'front side back views', 'turnaround', 'seamless texture', 'PBR maps from this photo'. Not for flat graphic...

Skills relacionados