CommunityImagemgithub.com

m4bwav/polywright-blender

Use para scripts, automação e depuração do Blender headless. Contém armadilhas da API bpy, receitas testadas (modificadores, booleanos, remesh, UVs, bakes, turntables, passes de profundidade, exportações em lote), servidores MCP e ferramentas 3D por SO. Útil antes de qualquer código bpy.

O que é polywright-blender?

Este skill (polywright-blender) capacita um agente de IA a controlar o Blender de forma headless, roteirizada e confiável, sem depender de uma sessão interativa ao vivo ou de screenshots. Ele é essencial para desenvolvedores que escrevem scripts Python para o Blender (bpy) e precisam evitar as armadilhas comuns da API que mudaram entre versões—por exemplo, operadores de importação renomeados, nós de shader renomeados (EEVEE, Specular, Subsurface) e a transição de sockets antigos para propriedades. O skill fornece um executor de script headless padronizado (pw.py bpy) que captura saídas e tracebacks, um conjunto de receitas testadas para tarefas comuns como booleanos, remesh, UVs, bakes, turntables e exportação, e referências sobre servidores MCP (Model Context Protocol) e suas armadilhas de segurança. Suporta Blender 5.2 LTS em Windows, macOS e Linux, e inclui verificações de ambiente, conselhos sobre versionamento e práticas recomendadas para escrever scripts robustos e portáteis.

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

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que polywright-blender faz?

Blender é o cavalo de batalha: gratuito, funciona em todos os SOs, scriptável até o último botão. Um agente o dirige melhor de forma headless, em cópias, com breves relatórios de texto, não através de screenshots de uma sessão ao vivo. Voltar ao hub: ../polywright/SKILL.md. Profundidade: references/bpy-api-traps.md, references/bpy-recipes.md, references/bpy-recipes-scenes.md e references/bpy-recipes-physics.md (cada receita é executada pelo conjunto de testes), references/mcp-bridges.md, references/tools-by-os.md.

Etapa 1: qual Blender

python ../polywright/scripts/pw.py doctor o encontra (POLYWRIGHT_BLENDER, PATH, pastas de instalação no Windows, macOS e Linux) e imprime a versão. Mire no LTS atual (5.2, suportado até julho de 2028). Escreva a versão no primeiro comentário do script; os fatos da API abaixo são para 5.2.

Etapa 2: executar scripts headless

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

As próprias opções do pw.py podem vir antes ou depois do nome do script; tudo após -- vai para o script. Ele executa blender --background --factory-startup --python-exit-code 3 --python build.py -- args, remove o ruído do log do Blender e retorna ok, as linhas de saída do próprio script e o traceback. Sem --python-exit-code, um erro Python dentro do Blender ainda sai com 0: nunca julgue sucesso apenas pelo código de saída caso contrário. Imprima suas próprias linhas [pw] para os números que você precisa (tamanhos, contagens, verificações).

Regras do script:

  • Comece de bpy.ops.wm.read_factory_settings(use_empty=True) ou de um .blend explícito; nunca dependa de um arquivo de inicialização do usuário.
  • Prefira bpy.data e bmesh em vez de bpy.ops. Quando um operador for necessário, defina o objeto ativo e a seleção primeiro, ou use with bpy.context.temp_override(...).
  • Operadores de viewport falham headless (view3d.*, screen.screenshot, render.opengl): enquadre câmeras a partir dos limites você mesmo (como pw.py render faz).
  • Leia itens enum em vez de adivinhar nomes: m.bl_rna.properties["solver"].enum_items.
  • Tamanho real em metros; aplique transformações antes de medir; importações glTF vêm em modo quaternion com a correção de eixo em um pai: limpe pais mantendo transformações, depois aplique, depois meça.
  • Escreva cada caminho de saída como absoluto (os.path.abspath) e imprima se o arquivo existe depois: um render.filepath relativo relatou sucesso e não escreveu nada visível (L-004).
  • Salve um .blend numerado por marco em work/; recomece dele em vez de carregar uma longa sessão ao vivo.
  • Cozinhe simulações antes de renderizar, com a pasta de cache ao lado do .blend (o padrão é temporário e perdido ao sair). O progresso da cozinha inunda stdout e pw.py bpy corta o meio: escreva os resultados em um arquivo JSON.
  • Duas tentativas em um traceback; então consulte a API (arquivo de armadilhas, introspecção, pesquisa de docs do MCP oficial) em vez de adivinhar uma terceira vez.

Etapa 3: as armadilhas (lista resumida; lista completa no arquivo de armadilhas)

Escrevia (antigo)Use em 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 foi removido
BLENDER_EEVEE_NEXTBLENDER_EEVEE
import bglo módulo gpu
Principled Specular, Subsurface, Transmission, Emission, ClearcoatSpecular IOR Level, Subsurface Weight, Transmission Weight, Emission Color, Coat Weight
action.fcurvesações com slots: layers, strips, channelbags
mod["Socket_2"] = x em 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 (livros 2.7x)select_set, view_layer.objects.active, shade_auto_smooth ou set_sharp_from_angle, scene.compositing_node_group
transform_apply(scale=True) sozinhotambém aplica localização e rotação: passe location=False, rotation=False

Etapa 4: tarefas comuns

pw.py já faz inspecionar, renderizar, converter, LODs, imprimível e união. Para qualquer outra coisa, pegue uma receita de references/bpy-recipes.md: imagens de referência em escala, modificadores e aplicar, Boolean com o solver Manifold e um fallback EXACT, remesh voxel, QuadriFlow, UV Smart e UV lightmap, bake de normal e AO de alto para baixo, materiais com sockets 5.x, stills de turntable, passes de profundidade e normal para vídeo, exportações por motor, e um prop projetado a partir de uma descrição escrita (torno, varredura, espelho; L-003). Cenas: references/bpy-recipes-scenes.md: dispersão Geometry Nodes, profundidade inversa, máscaras, Mist e normais de uma renderização, clay por substituição de material, Line Art, MP4 através do próprio FFmpeg do Blender. Física e rigs: references/bpy-recipes-physics.md: bakes de corpo rígido e tecido, por que um rig Rigify não é um esqueleto de jogo, vinculação a uma armadura manualmente, remesh de volume. Parentalidade, movimento F-modifier e drivers: references/bpy-recipes-motion.md. Chapas de um modelo com peças espelhadas: levante a câmera lateral 10 a 15 graus, ou uma peça esconde a outra (L-005).

Etapa 5: sessões ao vivo (MCP)

Dois servidores existem: o MCP oficial do Blender Lab (v1.0.3, Blender 5.1+, análise de cena e pesquisa de docs da API) e o comunitário mcp-for-blender (anteriormente blender-mcp; pesquisa de assets e hooks de gerador). Ambos executam qualquer Python que o modelo enviar, sem sandbox, na porta 9876. Use um, nunca ambos; apenas quando o usuário está assistindo o Blender e quer edições ao vivo; nunca cole texto de arquivos baixados em seu código. Configuração e modos de falha: references/mcp-bridges.md. Em uma sessão ao vivo, envolva operadores vinculados ao editor em context.temp_override(window=w, area=a, region=r); operadores modais e bpy.app.timers rodam apenas lá, nunca sob -b.

Outras ferramentas

Verificações e reparos de malha sem Blender: trimesh + manifold3d (+ PyMeshLab); entrega web: gltf-transform ou gltfpack; sólidos: OpenSCAD, build123d, CadQuery, FreeCAD; slicers têm CLIs. Versões e o que roda em qual SO: references/tools-by-os.md. No macOS, Blender 5.x e a wheel bpy são apenas Apple Silicon; a wheel bpy precisa exatamente do Python que o Blender empacota (3.13 para 5.2).

Manutenção

Unidade perene, nível moderate (um lançamento do Blender a cada quatro meses; verifique em cada um). Companheiros: RESEARCH.md, CHANGELOG.md, LEARNINGS.md, TESTS.md com evals/evals.json, MAINTENANCE.md, estado em evergreen.json. Leia evergreen.json a cada uso; atualize quando devido.

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...

Habilidades Relacionadas