CommunityImagegithub.com

polywright-finish

Prépare un maillage pour un moteur de jeu, le Web ou la RA : contrôle de qualité, réduction du nombre de polygones, LODs, retopologie, UVs, cuisson, normales, collisions, rigging et export.

Qu'est-ce que polywright-finish ?

Cette compétence guide la finalisation d'un maillage 3D pour qu'il soit prêt à être utilisé dans un moteur de jeu, une application web ou un environnement de réalité augmentée. Elle automatise les vérifications de conformité (nombre de triangles, UV, matériaux, échelle, orientation, faces inversées) via `pw.py inspect` et `pw.py check`, puis applique les corrections nécessaires : mise à l'échelle réaliste, recentrage du pivot, optimisation de la géométrie par décimation ou LODs, création d'UV, cuisson de textures PBR (normales, occlusion, roughness, metalness), et rigging. Le processus est adapté à des cibles précises – Roblox, Unity, Unreal, three.js (avec meshopt et KTX2), USDZ pour AR – et chaque export est vérifié avec des outils spécifiques. Un flux pas-à-pas est décrit, incluant la gestion des animations (clips, root motion, additive) et l'utilisation d'un manifeste pour tracer chaque sortie. Cette compétence est conçue pour les artistes techniques et les développeurs intégrant des assets 3D dans des pipelines professionnels, avec un support pour Blender, glTF, FBX, OBJ et USD.

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

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait polywright-finish ?

Un maillage est terminé lorsqu'il passe les contrôles de sa cible, a un rendu correct et s'importe à la bonne taille et orientation. Retour au hub : ../polywright/SKILL.md. Détails des moteurs : references/engines.md. Création et finition pour un moteur, étape par étape : references/roblox.md, references/unity.md, references/web-threejs.md. Maillages qui se déforment, s'ombrent et se texturisent bien : references/topology.md.

Étape 1 : mesurer, puis décider

pw.py inspect <fichier> et pw.py check <fichier> --target <cible> --real-size-m X. Les échecs indiquent quoi faire : trop de triangles, pas d'UV, trop de matériaux, mauvaise taille, arêtes ouvertes, et pour les cibles jeu, web et RA, faces inversées ou empilées, densité d'UV inégale (inspect --topology ; faces inversées : convert --fix-winding). Effectuer un rendu avant et après chaque étape destructive (pw.py render).

Étape 2 : échelle, orientation, pivot

  • Taille réelle en mètres : pw.py convert entrée sortie --size-m X --ground --center (le côté le plus long à X ; utiliser une dimension connue pour les formes irrégulières). Une porte fait 2,0 à 2,1 m, une assise de chaise 0,45 m, une table 0,75 m, une personne 1,7 à 1,8 m.
  • Pivot au centre inférieur pour les accessoires, à la charnière pour les portes, à l'axe pour les roues, à la poignée pour les armes.
  • Axes : Blender +Z vers le haut et les faces avant en -Y ; glTF +Y vers le haut et les faces avant en +Z ; Unreal +Z vers le haut en centimètres ; Unity +Y vers le haut en main gauche ; Roblox +Y vers le haut, 1 stud = 0,28 m. Tester une exportation avec un cube de 1 m et une flèche de direction en cas de doute.

Étape 3 : géométrie pour la cible

BesoinFaire
Moins de triangles, accessoire statiquepw.py convert --max-tris N (la décimation par effondrement conserve la silhouette) ; LODs avec pw.py lods (environ moitié par niveau)
Moins de triangles, maillage qui se déformepas de décimation : fusionner les boucles là où rien ne se déforme, conserver les boucles autour des articulations (references/topology.md)
Quads propres pour déformation ou sculptured'abord un remaillage voxel (ferme l'objet), puis QuadriFlow (recette dans polywright-blender), Instant Meshes, Quad Remesher (payant), ou un remaillage quad hébergé ; personnages : à la main
Maillage généré (dense, bosselé, arêtes douces)accessoire statique : décimer et re-cuire ; héroïque ou animé : retopologie et re-cuite ; ou régénérer avec de meilleures références
Plusieurs parties qui devraient être une seule--join ; pour un solide, pw.py union
Collisionune boîte, capsule ou enveloppe convexe par partie ; préfixe Unreal UCX_ ; Roblox CollisionFidelity Box ou Hull ; ne jamais utiliser le maillage de rendu pour les objets en mouvement

Étape 4 : UV et textures

  • UV : pw.py convert --uv (Smart UV Project) pour les accessoires ; un second ensemble non superposé pour les lightmaps cuites (recette) ; densité texel cohérente sur un kit ; feuilles de garniture et atlas pour réduire les matériaux et les appels de dessin.
  • Cuisson du maillage dense vers le maillage bas : normale, AO, couleur (recette bake-high-to-low). La retopologie détruit les UV, donc toujours re-cuire.
  • PBR metal-rough : métal 0 ou 1, la rugosité porte l'aspect, l'albedo jamais pur noir ou blanc ; glTF empaquette occlusion, rugosité, métal dans R, V, B (ORM).
  • Cartes normales : OpenGL (Y+) pour Blender, Unity, Godot, glTF, three.js, Roblox ; DirectX (Y-) pour Unreal. Corriger une discordance en inversant le vert. Textures en puissance de deux ; 1024 à 2048 par matériau pour le web et la RA.

Étape 5 : rigging (quand ça bouge)

Entrée en pose A, maillage propre et manifold. UniRig (MIT, local, 8 Go) ou hébergé Tripo, Meshy, AccuRIG (poids humanoides les plus propres), Mixamo (humanoïde, meilleure doc de retarget). Une comparaison de 2026 a trouvé le pivot de la hanche de Meshy 5 à 15 cm décalé (pieds qui glissent) et AccuRIG important une fois à l'échelle 0,01 : vérifier l'échelle et le pivot après le rigging. Roblox : au maximum 4 influences d'os par sommet, racine à l'origine. Un rig Rigify exporte bien plus d'os que son jeu de déformation (278 sur 706 avec uniquement la déformation) : pour les jeux, construire un squelette de déformation uniquement ou utiliser les voies ci-dessus.

Clips d'animation : commencer et terminer chaque clip sur une pose commune partagée pour que les clips s'enchaînent sans transition ; la première image d'une boucle égale sa dernière ; décider du root motion ou sur place par clip et l'écrire ; garder les clips additifs (viser, regarder, incliner) comme actions séparées sur une pose de base (Gregory, Game Engine Architecture 2e (2014), sec. 11.6).

Étape 6 : exporter et vérifier

pw.py convert écrit GLB, FBX, OBJ, USD/USDZ, STL. Par cible :

CibleExportationPuis
game-robloxFBX, OBJ ou GLB par MeshPart, moins de 20k triangles, un matériaucheck --target game-roblox ; roblox-agent le place
game-unityGLB (glTFast) ou FBX --fbx-bake-axestest d'import dans le projet (unity-agent)
game-unrealFBX ou GLB ; Nanite pour les maillages denses opaquesvérification de l'échelle à l'import
web-threejsGLB, puis gltf-transform optimize in.glb out.glb --compress meshopt --texture-compress ktx2 --join-named falsegltf_validator ; vérification de la page (threewright)
ar-usdzconvert in.glb out.usdzusdchecker --arkit lorsque usd-core est installé
video-blockoutGLB ou .blend à l'échelle réelle, plus tournettes et passes de profondeur/normale (recettes)transmettre au plugin vidéo (cinewright)
commerce-gltfGLB, taille réelle, origine centre inférieur, triangles uniquementcheck --target commerce-gltf

Smooth by Angle est un modificateur Geometry Nodes dans Blender 4.1 et versions ultérieures : exporter avec les modificateurs appliqués, sinon les arêtes dures apparaissent lissées (glTF, FBX et OBJ de même, vérifié sur 5.2.1). Enregistrer chaque sortie : pw.py manifest <répertoire> --add-output sortie/<fichier> --target <cible> --inspect.

Maintenance

Unité persistante, niveau moderate. Compagnons : RESEARCH.md, CHANGELOG.md, LEARNINGS.md, TESTS.md avec evals/evals.json, MAINTENANCE.md, état dans evergreen.json. Lire evergreen.json à chaque utilisation ; actualiser lorsque nécessaire.

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 associés