TailorKit / Documentation

TailorKit — artist reference

TailorKit fits working copies of artist-made garments and accessories and reports source and fitting problems. Static fitting does not require a rig or morphs. The legacy generator still targets the tested Manny/Quinn-derived characters; this is not a universal fit or animation guarantee.

Install and start

Use Blender 5.2 (tested on 5.2.2). In Preferences, install dist/tailorkit-0.3.0.zip from disk and enable TailorKit. In the 3D View, open the sidebar with N and select TailorKit. Start with a copy of a character scene. The installer includes code, offline help and automation tools; no third-party character or Snow assets are included. For the current sidebar and first-garment tutorial, start with the included user guide.

The Legacy generator style aims for soft realism: a readable silhouette and a few broad folds, with no cloth simulation setup. Use Soft Realism Defaults resets looseness, taper, fold strength, density and thickness; it keeps your colors and lengths. Click Build Modular Outfit afterward. Saved recipes keep their settings. Existing meshes are unchanged; inspect the controls before rebuilding an older scene because unset controls use the new defaults.

Basic controls stay visible; Advanced construction reveals collar/band measurements, mesh detail and experimental thickness. The output panel shows the actual fitted triangle counts. A smaller mesh still needs fit and visual checks.

The panel follows four steps.

1. Choose your character

Select the complete body mesh and click Use Selected Body. Use numeric meters, Z up and -Y forward; the tool does not convert units or reposition assets. In Artist garments mode the body needs no rig or morphs. The legacy generator requires its supported rig, skin weights and body morphs. A signed-key body (such as Silhouette) automatically selects artist fitting. Other unsupported generator bodies also switch to artist fitting with an explanation. No body key is renamed, clamped or rewritten. Expand Native body keys to use the body's actual ranges, including -1 to 1. Existing drivers remain in control; use the character creator for driven keys. Changing a body shape requires refitting and checking again; garments are not automatically rebound to its keys.

If the neck/head skin is a separate mesh, put that skin in a Blender collection and choose it under Additional skin. Do not put clothes or hair in that collection. Keep the full body present so checks can detect clipping.

2. Choose your outfit

Artist garments is the default. Use Blender File > Append to bring the artist's objects into this scene. Place them on the intended body before fitting, then assign First garment. For an overlapping pair, put the inner garment first and the outer garment in Outer garment (optional). Either slot can be used alone. Choose the type beside each object: Shirt, Trousers, Dress, Skirt, Jacket, Shoes, Hat or Other. Existing shirt/trouser scenes keep their assignments.

Types describe supplied artist meshes; they do not generate new assets or apply type-specific tailoring. A pair of shoes must be one mesh object (disconnected islands are fine). Hats require the head skin in Additional skin; hair contact is not checked. At most two garment objects are checked together in this version. Separate runs do not prove clearance against earlier accepted outfits. Multi-part outfits, stiff-shoe fitting and automatic hat attachment remain future work.

Inspect Artist Sources checks the selected objects before fitting, without editing them. Read TailorKit Artist Source Report in Blender's Text Editor. Existing source crossings belong to the evaluated current shape/pose; they do not necessarily exist in the original asset's neutral mesh.

Highlight Source Problems selects affected faces in Edit Mode on temporary inspection copies. It checks the selected artist originals in their current shape/pose, including modifiers. Originals are not edited. The copies can reveal faces inside the body, self-crossings, layer crossings and degenerate triangles. Use Finish Source Inspection to leave Edit Mode, remove the inspection copies and restore visibility. Editing an inspection copy does not repair the original. Finish inspection first, then edit the real artist mesh.

Fit Artist Outfit (Working Copies) preserves the originals and makes independent mesh copies, retaining source quads, UVs, shape keys, modifiers and materials. The visible fitted candidate is evaluated and triangulated. It may alter folds or silhouette, so check the shape warnings. Originals are hidden after success; unhide them in the Outliner to inspect or edit them. If fitting fails, the previous outfit remains. Changes to the original need another adoption; changes to a working source need Refit Current Shape. Keep original attribution and license properties. No redistribution permission is inferred from importing an asset.

Artist import does not create body-slider bindings or skin weights. The fitted triangle candidate remains static. Existing editable bindings can now be checked and retained separately using the adaptive workflow below. Legacy sweep/replay and rig/morph baking remain separate; no runtime animation is certified.

Preserve bindings and check an adaptive garment

Append the body, garments and their required controllers using Blender's normal library tools. Missing driver targets or properties are errors, not instructions to delete a driver. Fit Artist Outfit (Working Copies) verifies the copied binding structure and keeps external body/controller links. References between the selected garments, or to a garment's own keys, are remapped to the copies. Read TailorKit Binding Report for dependency IDs and any failures. Original body controls and garment data are retained.

  1. Choose Create Recorded Body Range. TailorKit discovers scalar floating-point body keys and single-property driver controllers. Unrelated undriven facial corrective and garment keys stay at their starting values. It records the starting shape, each bounded control's minimum/middle/maximum, and mixed minima/maxima. Automatic extrema are limited to declared ranges within -1 to 1 (including ordinary 0 to 1 controls); other controls stay at the recorded starting value.
  2. To add a specific combination, adjust the character's existing controls, enter a Combination name, and click Record Current Combination. Driven keys should be changed through their original controller/creator UI. The Recorded body range text lists the exact values. You may edit named cases there; keep the controller definitions and record every control per case.
  3. Choose Check Recorded Body Range. Progress names the current sample. Escape or Cancel stops between samples. Completion, cancellation and errors attempt restoration of every starting control and the frame, then verify the starting bindings/evaluated geometry. The report explicitly states whether restoration succeeded. A single heavy mesh check is synchronous and may delay cancellation.
  4. Inspect TailorKit Adaptive Range Report. Every completed combination has its own values, binding checks, fit measurements, blockers and pass/fail result. An error case is named too. This tests the editable source, without static clearance corrections hiding a failure. Sampling does not prove every value between samples, other poses or runtime compatibility.
  5. If all recorded samples pass and each garment has an existing live binding, choose Save Validated Adaptive Result. The hidden TailorKit Validated Adaptive Result collection contains separate editable meshes, keys, drivers and modifiers. Show its objects with the Outliner eye controls; enable collection rendering when desired. It stays dependent on the same body and scene controllers, which must accompany it when transferring a Blender scene. The collection records its required dependency IDs and receipt.

Changing bindings, geometry, controls or the plan requires another check before saving a newly validated adaptive result. The saved copy remains editable; later edits do not inherit the old validation. Create Static Fitted Snapshot remains available for corrected current-shape triangles, with no adaptive claim.

This release supports recorded scalar controls and ordinary scene bindings, not new morph transfer, arbitrary script dependencies, action/NLA playback, simulation or Geometry Nodes validation. Those unsupported range dependencies stop the check with an explanation; importing preserves them. Up to 64 discovered controls and 256 named cases are accepted. If a creator updates clothes through hidden Python callbacks instead of explicit bindings, this check cannot certify those callbacks. A garment that needs static corrections or has source crossings must be repaired before it can qualify as adaptive; a passing static fit does not override this.

Fit approval

Run Check Current Shape after fitting. A fit-approved pass requires zero detected body, self and layer crossings, no vertices more than 1 mm inside the body, no degenerate triangles, no substantial fitting distortion and no rejected correction. The report names each blocking category and saves evaluated geometry fingerprints, exact body key values and declared ranges. Changing geometry requires another check. Source defects do not get exemptions: unresolved source crossings also block the fitted result.

This pass covers only the evaluated shape and pose at that moment. The detector excludes shared-vertex triangle pairs and does not certify adjacent foldovers or all coplanar contacts. It is neither an art approval nor an animation/export pass. Artist fitting checks the complete proposed correction before retaining it. A proposal is discarded if self/body/layer contact counts increase against that garment's pre-fit surface (layer comparison uses the current fitted inner layer), if it introduces inside-body vertices, or if it exceeds 8 mm displacement, 2 mm boundary movement, 20% edge strain or 2 mm local relief change. The working source geometry is restored as the candidate; the original artist object is untouched. The report retains rejected proposal measurements and reasons. This safeguard prevents destructive corrections; it does not untangle an already crossed source. Two-layer checks still need to pass together after either garment changes.

Use Select Fit Issues on failures and compare the source before remodeling. Accept Fit can save a failed candidate for work, but cannot grant fit approval.

Compare, accept or reject

After fitting, use Source and Fitted under Check the fit. These show the working source before clearance and the fitted result at the same camera/view; the comparison does not move objects or change your lighting. The artist originals stay hidden to avoid doubled surfaces. Editing originals requires fitting new working copies; the comparison uses the current working copy, not those later edits.

Acceptance is your choice to keep static fit geometry, not a geometry-check pass. If checks fail, the status says Accepted copy saved WITH check failures. The TailorKit Accepted Fit Report records artist choice and check results separately; the saved collection also keeps its own receipt. No runtime or animation approval is implied. Return to Object Mode before ordinary fit/review actions; Finish Source Inspection can close the temporary inspection mode for you.

Legacy generator

Choose Legacy generator to expose the historical construction controls. Leave Snow v4.2 source empty for native garments. To use the Snow derivative, select the verified original Snow v4.2 file and leave Rebuild for body sliders enabled. Other versions are rejected deliberately.

Click Build Modular Outfit to apply style changes. The old generated outfit is retained as a hidden revision. If the build fails, the previous outfit remains. Repeated builds do not edit the original character file.

Use Save Named Style and Load Named Style for styles stored in this scene. Saving the same name replaces that saved style. Export JSON and Import JSON move style settings between scenes; they do not include body geometry or the local Snow file path. Loading a style requires rebuilding before it affects the clothes.

3. Check the fit

In the legacy generator workflow, move the body controls to preview fitting. Refit Current Shape forces a refresh. Check Current Shape checks only the shape and pose you are looking at.

For generated outfits, Check Body Slider Range samples endpoints, intermediate values, seeded mixtures and mixed extremes in the current pose. The panel displays progress. Click Cancel and Restore, or press Escape, to stop and restore the original shape. This panel check does not add the development harness's animation poses.

If a check fails, click Select Fit Issues. TailorKit selects detected crossing or substantially distorted faces in Edit Mode so you can inspect where the problem occurs. Press Tab to return to Object Mode. Counts and exact settings are in TailorKit Fit Report or TailorKit Slider Report: open Blender's Text Editor and choose that text from its document dropdown. Reports are JSON for reproducibility; use the panel and face selection for normal day-to-day work.

Fit reports now include fit_stages: source self-crossing and body-contact counts, self-crossings after body clearance and before local repair, final self-crossings, retained source pairs and pair identities absent before fitting. The panel summarizes source and final counts. A new triangle-pair identity can be an existing contact moving across faces, not a new visible hole. Shape-change measurements remain separate; fewer contacts do not establish preserved folds.

Changing a body or style requires checking again. A passing sampled check is not proof of every slider combination. Self-intersection checks detect nonadjacent triangle crossings; they do not certify every coplanar or adjacent foldover.

Shirt–trouser layering

Rebuilt Snow shirts now use a smooth body-derived morph displacement around the hem and waist. The authored neutral mesh stays unchanged. The new binding fades into the existing shirt morphs between 1.10 and 1.20 meters; upper-shirt source morphs are retained. These fixed landmarks belong to the current limited adapter. They do not establish support for different character proportions or rigs.

This change requires rebuilding an existing outfit. Loading an old scene alone does not change its source binding. Run the checks again after rebuilding. The current default-style samples have no detected layer crossings, but self-crossings and shape warnings still block fit approval. Some existing self-crossing cases have higher pair counts despite lower overall totals; this is not a complete fix.

What local repair can and cannot do

When a joint repair stalls, TailorKit tries disconnected patches separately. Extra attempts cannot raise the measured maximum displacement, border movement, edge strain or relief change relative to the best joint result. Their additional movement is limited to 8 mm (2 mm at borders), 20% edge strain and 2 mm relief change. These limits do not undo distortion caused by earlier body fitting.

The panel shows remaining self-crossing pairs and points to Select Fit Issues. A reduced pair count is progress, not approval. Recheck the same failed cases; fold quality and the loose silhouette still require visual review.

Each refit attempts a local repair of self-crossings and shirt/trouser overlap. It checks proposed moves against the body and accepts no new body-contact pairs or newly interior vertices. It keeps only an improvement in crossing counts. Already clear clothes are left alone by this extra repair pass.

The pass limits movement to 12 mm, with 2 mm limits at open garment borders and their immediate neighbors (collars, cuffs and hems). It caps edge-length changes at 35% relative to the fitted input. These are conservative development limits, not a guarantee that every garment can be repaired. Inseams and internal design features are not yet tagged as separate artist constraints.

Shape changed substantially means the complete fit needs visual review. Warnings are raised for more than 8 mm movement, 20% edge-length change, 2 mm border movement, or 2 mm change in local relief. These measurements compare the source garment at the current body/pose against the final result. They can detect changes made by the earlier body-fitting stage, not only the new repair pass. A warning makes the check fail; use Select Fit Issues to inspect the region.

Reports separate fit_shape_changes (the complete fit) from post_fit_repair (the extra local pass, including before/after crossing counts). An unresolved repair remains a failure. Do not add looseness repeatedly to chase a passing number: inspect the highlighted patch and revise its source shape instead.

Replay a failed case

After a new slider check, Failure report selects the stored report. Choose a Failed case, then Replay and Highlight. TailorKit restores its recorded body sliders and pose, refits the current clothes, and selects today's crossing faces in Edit Mode. Press Tab to return to Object Mode; Undo can restore the previous state. Replaying does not load old clothing or erase your garment edits.

Enable Restore recorded clothing (rebuild) to restore the style used by the checked outfit as well as sliders and pose. TailorKit uses the stored build recipe, not any unfinished edits to the controls. It keeps the previous outfit as a hidden revision. Leave this off to test your currently edited clothes.

Recorded-clothing replay requires construction metadata from a build/check made with 0.2.4 or later. For Snow, select the matching original source file first; its hash must match. Missing assets and unsupported/mismatched recipes are rejected before changing the scene. If rebuilding fails, the previous outfit, style and body state are restored. Rebuilding uses the current implementation: exact saved inputs do not promise identical old geometry after code changes.

Use Load Fit Report for a development character's raw audit.json. The compact multi-character receipt is not an input report. A different body or rig is rejected. Reports made before 0.2.2 do not contain restorable pose inputs: rerun their slider check instead of expecting an approximate replay. Implementation changes are reported; current face indices are always recalculated, never copied from old data.

4. Save or export

Save the working .blend to keep your editable sources, settings, reports and named styles. Create Static Fitted Snapshot makes a separate hidden collection of the current fitted shape. It has no rig or body morphs.

Enable I need body sliders or character movement to show the optional rig/morph workflow. This is ordinary character deformation, not cloth simulation.

Bake Rig and Morph Candidate builds an experimental deformable candidate and checks its own baked shape combinations. Progress appears in the panel; Cancel and Restore or Escape removes a partial bake and restores the source outfit. Read TailorKit Export Report before use. A bake can complete while its fit checks fail; completion is not approval.

Export Candidate FBX writes the candidate plus .json and .credits.txt sidecars. Keep all three together. After editing your outfit, bake again before exporting. Exported candidates still require Unreal import, bind-pose, morph, material and animation checks. Version 0.2.22 is not runtime-approved.

Keep your scene manageable

Remove Archived Outfit Revisions removes only archived generated objects in TailorKit-owned collections. It preserves the current outfit and unrelated objects. Static snapshots and runtime candidates are separate collections; manage them explicitly in Blender's Outliner.

When something goes wrong

Message or symptom What to do
Unsupported body/rig/groups Use a supported character; keep the original intact and record the missing requirement.
Style changes do nothing Click Build Modular Outfit; style sliders are not live rebuild controls.
Separate neck clips Add its skin collection under Additional skin, then refit and check.
Source topology changed Rebuild the outfit so fitted geometry matches the source again.
Fit issues found Inspect selected faces and the exact failed shapes; do not use a body mask to hide the failure.
Candidate has failures Keep it for diagnosis; do not treat it as an approved game asset.

Known fit failures and the next development steps are in the checkpoint handoff (see the included source reference).

Independent-character support

The original Rain body and RIG-rain were checked independently. The current Manny/Quinn adapter rejects that rig. No garment fit, pose or export acceptance is claimed for Rain. A general rig/body adapter and a positive independent character trial remain required before broader compatibility claims.

Conform artist-made clothes

Shape the clothes freely over the neutral template: visible ease, fabric spanning hollows, readable collars and hems, and shoes built around a shoe last. Conform transfers deformation; it does not create or certify that silhouette. Keep originals and review front, back and three-quarter views at gameplay distance. Folks is the LifeShare character name.

  1. Choose Conform modelled garments, select the full body and use the body-selection button.
  2. Select only the garment meshes to bind, choose their slot, and press Conform Selected Garments. The button creates independent editable copies, hides originals in the viewport and renders and retains their data. Existing garment keys, drivers, materials, UV maps, masks and skin weights take precedence. Missing body keys receive live drivers to the original body keys; those body controls and their external controllers must remain in the scene.
  3. Choose the Conformed outfit collection containing the complete outfit to check. Add previously conformed pieces (for example shoes and trousers) to that collection using Blender's Outliner. Check one compatible outfit at a time, not overlapping alternatives.
  4. Create Recorded Body Range. Inspect its Text Editor record; add named current combinations as needed. Check Recorded Body Range shows progress and supports Escape or Cancel. It records each sample's actual controls, body/self/layer failures and affected evaluated triangle indices, then restores the starting controls and frame. The report is available in the panel. Every pair of garments is checked, not only neighboring slots.
  5. Save Validated Adaptive Result saves a separate editable result only after the complete recorded range passes and remains unchanged. A binding/poke report alone never approves it.

The automatic plan samples the start, minimum/middle/maximum of controls bounded within [-1, 1], and mixed minima/maxima. Other controls stay at recorded values; add named cases for them. Opposed controls can be active together in these stress samples: edit the explicit plan to your supported character contract, and retain its exact tested scope in the handoff. No continuous-slider, every-outfit, pose, visual or Unreal acceptance is implied. Adjacent and coplanar foldovers are not certified by the crossing detector. Existing coverage metadata never suppresses failures in this range check; the complete underlying skin is inspected. The range check also measures the minimum evaluated surface gap for explicitly assigned Top/Bottom pairs. Minimum layer gap (cm) defaults to 0.6; smaller gaps block the pass even without intersections. Missing slot pairs are reported as not checked. This measures triangle-surface separation, not a radial waistband margin or an inside/outside ordering. Other layer types still receive intersection checks only. Changing the target invalidates a previous range receipt; it never moves the clothes.

Paint tk_loose before conforming: 0 follows the bound surface deformation, 1 uses smoothed movement for loose cloth. The mask and other painted groups survive. If a mask exists, unassigned vertices have zero influence; slot defaults apply only when the entire mask is absent. Existing same-name keys are retained rather than overwritten or silently rebound; inspect the binding report and range result to establish whether those authored bindings fit the desired controls.

Use the same local coordinate frame for body and garment, positive uniform scale, and the correct scene unit scale (0.01 for numeric centimetres). Fit measurements are converted to metres internally. Conform currently requires Basis-relative keys; restricted body keys, mismatched rigs/transforms and missing dependencies produce an actionable error before copy creation. Unsupported animation/node dependencies block range validation explicitly.

Conform morph safeguards

Before conforming, keep Preserve cuffs and bands and Improve extreme-shape clearance enabled. Paint tk_trim (all vertices of each trim face above 0.5), or use materials containing Trim in their names. Connected folded returns share their panel anchor's motion, preserving the anchor-to-return thickness vector. An explicit tk_trim mask overrides material selection. Disconnected trim islands have no safe attachment; the status and Binding diagnostics report them instead of guessing.

These options affect newly generated keys only. Existing artist keys are retained, so re-conforming an already bound result does not regenerate its keys. To compare settings, conform another copy of the original source. Neutral geometry is not repaired or inflated.

Clearance corrections target 0.1 cm from the body, with at most 0.6 cm additional movement and a 35% edge-length-change guard relative to each proposed trim deformation. They keep trim cross-sections together and spread into nearby panel rings. Trim coherence itself can differ by more than 0.6 cm from the old, independently bound fold; its maximum change is separately reported. These numeric guards do not establish visual acceptance. Review collars, cuffs, hems and the loose silhouette in matching views before accepting the art.

Before retaining changes, Conform compares body crossings, nonadjacent self crossings and inside vertices against its original generated deltas: each available signed endpoint, half-endpoint and midpoint, plus supported named mixtures. A worse probe restores the affected proposed key correction. Binding diagnostics list exact samples, withheld keys, movement measurements and reasons local proposals stopped. These are raw relative-key probes; they do not include arbitrary mixtures, modifiers, poses or layer separation. Always run Check Recorded Body Range on the complete evaluated outfit afterwards. A zero sneaker crossing count alone does not approve the outfit.

Python integration for wardrobe authors

conform.conform(body, garment, slot, check_keys=True, hidden=covers) remains compatible with Draft/modelled builders. Unlike the Blender button, this low-level API intentionally modifies the supplied working garment: load or copy the artist source first. It adds missing body keys, BodyUV and skin weights, retaining existing data. Existing BodyUV is retained; new BodyUV uses the matched triangle's UV corners, including seams. It returns coverage, preserved-key and positive-endpoint poke diagnostics with fit_approved: false. hidden affects only that legacy poke diagnostic, never the complete range audit.

For headless full-outfit validation, register TailorKit, set scene.weftsmith.body, set outfit_workflow='CONFORM', and assign a collection of working garments to conform_collection. Call adaptive.create_plan(scene), optionally replace its explicit named cases, then construct adaptive.RangeRun(scene). Call step() for each case and always call finish() in cleanup (pass error=str(exc) on errors). Save the returned receipt; it contains exact samples and restoration status. The same runner powers the cancellable UI.

The starter wardrobe's dressed-Folk 25k triangle budget includes clothes. Silhouette's existing approximately 25k body/head/hair candidate leaves no clothing allowance: budget and LOD integration still need a separate measured check. This batch does not bake textures, remodel garments, export assets, or establish game-runtime acceptance.

Review basic poses

In Conform modelled garments, choose the complete Conformed outfit and press Review Three Poses. The tool checks arms down, a walking position and sitting, then leaves arms down visible. Progress appears in the panel; Cancel and Restore or Escape stops between pose checks and restores the view. The original body, garments, rig pose, frame, signed controls and controller dependencies are never edited.

Use the three pose buttons to inspect each result from any angle. Orange faces and an orange wire overlay mark detected fit issues, including body, nonadjacent self and clothing-layer crossings. Counts remain separate; inside-body vertices also remain failures. The panel shows measured Top/Bottom gaps in centimetres against the requested minimum. Missing Top/Bottom roles are not a measured gap pass. Reports include exact pose matrices, rig rest transforms, current body keys, mapping, frame and per-garment metrics. The complete supplied skin, including Additional skin, is checked on copies.

Press Finish Review — Restore Original View when done. Temporary meshes and the copied rig are removed, original visibility and selection return, and the report remains. These previews are disposable inspection copies, not editable garment results. Finish also works after saving and reopening a scene. Disabling the add-on cleans up an open review. Existing body-range receipts and fit acceptance are not upgraded by pose review.

If the mapping is incomplete, expand Pose bone mapping. Choose left/right upper arms, forearms, wrist/hand joints, thighs, shins and ankle/foot joints. Defaults match the common upperarm_l, lowerarm_l, hand_l, thigh_l, calf_l, foot_l convention and right-side counterparts. Confirm Character faces; Z is up. Wrist and ankle positions are endpoints for posing the forearm/shin, not extra hand or foot gestures. Joint positions, rather than bone-local Y axes or display tails, determine limb direction. This matters for FBX rigs.

This first version requires one directly weighted deform rig with positive uniform object scale and correctly mapped descendant joints. Missing weights, separate rigs, constraints, IK/control rigs, action/NLA animation, unsupported simulations, or modifier targets outside the reviewed body/outfit produce actionable errors. Use a separate compatible deform-rig copy rather than removing constraints or animation from an artist's original scene. Pose copies tolerate up to 0.000001 per transform-matrix element from FBX parent evaluation; geometry and binding metadata are still checked exactly. Independent external scalar controllers are captured; internal pose-driven corrective chains stay live.

The body shape is captured when review starts. Finish and restart after changing sliders. Each preset starts from the captured pose, preserving root/spine transforms, bone scale and hand gestures, then aims the mapped limbs. Walking uses a modest opposite arm/leg swing; sitting aims thighs forward and shins down without adding a chair or translating the root. These are diagnostic positions, not animation clips, locomotion, foot-contact validation, a pose sweep across all body shapes, or Unreal acceptance. No automatic fitting repair runs. Adjacent/coplanar foldovers remain outside the self-crossing detector's certified scope. Body outlines and translucent garment comparison are available through Compare Body and Clothes. Compatible animation-clip sampling remains follow-up work.

The headless wardrobe runner supports --pose-review to check the three poses after the recorded body range restores. It saves matching front, side, back and three-quarter views with measured issue faces coloured orange. body_range_passed and pose_samples_passed remain separate, and the combined inspection does not grant fit approval.

Test a saved wardrobe

In the Conform panel, Binding diagnostics opens the saved Text data reference. Its visible_skin_pokes and covered_skin_pokes are separate per-region ray-test vertex counts. all_body_crossings counts intersecting garment/body triangle pairs, including covered regions. pokes remains a compatibility alias for nonempty visible-skin warnings. A covered area can have zero visible warnings and many body crossings. Zero crossings can also miss entirely buried geometry: use the full evaluated range audit, including its inside-body checks, before approval. These are different measurements, not interchangeable totals.

Binding diagnostics inspect Basis and each raw shape-key target at +1, without modifiers; diagnostic_samples records those exact samples. They do not cover arbitrary negative values, mixtures or poses. Check Recorded Body Range evaluates modifiers and live bindings at the exact recorded controls, includes all skin irrespective of coverage, and checks every garment pair. It remains the approval gate. Art and game validation are separate.

For a repeatable headless check of saved artist files, run Blender with automatic scripts disabled and --python-exit-code 1 --python tools/review_conform.py --, followed by:

--template "path/to/Body_BASE_Manny.fbx"
--garment "path/to/Top_Tee.blend" Top_Tee Top
--garment "path/to/Bottom_Jeans.blend" Bottom_Jeans Bottom
--garment "path/to/Shoes_Sneakers.blend" Shoes_Sneakers Shoes
--unit-scale 0.01 --output "output/wardrobe-manny"

Repeat with the Quinn template and its garments. Source files are appended into a fresh scene, copied with binding verification, and never saved over. The complete generated body range runs by default. --cases cases.json selects explicit cases, for example:

[{"name":"Neutral","keys":{}},
 {"name":"Heavy plus muscle","keys":{"Heavy":1.0,"Muscle":1.0}}]

Unlisted controls retain their recorded starting values. The case file must name directly controllable body keys; driven keys require the normal recorded-controller workflow. review.json records file/code fingerprints, before/after neutral contacts, preservation, per-case failures and compact metrics. range.json contains the full control and binding receipt. A completed check with fit_approved: false is an asset failure, not a passing fit. Changed input files or execution errors return a nonzero process exit code. Test a frozen checkpoint when another artist is saving concurrently, and retain the original-file hashes.

--draft-fixture exercises the existing procedural Draft code in place of artist garments; it is explicitly labeled and cannot be combined with --garment. It does not test the new wardrobe and is not a modelling fallback. --addon-source can point at an extracted older package for comparisons using identical input files and named cases.

Add --render-case "Neutral" --render-case "Heavy plus muscle" to save fixed front, side, back and three-quarter clay views for those exact named cases. Renders use evaluated geometry and the full supplied body with no coverage hiding. Camera settings and image/mesh hashes appear in the receipt; matching before/after runs use the same presentation.

Compare body and clothes

Choose your body and conformed outfit (or build fitted working garments), then click Compare Body and Clothes. You can also open it while looking at a completed static pose review. It captures the current evaluated body, additional skin and garments as separate display surfaces. Original meshes, keys, drivers, weights, UVs and materials stay unchanged. No body deformation fix or garment repair is performed.

The panel lists minimum / median / maximum sampled gap in cm, measured from every evaluated garment vertex to the nearest full-body triangle, including Additional skin. These distances are unsigned: points inside the body can have a positive distance. Body crossing pairs is a separate triangle check and is never hidden by a positive gap. Samples do not establish the minimum between all triangle interiors, penetration depth, layer clearance, or fit approval. Existing layer-gap checks remain separate.

This is a frozen comparison, not a live slider preview. Use Close Comparison — Restore View, change the body controls or pose, and reopen to measure the new state. Close restores source visibility, selection and viewport shading, and retains the text report. Saving and reopening a comparison or disabling the add-on also supports cleanup. In pose review, closing returns to that same reviewed pose; Finish Review then restores the source view.

The report records sampled measurements, evaluated source fingerprints, frame, unit scale, pose label and implementation fingerprint. It is a comparison aid, not a fit-approved pass.

Reconnect authored corrections

In Conform modelled garments, expand Authored correction connections. Choose a garment in the current conformed outfit, its existing correction key, and the body key that should drive it. The body key can itself be driven by the character's controls or pose. TailorKit connects to its evaluated value rather than duplicating its upstream driver.

Choose Signed / direct, Positive side, or Negative side. Positive uses max(value, 0); negative uses max(-value, 0). For a mixed correction, enable Multiply by a second body key and choose its response. For example, Negative Mass multiplied by Positive Shoulder activates an authored thin-body shoulder correction only when both responses are active. This wires a shape you have already authored; it does not sculpt one.

Reconnect on a New Outfit Copy copies the current outfit, replaces only the chosen key's driver on the copy, and selects that collection as the active Conform outfit. The old outfit is hidden and retained; Undo restores the operation. Existing shape coordinates, key ranges, relative keys, UVs, weights, materials and other bindings are copied unchanged. You can reconnect another correction on the resulting outfit. A mismatched signed range is rejected rather than silently widening or clamping the artist's key. The specifically chosen broken driver can be repaired; unrelated broken drivers still block the operation.

Create a new Recorded Body Range and check its named samples, then review poses. Previous range/approval state is cleared because the wiring changed. The connection report is not fit approval. Reconnection currently uses body shape keys as its interface; for a custom controller, choose the body key driven by that controller.

Live correctives in pose review

Pose preview preserves drivers inside the copied rig/body/garment dependency set. This includes bone-transform-driven body correctives and garment keys following those body correctives. Reports record evaluated body and garment keys per pose. Independent external scalar sliders are captured on a private controller, so changing an original slider cannot change the captured preview. External driven controllers and external rig-dependent variables are rejected explicitly; bring their corrective logic into the supported reviewed rig/body dependency set first. Constraints/IK, action/NLA and animation-clip support remain outside the static preview contract.

Recorded Body Range treats pose-driven keys as evaluated outputs, not editable sliders. The recorded pose must still match when running the range; recreate it after changing pose. Range checks at one pose and three static preview poses do not validate every mixed shape, pose or animation. Body deformation and garment fit problems remain separate.

Review an authored action frame

For a body with authored review actions, open a separate working copy, choose its action and frame, and set any required body controls. For example, the BodySurfaceCleanup Manny Heavy arms-down action requires Heavy = 1; its ordinary arms-down action is for the neutral body. Follow the candidate's own action/control instructions rather than applying generic poses to its pose-specific correction values.

With a bound Conform outfit selected, click Review Current Authored Pose. TailorKit copies the evaluated rig, body and garments, detaches actions on those copies only, preserves the captured pose and control values, and keeps supported internal corrective drivers live. Body/self/layer checks and Compare Body and Clothes then inspect that captured state. The source action, frame, pose and driver data remain unchanged. Close the review before changing the authored action or frame and capturing the next sample.

Generic pose buttons are deliberately unavailable inside a captured authored review: held pose-specific correction values may be wrong for another pose. Review Three Poses still requires no active action. Current-frame capture supports direct-deform rigs and active actions; NLA tracks, constraints/IK, unsupported simulations and external driven corrective chains remain unsupported and report an error. This does not sample an entire animation clip, bake animation, repair the body, or grant fit approval.

Test saved body candidates without changing their files

tools/review_body_candidate.py opens an explicit candidate in a separate Blender process, appends named garments, binds working copies, and captures each requested shape/action frame. Pass --candidate, repeated --garment FILE OBJECT SLOT, --cases JSON, and --output. Each JSON case supplies name, optional body keys, optional action and frame, and optional render: true for matched front/side/back/three-quarter diagnostics. It records source hashes, binding results, evaluated corrective values, full-body warnings, per-garment contacts and exact tested cases, and saves candidate-review.blend only in the output directory. Tool/data-preservation success remains separate from sampled fit success.

--match-template-frame is an explicit adapter for garments known to be authored in the body's local numeric coordinate frame. It assigns the body object's transform to garment working copies, preserving their local coordinates. It is not automatic alignment for an arbitrary body or outfit. The SurfaceCleanup candidates have a 0.01 object scale in a metre scene, while the supplied wardrobe uses local centimetre coordinates and identity transforms; this adapter is used only on those isolated test copies. Never apply it merely to silence a transform warning for unrelated assets.

Candidate checks also require every tool-generated clothing key and its live driver to exist and point to the matching body key, on both the bound outfit and captured preview. A matching zero value alone is insufficient. The report records both values per key; missing, muted, invalid or miswired generated bindings stop validation with the garment and key name. Existing authored keys are excluded from this direct-driver contract: their preserved wiring can intentionally use a different response and needs its own review.

For BodyFinalCleanup, use the Heavy-specific arms-down action on either character when testing full Heavy. Set Heavy manually as directed in that candidate's handoff. Passing body-only collision checks does not establish clothing fit.

Compare a candidate with the previous fit

Give the candidate runner --baseline path/to/previous/review.json alongside its usual arguments. Use the same frozen body/garment files and exactly the same named slider/pose cases. Changed inputs or missing cases stop comparison rather than pretending to be a regression check. Render requests may differ.

The regression_check report lists each changed case and garment. More body/self/layer crossings, inside vertices, penetration depth, degenerate triangles or distortion flags, a newly failed fit, or a smaller measured layer gap reject the candidate. The runner saves the separate working copy and evidence, then exits with an error naming the report. Nothing replaces the previous fit or original assets. A passing comparison means only these sampled measures did not worsen; an outfit can remain unfit in both versions.

Each case's crossing_diagnosis compares the source's saved evaluated state with the bound, posed garment and groups self-crossing pairs by material. Zero source crossings followed by posed crossings means the issue appeared during binding/deformation; it does not prove the neutral model is defective or identify a single cause. Material pairs help an artist find panel/trim conflicts. Adjacent and coplanar folds are outside this nonadjacent-pair check.

Compare two authored garment revisions

Use artist comparison when you edit clothes. Keep tool regression for changes to TailorKit itself; its identical-file rule is unchanged.

  1. Run tools/review_body_candidate.py on revision A with the current tool. Keep its review.json and use a separate output folder for each revision.
  2. Run the same body, cases and garment slots with revision B's garment files. Add --artist-baseline path/to/revision-a/review.json in place of --baseline.
  3. Read artist-comparison.md and the artist_comparison section of revision B's report. Check the matching poses/renders, silhouette and fold character before accepting edits. Pass render: true in matching named cases to request the existing matching views.

The body file hash, Blender version, tool/runner fingerprints and fitting settings must match. Case names, slider values, actions and frames must match; rendering requests may differ. Garment paths, contents and topology may change. Keep each logical garment's object name and slot the same across revisions; generated Blender suffixes on bound copies are remapped automatically, including clothing-layer measurements. Renamed source objects or ambiguous garment sets need explicit correction before comparison.

Use fresh reports generated by this version for both revisions. Older reports lack explicit body/garment roles; the tool asks for regeneration instead of guessing which file is the body. The two baseline flags are mutually exclusive.

Artist comparison is advisory: it records improvements and worsening measurements per case, including a lost fit pass, without automatically accepting or replacing either revision. A worsening artist comparison still writes its report and summary. no_sampled_regressions is not fit approval; visual_review_required stays true. Changed topology can change raw triangle-pair counts independently of visible quality, so the report flags it. Face indices belong to their own revision and must not be used as a cross-revision face mapping. Original body and garment files remain untouched. This mode does not compare arbitrary bodies, different tools or unrecorded poses, and does not approve Unreal exports.