CommunityImagemgithub.com

m4bwav/polywright-finish

Use para deixar uma malha pronta para motor de jogo, web ou AR: verificar se está pronta, polígonos em excesso, LODs, retopologia, UVs, baking, convenções PBR e normal-map, colisão, rigging, e eixos, unidades e formato de exportação para Roblox, Unity, Unreal, Godot, three.js (meshopt, KTX2), USDZ e blockouts de vídeo. Use em 'isto está pronto para jogo?', 'faça funcionar no Roblox/Unity', 'otimize para a web', 'reduza polígonos', 'adicione LODs', 'retopologize', 'bake normais', 'importa de lado ou minúsculo', 'inverta…

O que é polywright-finish?

O **polywright-finish** é uma habilidade especializada para finalizar malhas 3D, garantindo que estejam prontas para uso em motores de jogo (Roblox, Unity, Unreal), web (three.js, glTF otimizado) e AR (USDZ). Ela automatiza e orienta todo o pipeline de preparação: desde inspeção inicial (`pw.py inspect`), correção de escala, orientação e pivô, até redução de polígonos, geração de LODs, retopologia, criação de UVs, baking de mapas (normal, AO, cor), aplicação de convenções PBR metal-rough, rigging (com suporte a UniRig, AccuRIG, Mixamo) e exportação final com verificações específicas por plataforma. A habilidade é útil para artistas técnicos e desenvolvedores que precisam de um fluxo de trabalho confiável e repetível para otimizar e converter assets 3D. Ela suporta múltiplas plataformas com verificações de conformidade (ex.: `check --target game-roblox`), e inclui receitas para lidar com problemas comuns como malhas com muitos triângulos, UVs ausentes, normais invertidas, escala incorreta e rigging com peso deformado. O funcionamento se baseia no ecossistema `pw.py`, um conjunto de scripts que realizam conversões, inspeções e verificações. A documentação detalhada em `SKILL.md` orienta passo a passo (medir, escalar, geometria, UVs/texturas, rig, exportar), com referências a arquivos auxiliares para cada motor. A habilidade é mantida em estado 'evergreen', com registros de mudanças, aprendizado e testes. Ela é ideal para equipes que precisam de consistência entre plataformas e redução de erros manuais, padronizando operações como decimação, remesh, baking de texturas e otimização de malhas para performance.

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

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-finish faz?

Uma malha está finalizada quando passa na verificação do seu destino, parece correta em uma renderização e importa no tamanho e orientação certos. Voltar ao hub: ../polywright/SKILL.md. Detalhes dos motores: references/engines.md. Criar e finalizar para um motor, passo a passo: references/roblox.md, references/unity.md, references/web-threejs.md. Malhas que deformam, sombreiam e texturizam bem: references/topology.md.

Passo 1: medir, depois decidir

pw.py inspect <arquivo> e pw.py check <arquivo> --target <t> --real-size-m X. As falhas dizem o que fazer: triângulos demais, sem UVs, muitos materiais, tamanho errado, arestas abertas e, para jogos, web e AR, faces invertidas ou empilhadas e densidade UV irregular (inspect --topology; faces invertidas: convert --fix-winding). Renderize antes e depois de cada etapa destrutiva (pw.py render).

Passo 2: escala, orientação, pivô

  • Tamanho real em metros: pw.py convert in out --size-m X --ground --center (maior lado para X; use uma dimensão conhecida para formas irregulares). Uma porta tem 2,0 a 2,1 m, um assento de cadeira 0,45 m, uma mesa 0,75 m, uma pessoa 1,7 a 1,8 m.
  • Pivô no centro inferior para objetos de cena, na dobradiça para portas, no eixo para rodas, no cabo para armas.
  • Eixos: Blender +Z para cima e a frente para -Y; glTF +Y para cima e a frente para +Z; Unreal +Z para cima em centímetros; Unity +Y para cima, canhoto; Roblox +Y para cima, 1 stud = 0,28 m. Teste uma exportação com um cubo de 1 m e uma seta de frente quando estiver em dúvida.

Passo 3: geometria para o destino

NecessidadeFaça
Menos triângulos, objeto estáticopw.py convert --max-tris N (decimação por colapso mantém a silhueta); LODs com pw.py lods (cerca de metade por nível)
Menos triângulos, malha que deformanão decimar: mesclar loops onde nada deforma, manter loops ao redor das juntas (references/topology.md)
Quads limpos para deformação ou esculturaprimeiro remesh voxel (fecha a malha), depois QuadriFlow (receita no polywright-blender), Instant Meshes, Quad Remesher (pago), ou um remesh quádruplo hospedado; personagens: manualmente
Malha gerada (densa, irregular, bordas suaves)objeto estático: decimar e re-bake; herói ou animado: retopologia e re-bake; ou regenerar com referências melhores
Muitas partes que deveriam ser uma--join; para um sólido, pw.py union
Colisãouma caixa, cápsula ou convex hull por parte; Unreal prefixo UCX_; Roblox CollisionFidelity Box ou Hull; nunca a malha de render para objetos em movimento

Passo 4: UVs e texturas

  • UVs: pw.py convert --uv (Smart UV Project) para objetos de cena; um segundo conjunto não sobreposto para mapas de luz horneados (receita); densidade de texel consistente em um kit; folhas de trim e atlases para reduzir materiais e chamadas de draw.
  • Bake da malha densa para a malha baixa: normal, AO, cor (receita bake-high-to-low). Retopologia destrói UVs, então sempre re-bake.
  • PBR metal-rough: metalicidade 0 ou 1, rugosidade carrega a aparência, albedo nunca preto ou branco puro; glTF empacota oclusão, rugosidade, metalicidade em R, G, B (ORM).
  • Mapas normais: OpenGL (Y+) para Blender, Unity, Godot, glTF, three.js, Roblox; DirectX (Y-) para Unreal. Corrija uma incompatibilidade invertendo o verde. Texturas em potências de dois; 1024 a 2048 por material para web e AR.

Passo 5: rig (quando se move)

Entrada em pose A, malha limpa e manifold. UniRig (MIT, local, 8 GB) ou Tripo hospedado, Meshy, AccuRIG (pesos mais limpos para humanoides), Mixamo (humanoides, melhores documentos de retarget). Uma comparação de 2026 descobriu que o pivô do quadril do Meshy está 5 a 15 cm deslocado (pés deslizam) e o AccuRIG importa uma vez na escala 0,01: verifique escala e pivô após rigging. Roblox: no máximo 4 influências de osso por vértice, raiz na origem. Um rig Rigify exporta muito mais ossos do que seu conjunto de deformação (278 de 706 com apenas deformação ativada): para jogos, construa um esqueleto apenas de deformação ou use as rotas acima.

Clipes de animação: inicie e termine cada clipe em uma de algumas poses centrais compartilhadas para que os clipes se encadeiem sem mistura; a primeira imagem de um loop é igual à sua última; decida movimento da raiz ou no lugar por clipe e anote; mantenha clipes aditivos (mirar, olhar, inclinar) como ações separadas sobre uma pose base (Gregory, Game Engine Architecture 2e (2014), sec. 11.6).

Passo 6: exportar e verificar

pw.py convert escreve GLB, FBX, OBJ, USD/USDZ, STL. Por destino:

DestinoExportarDepois
game-robloxFBX, OBJ ou GLB por MeshPart, abaixo de 20k triângulos, um materialcheck --target game-roblox; roblox-agent o posiciona
game-unityGLB (glTFast) ou FBX --fbx-bake-axesteste de importação no projeto (unity-agent)
game-unrealFBX ou GLB; Nanite para malhas opacas densasverificar escala na importação
web-threejsGLB, depois gltf-transform optimize in.glb out.glb --compress meshopt --texture-compress ktx2 --join-named falsegltf_validator; verificar na página (threewright)
ar-usdzconvert in.glb out.usdzusdchecker --arkit quando usd-core estiver instalado
video-blockoutGLB ou .blend na escala real, além de turntables e passes de profundidade/normal (receitas)entregar ao plugin de vídeo (cinewright)
commerce-gltfGLB, tamanho real, origem centro inferior, apenas triânguloscheck --target commerce-gltf

Suavizar por ângulo é um modificador Geometry Nodes no Blender 4.1 e posterior: exporte com modificadores aplicados, ou as arestas duras sairão suavizadas demais (glTF, FBX e OBJ igualmente, verificado na versão 5.2.1). Registre cada saída: pw.py manifest <dir> --add-output out/<arquivo> --target <t> --inspect.

Manutenção

Unidade sempre atualizada, nível de esforço moderate. Acompanhantes: 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 necessário.

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

Use whenever Blender is scripted, automated or debugged, before writing any bpy code: headless runs that report errors (pw.py bpy), the bpy API traps models still write in Blender 5.x (removed importers, renamed sockets, EEVEE names), tested recipes (modifiers, booleans, remesh, UVs, bakes, turntables, depth passes, batch exports), Blender MCP servers and their risks, and other 3D tools per OS. Use on 'write a Blender script', 'automate Blender', 'batch export .blend', any bpy traceback or...

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