# FIX ROUND: defects found in boat_prop.fbx by independent visual verification Your self-verify passes but the boat is **visually wrong**. Renders of your FBX vs a raw import of the source GLB prove two defects. Fix `tools/export_boat_prop.py`, re-run until BOTH the existing self-verify AND the new checks below pass, then update `plans/boat-prop-export-results-2026-07-17.md`. ## Defect 1 — hull is UPSIDE DOWN In your export the canoe's carved prows curl DOWN below the waterline and the belly bulges up. Ground truth: `bpy.ops.import_scene.gltf` on the source GLB already gives a RIGHT-SIDE-UP canoe in Blender's Z-up frame (deck opening faces +Z, prows sweep up). The glTF importer performs the Y-up→Z-up conversion itself — your extra game→Blender axis conversion (the C3 matrix) double-rotates the mesh. **Correct transform chain** (nothing else): 1. Import GLB; apply all transforms (bakes the importer's rotation into vertices). 2. Rotate about **Z only** so the bow lies along −Y (raw bow is along +X after step 1). 3. Scale ×8.5 uniformly; apply. 4. Translate Z only so min-Z = 0. **Do NOT translate or recenter X/Y** — the game uses the GLB's own origin (Defect 2). ## Defect 2 — hull was recentered on X The canoe is a SINGLE outrigger (one ama, one side) yet your export's X bounds are symmetric (±2.82) — you recentered by AABB. The game never translates X; keep the GLB's own lateral placement so the hull centerline stays where the seat markers assume it. After the fix, report which side the ama extends to (expect −X, the Seat_Fisher side, if the game-equivalent yaw is right; report honestly if it's +X). ## New self-verify checks to ADD (these would have caught both defects) - **Right-side-up**: the hull's LOWEST vertex (z≈0, the keel) must lie near midships (|y| < 2.0 m), and the hull's HIGHEST vertices (prow carvings) must lie near the ends (|y| > 3.0 m). An upside-down canoe fails both. - **Not recentered**: the hull mesh's X bounds must be ASYMMETRIC about 0 (single outrigger): assert `abs(abs(minX) - abs(maxX)) > 0.5` m. ## Verification renders (run these yourself and STATE in the report what you see) Render workbench snapshots (¾ view + side view) of the final FBX re-imported, e.g. camera at (14,−12,8) looking at (0,0,1.2). The canoe must sit prows-up on the waterline rectangle like a boat, not like a banana on its back. Everything else from the original plan stands (guardrails §6 included: no commits, ariki-game read-only). The waterline-as-4-named-rails deviation is ACCEPTED — keep it.