Texture-Driven Mesh Fitting
This skill fixes the common failure: a texture is mapped correctly, but the mesh silhouette underneath is wrong. The mesh adapts to the source contour; the texture is not stretched to hide a wrong mesh.
Preconditions
- Structural parts are segmented (
source-part-segmentation). - Each part has a contour/mask and, if textured, an atlas region (
atlas-uv-fitting). - The object is source-locked in front X/Z before depth is added.
- Canonical view policy is resolved (
multiview-constraint-solver) if views conflict.
Workflow
- Extract source contour from the texture/wireframe region.
- Extract current mesh boundary in the same projected coordinate space.
- Build ordered contour correspondence by arc length, named landmarks, or seam/control points.
- Move boundary vertices to source contour positions.
- Move interior vertices by smooth interpolation, piecewise-affine warp, or thin-plate-spline style deformation.
- Preserve UV parameterization by remapping boundary-fitted local coordinates into the atlas rectangle.
- Re-render overlay; do not proceed to look-dev until texture-region silhouette passes.
Acceptance gates
- Per-part source/product bbox center and size within tolerance.
- Boundary maximum sample error below tolerance after normalization.
- Texture atlas region does not visibly bleed outside the fitted mesh in front view.
- Named landmarks (
leaf_tip,base_left,base_right,face_corner, etc.) passlandmark-fit-repair.
Hard rules
- If a texture crop has a different silhouette than the mesh, reshape the mesh first.
- Do not use global UV stretching to hide geometry mismatch.
- Boundary fitting must happen before side-depth/crown deformation.
- Do not tune material/light to compensate for geometry/UV misfit.
Scripts
scripts/contour_correspondence_report.pyreports bbox, centroid, and sampled contour deltas between a source mask and a render/object mask.
Sources distilled
- Piecewise-affine/landmark warping gives a practical mesh deformation model.
- Thin-plate-spline style deformation is appropriate for smooth mascot/logo surfaces when landmarks are sparse.
- Blender mesh vertices/UV layers can be edited directly; BMesh is useful for cleanup after deformation.