# Multiview Constraint Solver

> Determine whether front/side/back/top reference templates can be satisfied by one rigid 3D Blender model, choose a canonical source policy, and emit constraints before rebuilding. Use when multiview bboxes, silhouettes, part counts, or depth ratios contradict each other.

- Skill: `roble3/multiview-constraint-solver` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add roble3/multiview-constraint-solver`
- Raw SKILL.md: https://api.skillmd.com/api/skills/roble3/multiview-constraint-solver/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: roble3 (https://skillmd.com/u/roble3)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/roble3/multiview-constraint-solver

---


# Multiview Constraint Solver

Use this before another rebuild when references disagree. A renderer cannot make one rigid mesh satisfy mutually incompatible orthographic dimensions unless you allow view-specific cheats.

## Workflow

1. Normalize every reference view into a common axis contract:
   - front: width X, height Z;
   - side: depth Y, height Z;
   - top: width X, depth Y;
   - back: width X, height Z.
2. Measure visible body bboxes, not labels/background/aura unless they are part of the model contract.
3. Compare shared axes:
   - front width vs top width;
   - front/back height vs side height;
   - side depth vs top depth.
4. If ratios differ beyond tolerance, write a conflict report and select a policy:
   - `front_side_canonical`: front brand read and side depth/height are authoritative;
   - `front_top_canonical`: front brand read and top footprint are authoritative;
   - `corrected_templates_required`: no rigid rebuild should claim final fit;
   - `view_specific_cheats`: separate camera/view variants allowed, not one rigid asset.
5. Feed the chosen policy into `fit-repair-optimizer` before any geometry, UV, or lighting work.

## Hard gates

- Do not restart modeling until canonical policy exists.
- Do not treat top-view aura/context as body depth.
- Do not average contradictory dimensions unless the user explicitly asks for an approximate stylized compromise.
- Record part-count disagreements separately from bbox disagreements.

## Script

- `scripts/view_constraint_report.py` reads a JSON file of per-view body bboxes and emits shared-axis compatibility and a suggested canonical policy.

