Loading...
Loading...
Use when turning a dense sculpt, scan, ZBrush export or AI-generated mesh into animation-ready or game-ready topology in Maya without a mouse ("clean up this AI mesh", "retopo this character", Quad Draw, Retopologize), testing it deforms before rigging (bad elbow or wrist bend, lids popping through the eyes), or unwrapping UVs, cutting seams, setting texel density, mip-safe padding, UDIMs, lightmap UVs, stacking mirrored shells, or preparing a low poly and cage for baking. Keywords: edge flow, eye and mouth loops, Unfold3D, bake prep.
npx skill4agent add scenario-labs/skills scenario-maya-retopology-uvnpx skills add scenario-labs/skills --skill <name>scripts/mx_retopology_uv.pyimport mx_retopology_uv as RUtests/code/maya-retopology-uv/run_all.shjob_probe_commandsRU.fit_templatepolyRetopo| Input | Why it changes the plan | Default when the brief is silent |
|---|---|---|
| Purpose | film cage subdivided at render vs real-time triangles plus bakes | real-time |
| Deformation, engine | face rig, blend shapes; one extra mouth-corner span forced a fifth influence (Jessica [00:59:24]) | face and limbs deform; 4 influences, confirm with scenario-maya-rigging |
| Budget | triangles from the lead (Polycount); "exactly as high as needed" (FlippedNormals [00:13:46]) | propose one from screen coverage, as an assumption |
| Closest shot | texel density | 1920 x 1080, 85 mm on the head (Paulino) |
| Textures | map size, 0-1 or UDIM, lowest mip, strategy (optimized, technical, continuous) | games: 0-1 seen at a quarter size; film: 4K UDIMs; characters continuous |
| Template, eyes | base mesh; eyeballs to fit lids on | ask scenario-maya-modeling for a primitive-blocked base and eyeballs |
| Pose | neutral face, relaxed A-pose, eyes forward (Jessica [01:00:30]; antCGi e74KphYwMww [00:07:39]) | report a posed source |
mx_audit.audit(source)RU.prep_source| Part | Method | Call |
|---|---|---|
| Face, head, hands, body with a base | landmark fit | |
| Limbs, fingers, sleeves, skirts, tails | plane sections, 1 + 2 loops per joint | |
| Props, armor plates, static cloth | Retopologize | |
| Torso or face without a base | primitive base from scenario-maya-modeling, then fit | Retopologize only as a flagged start for Quad Draw (gui-paths.md) |
mx_audit.verdictRU.relax_projectRU.snap_centerRU.mirror_halfRU.retopo_reportRU.deform_test(mesh, chain, bends, review_dir=...)kind="hinge"RU.lid_check(head, eyeball)topologyrigRU.compare_variantsRU.loop_keysRU.cut_seamsRU.unfoldRU.optimizeRU.orient_shellRU.straighten_rowsRU.mirror_uvs(mode="mirror")RU.density_from_cameraRU.density_for_budgetRU.set_texel_densityRU.layout(scale_mode="off")RU.mip_paddingRU.mirror_uvs(mode="stack", offset_u=1.0)RU.lightmap_setRU.uv_reportRU.checker_reviewRU.harden_uv_bordersRU.bake_checkRU.make_cageRU.project_to_surfaceRU.bake_copyRU.overlap_review(low, high, out)| Item | Value | Relative to, source |
|---|---|---|
| Joint loops | 1 control + 2 support; knuckles 3 each | each bend (Jessica [01:15:51] [01:17:34]) |
| Lids, lips | upper count = lower count | FlippedNormals [00:21:41]; antCGi RlNnp4qQIrU [00:05:22] |
| Mirror, center | weld custom 0.001; drift band 1e-4 to 1e-2 cm, snap to 0 | antCGi QW8w15J00Ok [00:02:24]; FlippedNormals [00:19:06] |
| Retopologize | hard surface 1 / 1 / 0; Preprocess for 100k+ tris; tolerance under 10% is slow | Maya 2027 Help |
| Texel density | 2 x screen px at the closest shot, power of two | Paulino [00:02:33] |
| Maps, padding | 4K tiles, odd shell at half scale on 8K; 4 / 2 px, x2 per mip (2048 seen at 512: 16 / 8) | Paulino [00:05:48]; Maya 2027 Help |
| Hard edges, mirror | every UV seam, bends over ~45°; mirrored UVs 1 unit over | Polycount |
| Deformation [added] | joint loop within 20° of the bone, no spiral over 15°, 0.8 of an ideal ring's area kept; hinge mean shear under 10°; faces under 0.3 area collapse; an ideal ring under 0.7 is a rig note | organic digest; scenario-maya-deformation |
| Lids [added] | nothing inside the eyeball at rest or blink, vertices and edge midpoints; gap under 0.1 eye radius | antCGi x07USYlvu2o [00:15:18] |
| Gates [added] | deviation under 10% of mean edge; UV area ratio 0.5 to 2, anisotropy under 2; density within 10%; packing 0.7; 3+ clean rings per opening; silhouettes differ under 2% | this skill |
rep = RU.retopo_report("body_geo", "scan_high", openings={"eye_L": {"point": (3.2, 163, 8.5)}},
joints={"elbow_L": {"center": (45, 140, -2), "axis": (1, 0, 0), "radius": 6}})
dt = RU.deform_test("body_geo", [shoulder, elbow, wrist, hand_tip],
[{"name": "elbow_130", "joint": 1, "angle": 130, "axis": (0, 1, 0)}])
lid = RU.lid_check("body_geo", "eyeL_geo")
uv = RU.uv_report("body_geo", 4096, smallest_mip=1024, target_density=20.48, images_dir="/abs/out/uv")
print(rep["fails"], dt["verdict"], lid["fails"], uv["fails"]) # full arguments: procedures.mdpolyRetopotopologyreferences/critique.md| Mistake | Looks like | Fix |
|---|---|---|
| Retopologize on a face | plausible grid, no rings | template fit; openings gate |
| mesh re-solves on edit or open | |
| All hard edges on a scan or AI mesh | Retopologize fails or crawls | |
| Cleanup and Merge on internal faces | endless non-manifold loop | select-mode Cleanup, delete by hand, or Boolean Volume (P2) |
| Wrist or ankle bend sent to the rigger | loops along the joint patched with correctives | |
| Clean rings rebuilt for volume loss | same elbow collapse | |
| Lids modeled without the eyeball | lid pops through on a blink | |
| Center drift; relax after UVs | mirror seam; textures swim | |
| Straighten UVs on a whole shell | "this mess" | orient, align rows, pin, optimize the interior (MLC) |
| Unfold refuses a mesh that audits manifold | Unfold3D aborts | it unfolds a triangulated copy: triangulate a duplicate, select-mode Cleanup |
| Layout Uniform after density; stacked unique bakes | density changed; mirrored AO | |
| Half model baked, two triangulations | center seam, zig-zag shading | whole mirrored model; |
mx_validate(profile="model")<part>_georetopo_reportdeform_testlid_checknormal_mapuv_reportpolyRetopoRU.callcmds.helpdgaTensionRU.tension_nodeskinPercentreferences/procedures.mdreferences/expert-notes.mdreferences/critique.mdreferences/gui-paths.mdreferences/sources.md