|
| 1 | +# BUILD PR: 17.7 3D Visibility Calibration And Sanity |
| 2 | + |
| 3 | +## Purpose |
| 4 | +Fix the current Phase 16 visibility failure where 1602 and 1604 boot, accept input, and paint the canvas, but do not display usable 3D geometry. |
| 5 | + |
| 6 | +## Observed Runtime Symptom |
| 7 | +- Sample 1602 loads |
| 8 | +- Sample 1604 loads |
| 9 | +- Canvas paints |
| 10 | +- Input appears active |
| 11 | +- Visible 3D output is missing or effectively off-screen |
| 12 | + |
| 13 | +## Grounded Diagnosis |
| 14 | +The failure pattern points to 3D framing/projection rather than boot/input: |
| 15 | +- scene lifecycle is alive |
| 16 | +- update loop is alive |
| 17 | +- input loop is alive |
| 18 | +- draw path is running |
| 19 | +- projected geometry is likely clipped, behind near plane, or landing off-canvas due to camera pose / pitch convention / focal calibration |
| 20 | + |
| 21 | +## Scope |
| 22 | +- calibrate 3D camera framing for 1602 and 1604 |
| 23 | +- correct pitch / projection assumptions if needed in shared 3D wireframe projection path |
| 24 | +- add a small visibility sanity contract for Phase 16 samples using the shared wireframe path |
| 25 | +- keep sample 1601 behavior intact unless required by the shared fix |
| 26 | +- keep 2D and networking untouched |
| 27 | + |
| 28 | +## In Scope Files |
| 29 | +- samples/phase-16/shared/threeDWireframe.js |
| 30 | +- samples/phase-16/1602/MazeRunner3DScene.js |
| 31 | +- samples/phase-16/1604/Platformer3DBasicsScene.js |
| 32 | +- optional: sample-local helper or debug notes only if required for the visibility check |
| 33 | +- docs/dev/reports/* generated by validation |
| 34 | + |
| 35 | +## Out of Scope |
| 36 | +- no engine-wide 3D renderer rewrite |
| 37 | +- no asset/content pipeline changes |
| 38 | +- no advanced lighting/material work |
| 39 | +- no gameplay expansion for 1602/1604 |
| 40 | +- no repo-wide scanning |
| 41 | + |
| 42 | +## Required Fix Direction |
| 43 | +Implement the smallest valid correction that makes geometry visible: |
| 44 | +1. verify camera-space forward convention |
| 45 | +2. verify pitch sign convention |
| 46 | +3. verify near-plane clipping assumptions |
| 47 | +4. verify viewport focal length / framing |
| 48 | +5. verify sample camera placement against actual object extents |
| 49 | +6. preserve shared-path consistency across 1601/1602/1604 |
| 50 | + |
| 51 | +## Acceptance Criteria |
| 52 | +- [ ] 1602 displays visible 3D maze geometry on load |
| 53 | +- [ ] 1604 displays visible 3D platform geometry on load |
| 54 | +- [ ] movement/input still works in both samples |
| 55 | +- [ ] 1601 still displays correctly after shared-path correction |
| 56 | +- [ ] no 2D regression introduced |
| 57 | +- [ ] no networking regression introduced |
| 58 | +- [ ] samples/index.html remains correct for Phase 16 entries |
| 59 | + |
| 60 | +## Validation |
| 61 | +- launch smoke for affected Phase 16 samples |
| 62 | +- runtime confirmation that at least one expected projected edge/shape is visible on first render for 1601, 1602, and 1604 |
| 63 | +- targeted regression check only; do not expand scope |
0 commit comments