Expert retopology is a plan executed with the fewest loops that capture the forms and let the mesh deform: loops close around eyes, mouth and joints, poles sit where nothing moves, and the subdivided surface, not the cage, matches the sculpt. An agent without a mouse can build every piece of this from data, but it reaches expert quality only on the parts it plans explicitly. Automatic remeshing is a finish for static assets and a start for everything else. If a sibling skill named here is missing from your available skills, ask the user to install it (
npx skills add scenario-labs/skills --skill <name>
); unattended, proceed from tool schemas and flag the gap.
REQUIRED BACKGROUND: scenario-blender-expert (execution channel, review loop, 5.2 API changes). Toolkit:
(
import sys; sys.path.append("<skills>/scenario-blender-retopology/scripts"); import bx_retopo as R
), all coordinates in the sculpt's local space.
-
Inspect (procedures P1): holes, manifoldness, scale, rotation, symmetry. GATE: all four written down.
-
Map: read the sculptor's face sets first (
,
, P1b: lip line, eye masks, ears, hooves); landmarks with coordinates, loop counts per feature from the Numbers table, crease list (check expression shape keys), per-part density. GATE: map exists before any geometry.
-
Choose a method per part:
| Part | Method | Evidence |
|---|
| Eyes, mouth, brows (deforming) | carve_rings(corners=, count=(lo, hi))
: upper = lower by construction, geodesic rings, the border's count kept when inside the range; pair odd boundaries first () | v2: eyes 24 (12/12), mouth 30 (15/15) on every clean ring; forcing Kaspar's 18/24 cost 40 more poles |
| Nasolabial, face frame, neck (map lines) | along of face sets (P7): one clean loop, poles pushed onto the base | v2: nasolabial +18 poles; face frame opt-in, +64 poles on the sheep |
| Limbs, ears, tail, fingers, horns | (geodesic contours, root and joints found) + (P3b, P8); straight parts: from sections | v2: all 7 parts incl. the 1 m curled tail, 3 rings per joint |
| Skull, torso, smooth masses | QuadriFlow start acceptable, else grid patches | little deformation |
| Static prop, scan, bake-only | QuadriFlow whole object () | Lampel, Grant Abbitt |
| Realistic human head | shrinkwrap a clean generic base mesh, then fit (Kaspar BCON22 [00:20:16]) | not scripted here |
-
Build islands separately and roughly (Kaspar: "don't focus on tweaking all the points"). Stack via
(Mirror clip > Shrinkwrap Target Normal Project > Subsurf hidden in edit mode). GATE: topology gate below passes per island.
-
Relax and freeze hand-built layouts:
,
. Not after QuadriFlow (worsened coverage 0.44 % to 0.55 %).
-
Connect by counts:
, then
/
on equal counts; reduce the larger side first (Kaspar: wrist 10 vs hand 16 was "six too many"). GATE: no triangles created.
-
Volume: film
(gentle defaults); game
then
and a Triangulate modifier on export.
-
Review and hand off: gates, two render sheets, handoff hygiene (P13). Report what the agent did not plan.
Numbers flatter the agent: an aggressive fit scored 0.043 % and looked lumpier than Kaspar's cage. What stays human-level only: articulation counts with handle loops, crease loops placed from expression shapes, pole routing and loop budgets out of the face. Say so in the report.
Code (thresholds [added], calibrated on Kaspar's sheep: 0.24 % mean, 47 % inside, coverage p95 0.82 %):
python
retopo_gate = R.topology_report(retopo)
fit_gate = R.fidelity(retopo, sculpt, levels=2)
gate = {"six_poles_to_justify": retopo_gate["valence_6plus"], "no_rim_poles": retopo_gate["rim_poles"] == 0,
"quads": retopo_gate["non_quads_visible"] == 0 or retopo_gate["quads_pct"] >= 99.0,
"subd_fit": fit_gate["mean_pct"] <= 0.3 and 40 <= fit_gate["inside_pct"] <= 60,
"coverage": fit_gate["cov_p95_pct"] <= 1.0, "loops": R.loop_stats(retopo)}
print(gate)
Edge-length CV is never pass/fail (studio meshes read 0.33 to 0.8); 6-poles are reported and justified, not banned (studio 0 to 4). Also:
,
on mirrored faces,
R.loops_around(retopo, eye, normal, max_radius)
returns at least 3 closed rings per eye and mouth, ring counts equal before every merge, triangles only in hidden or rigid areas, budget met (
). Visual (
, same views as the sculpt): cage in wire (rings close, no wandering loops, poles in still areas) and subdivided matcap (lumps, pinching at poles, creases held), then the cage alone: it must read without subdivision (Kaspar Finale [01:58:41]). Score with
.