CommunityImagengithub.com

polywright-finish

Úsalo cada vez que una malla deba prepararse para un motor de juego, la web o RA: si está lista para el juego, demasiados polígonos, LODs, retopología, UVs, horneado, convenciones PBR y mapas de normales, colisiones, rigging, y ejes, unidades y formato de exportación para Roblox, Unity, Unreal, Godot, three.js (meshopt, KTX2), USDZ y bloqueos de video. Úsalo en preguntas como '¿está listo para el juego?', 'haz que funcione en Roblox/Unity', 'optimiza para la web', 'reduce polígonos', 'añade LODs', 'retopologiza', 'hornea normales', 'importa de lado o pequeño', 'voltea...'

¿Qué es polywright-finish?

El skill polywright-finish es una herramienta integral para técnicos en 3D y desarrolladores que necesitan preparar mallas poligonales para su uso en motores de juego (Roblox, Unity, Unreal, Godot), la web (three.js) y realidad aumentada (USDZ). Su propósito principal es guiar al usuario a través de un flujo de trabajo completo de finalización: desde la inspección y medición inicial hasta la exportación y verificación final, asegurando que la malla cumpla con los requisitos técnicos específicos de cada plataforma. El skill se basa en el comando `pw.py` para inspeccionar, verificar, convertir y renderizar mallas, y proporciona reglas detalladas sobre escalado, orientación, pivote, reducción de triángulos, generación de LODs, limpieza de UVs, horneado de texturas PBR, configuración de mapas de normales (OpenGL vs DirectX), y rigging para animación. Incluye referencias a motores específicos y un proceso paso a paso que finaliza con la exportación a formatos como GLB, FBX, OBJ, USDZ y STL, seguida de una verificación automática. Es especialmente útil para evitar problemas comunes como mallas importadas con escala incorrecta, orientación equivocada, normales invertidas, o densidad de UV desigual. El skill mantiene un estado de 'evergreen' con archivos de registro y pruebas.

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

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

Una malla está terminada cuando pasa la verificación de su destino, se ve correcta en un render e importa con el tamaño y la orientación adecuados. Volver al centro: ../polywright/SKILL.md. Detalles de motores: references/engines.md. Cómo crear y finalizar para un motor, paso a paso: references/roblox.md, references/unity.md, references/web-threejs.md. Mallas que se doblan, sombrean y texturizan bien: references/topology.md.

Paso 1: medir, luego decidir

pw.py inspect <archivo> y pw.py check <archivo> --target <t> --real-size-m X. Los fallos indican qué hacer: demasiados triángulos, sin UVs, demasiados materiales, tamaño incorrecto, bordes abiertos, y para juegos, web y AR, caras volteadas o apiladas y densidad de UV desigual (inspect --topology; caras volteadas: convert --fix-winding). Renderiza antes y después de cada paso destructivo (pw.py render).

Paso 2: escala, orientación, pivote

  • Tamaño real en metros: pw.py convert entrada salida --size-m X --ground --center (lado más largo a X; usa una dimensión conocida para formas irregulares). Una puerta mide 2.0 a 2.1 m, un asiento de silla 0.45 m, una mesa 0.75 m, una persona 1.7 a 1.8 m.
  • Pivote en el centro inferior para accesorios, en la bisagra para puertas, en el eje para ruedas, en la empuñadura para armas.
  • Ejes: Blender +Z arriba y el frente mira -Y; glTF +Y arriba y el frente mira +Z; Unreal +Z arriba en centímetros; Unity +Y arriba, sistema zurdo; Roblox +Y arriba, 1 stud = 0.28 m. Prueba una exportación con un cubo de 1 m y una flecha de orientación si tienes dudas.

Paso 3: geometría para el destino

NecesidadHaz
Menos triángulos, accesorio estáticopw.py convert --max-tris N (la decimación por colapso conserva la silueta); LODs con pw.py lods (aproximadamente la mitad por nivel)
Menos triángulos, malla que se doblano uses decimación: fusiona bucles donde no se doble nada, mantén los bucles alrededor de las articulaciones (references/topology.md)
Cuádruples limpios para deformación o esculpidoremallado voxel primero (lo cierra), luego QuadriFlow (receta en polywright-blender), Instant Meshes, Quad Remesher (de pago), o un remallado cuádruple alojado; personajes: a mano
Malla generada (densa, grumosa, bordes suaves)accesorio estático: decima y vuelve a hornear; héroe o animado: retopología y vuelve a hornear; o regenera con mejores referencias
Muchas partes que deberían ser una--join; para un sólido, pw.py union
Colisiónuna caja, cápsula o casco convexo por parte; prefijo Unreal UCX_; Roblox CollisionFidelity Box o Hull; nunca uses la malla de render para objetos en movimiento

Paso 4: UVs y texturas

  • UVs: pw.py convert --uv (Proyecto UV Inteligente) para accesorios; un segundo conjunto sin superposición para lightmaps horneados (receta); densidad de texel consistente en todo un kit; hojas de recorte y atlas para reducir materiales y llamadas de dibujo.
  • Hornea desde la malla densa a la baja: normal, AO, color (receta bake-high-to-low). La retopología destruye los UVs, por lo que siempre debes volver a hornear.
  • PBR metal-rough: metalness 0 o 1, roughness define el aspecto, albedo nunca negro o blanco puro; glTF empaqueta oclusión, roughness, metalness en R, G, B (ORM).
  • Mapas de normales: OpenGL (Y+) para Blender, Unity, Godot, glTF, three.js, Roblox; DirectX (Y-) para Unreal. Corrige un desajuste invirtiendo el canal verde. Texturas en potencias de dos; 1024 a 2044 por material para web y AR.

Paso 5: rig (cuando se mueve)

Entrada en pose A, malla manifold limpia. UniRig (MIT, local, 8 GB) o Tripo, Meshy, AccuRIG alojados (pesos humanoides más limpios), Mixamo (humanoides, mejor documentación de retarget). Una comparación de 2026 encontró que el pivote de cadera de Meshy estaba 5 a 15 cm desviado (pies deslizantes) y AccuRIG importa una vez a escala 0.01: verifica escala y pivote después del rigging. Roblox: como máximo 4 influencias de hueso por vértice, raíz en el origen. Un rig de Rigify exporta muchos más huesos que su conjunto deformante (278 de 706 solo con deformación activada): para juegos, construye un esqueleto solo deformante o usa las rutas anteriores.

Clips de animación: inicia y termina cada clip en una de unas pocas poses centrales compartidas para que los clips se encadenen sin transición; el primer fotograma de un bucle es igual al último; decide movimiento de raíz o en el lugar por clip y anótalo; mantén los clips aditivos (apuntar, mirar, inclinarse) como acciones separadas sobre una pose base (Gregory, Game Engine Architecture 2e (2014), sec. 11.6).

Paso 6: exportar y verificar

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

DestinoExportarLuego
game-robloxFBX, OBJ o GLB por MeshPart, menos de 20k triángulos, un materialcheck --target game-roblox; roblox-agent lo coloca
game-unityGLB (glTFast) o FBX --fbx-bake-axesprueba de importación en el proyecto (unity-agent)
game-unrealFBX o GLB; Nanite para mallas densas opacasverificación de escala al importar
web-threejsGLB, luego gltf-transform optimize entrada.glb salida.glb --compress meshopt --texture-compress ktx2 --join-named falsegltf_validator; verificación de página (threewright)
ar-usdzconvert entrada.glb salida.usdzusdchecker --arkit cuando usd-core está instalado
video-blockoutGLB o .blend a escala real, además de mesas giratorias y pases de profundidad/normal (recetas)entrega al plugin de video (cinewright)
commerce-gltfGLB, tamaño real, origen centro inferior, solo triánguloscheck --target commerce-gltf

Suavizado por ángulo es un modificador de Geometry Nodes en Blender 4.1 y posteriores: exporta con los modificadores aplicados, o los bordes duros aparecerán suavizados (glTF, FBX y OBJ por igual, verificado en 5.2.1). Registra cada salida: pw.py manifest <dir> --add-output out/<archivo> --target <t> --inspect.

Mantenimiento

Unidad perenne, nivel moderate. Compañeros: RESEARCH.md, CHANGELOG.md, LEARNINGS.md, TESTS.md con evals/evals.json, MAINTENANCE.md, estado en evergreen.json. Lee evergreen.json en cada uso; actualízalo cuando corresponda.

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

Skills relacionados