Retopology and UVs in Blender 5.2 - auto retopo (Quadriflow, Decimate, planar), deformation edge flow, seams, unwrap (Angle Based, Minimum Stretch, Smart), pixel-margin packing, texel density measure/set, lightmap UV2, UDIMs, mirrored UVs. Use to turn sculpts/scans/AI meshes into game meshes or prep UVs for texturing/baking.
Use blender-retopology-uv to measure texel density on the UV-mapped asset I identify at 2048-pixel texture resolution. Report the density, whether spread exceeds 1.3, and whether the UVs fit within 0–1. Recommend a next step without changing the mesh or UVs.
Required inputs
A .blend file containing a UV-mapped asset and the target mesh object name.
Blender 5.2+ available to the agent.
Suggested template by Skill Leaderboard, grounded in the linked source. Task evidence ↗
SKILL.md
name: blender-retopology-uvdescription: Retopology and UVs in Blender 5.2 - auto retopo (Quadriflow, Decimate, planar), deformation edge flow, seams, unwrap (Angle Based, Minimum Stretch, Smart), pixel-margin packing, texel density measure/set, lightmap UV2, UDIMs, mirrored UVs. Use to turn sculpts/scans/AI meshes into game meshes or prep UVs for texturing/baking.license: MITmetadata: author: blender-agent-skills version: "1.2.0"
Retopology & UVs
The execution model is in blender-core.
Retopology
Automatic (scripts/auto_retopo.py -- --objects Sculpt --tris 8000 --method ...) makes <name>_low and leaves the source hidden:
Method
Use for
Notes
quadriflow
organic props, static characters, scans
clean quads. Voxel-remeshes first so the input is manifold; UVs are lost (re-unwrap)
Manual (hero characters, anything that deforms). Set up a new mesh object with a Shrinkwrap modifier (PROJECT, target = sculpt), snapping to FACE_PROJECT + use_snap_project, and the source in a different viewport color/x-ray. Auto retopo isn't good enough for deforming hero meshes, because the edge flow below matters.
Edge flow rules for deforming meshes
Concentric loops around the eyes and mouth (≥3 rings). The nasolabial loop flows from the nose wing to the mouth corner.
3 loops at every bending joint (elbow, knee, finger knuckles), plus a loop on each side to keep volume. The shoulder needs extra loops for raising the arm.
Keep poles (3/5-edge verts) out of bending areas. Put them on flat, stiff regions (chest, back of skull).
Distribute quads evenly, with density where deformation and silhouette need it. Use triangles only in hidden, non-deforming spots.
Character tri budgets in 2026: mobile 5–15k, Roblox body ≤ 10.7k total, console/PC third-person 30–80k, hero/cinematic 100k+. Check the target in blender-game-optimization.
UVs
Seams: hide them (under arms, inner legs, back of the head, under parts), follow hard edges, cut cylinders on the back side. Rule for game meshes: every hard edge (>~60°, sharp_edge) must be a UV seam, or the normal map shows artifacts. scripts/uv_pack.py --seams-from-sharp 60 does this.
Unwrap: --method seams (Angle Based with marked seams), --method min_stretch (SLIM, 4.3+, least distortion on organics), --method smart (hard-surface/auto, --angle 66).
Straighten rectangular islands (Follow Active Quads, live only) so trims and pixel grids line up.
Average island scale + pack with margin in pixels: 2k → 8 px, 4k → 16 px, mobile 1k → 4 px. --shape CONCAVE gives the tightest pack (slow headless). The default AABB is instant.
Texel density (scripts/texel_density.py --res 2048): keep spread ≤ 1.3 within an asset. Set it with --set <px/m>; if fits_0_1 is false, change res or density.
QA: blender-asset-qa reports zero-area UV faces and overlap %.
Texel density targets (px/m; studio baselines, not laws)
Everything in the same scene should share one density. The exception is hero assets, kept within 2x.
Special cases
Mirrored/stacked UVs save space but break unique bakes. Move the duplicate islands exactly +1 U (outside 0–1) during baking, then move them back. Their normal maps must be mirror-safe (tangent space handles it in engines with MikkTSpace).
Lightmap UV2 (--lightmap, gives UVMap_Lightmap): no overlaps, every island inside 0–1, generous margin. Unreal/Unity can generate their own; ship one only if the engine pipeline wants it. Keep UV0 active for texturing.
UDIMs (film/hero): islands in tiles 1001+ (U offset 1 per tile). Texture node image source="TILED". Game engines mostly don't support UDIMs.
Trim sheets: unwrap the strips, then scale/move the islands onto the trim rows (V positions from the trim layout). Islands may exceed 0–1 in U for tiling.
Roblox: exactly one UV set, all inside 0–1. Overlaps are allowed.
Gotchas
5.0+: UV selection is shared across UV maps (.uv_select_* attributes). Old BMLoopUV.select code fails.
uv.* operators run in Edit Mode and act on selected faces. Select everything first (scripts handle this).
Headless uv.pack_islands with CONCAVE/CONVEX + rotation can take 2–25 s even on tiny meshes. Use AABB while iterating.
Unwrap warning "failed to solve island": the island has no seams (closed shape). Add seams.
Apply scale before measuring texel density, or the density reads wrong (the scripts use world space and already account for scale).
blender-retopology-uv by EL4CTEO · The Skill Leaderboard