# Light Scene Fix Report **Date:** 2026-07-09 **Status:** Fixed --- ## Problem 1. **Dark scene** — почти чёрный фон, плохая видимость 2. **"Лестница из труб"** — вращающийся артефакт на конвейере --- ## Root Cause: "Лестница из труб" **Проблема в `ConveyorBelt` компоненте:** ```tsx // БЫЛО — вся группа роликов вращалась вокруг Z: {Array.from({ length: 18 }).map((_, i) => ( ))} useFrame(() => { rollersRef.current.rotation.z += delta; // ← ВСЯ ГРУППА вращалась! }); ``` Это создавало эффект "вращающейся лестницы" — все 18 роликов крутились вокруг общей оси Z. **Исправление:** ```tsx // СТАЛО — каждый ролик вращается отдельно вокруг своей оси X: function Roller({ position, speedFactor }) { const meshRef = useRef(null); useFrame((_, delta) => { meshRef.current.rotation.x += delta * speedFactor * 3; }); return ; } // + добавлены animated stripes на ленте function BeltStripe({ offset, speedFactor }) { ... } ``` --- ## Files Changed | File | Changes | |------|---------| | `src/components/ThreeD/SorterDigitalTwinContinuous.tsx` | Complete rewrite with light palette | | `scripts/test_light_scene.py` | Browser QA script | --- ## Color Palette Changes | Element | Before | After | |---------|--------|-------| | Background | `#0a1520` (dark) | `#f6f9ff` (light blue-white) | | Floor | `#0f1a2a` (dark) | `#eaf2ff` (light blue) | | Grid | `#2a4a6a` | `#c9d8ee` | | Belt | `#1a2836` (dark) | `#7aa2d8` (medium blue) | | Side guards | `#2a3d52` (dark) | `#9bb7d8` (light blue) | | Rollers | `#3a5068` (dark) | `#b7c8dc` (light gray-blue) | | Frame | — | `#d8e6f8` (very light blue) | **Route colors (kept bright):** - B: `#22c55e` (green) - C: `#f97316` (orange) - D: `#8b5cf6` (purple) --- ## Lighting Changes | Light | Before | After | |-------|--------|-------| | Ambient | 0.6 | 0.9 | | Directional (main) | 1.0 | 1.2 | | Directional (fill) | 0.3 | 0.5 | | Hemisphere | 0.25 | 0.6 | --- ## Animation Changes | Animation | Before | After | |-----------|--------|-------| | Rollers | Group rotation.z (broken) | Individual rotation.x (correct) | | Belt motion | None | Moving stripes | | Speed | N/A | ~1 m/s visual speed | --- ## Production Verification ``` curl -I https://arhipovdan.ru/ → 200 OK curl -I https://arhipovdan.ru/details → 200 OK ``` **Browser QA:** - ✓ Light background - ✓ No dark scene - ✓ No "ladder" artifact - ✓ Conveyor reads as belt - ✓ Item visible - ✓ Play works - ✓ HUD readable - ✓ /details not broken - ✓ No console errors --- ## Screenshots ``` docs/light_scene_screenshots/ ├── light_idle.png ├── light_play_started.png ├── light_running_3s.png └── light_route_active.png ``` ### light_idle.png - Light blue-white background - Clean conveyor belt - Zones A, B, C, D visible - HUD readable on dark panel ### light_route_active.png - Case 2/8 running - Item visible (green for B) - Gate bar colored by category - Status updates in HUD --- ## Build/Test Results ``` ✓ npm run build — success ✓ npm run test — 59 tests passed ✓ docker rebuild — success ✓ Production deployed ``` --- ## What Remains - Fine-tune roller rotation speed if needed - Optional: add subtle shadow under items - Optional: camera auto-follow during routing --- ## Commands for Commit/Push ```bash cd /opt/arhipovdan/app git add \ src/components/ThreeD/SorterDigitalTwinContinuous.tsx \ scripts/test_light_scene.py \ docs/LIGHT_SCENE_FIX_REPORT.md \ docs/light_scene_screenshots/ git commit -m "$(cat <<'EOF' fix: light warehouse-style 3D scene, remove rotating ladder artifact Root cause: ConveyorBelt used group.rotation.z which rotated all 18 rollers together, creating a "rotating ladder" visual artifact. Fix: - Each roller now rotates independently around its own X axis - Added moving belt stripes for visual motion - Changed dark palette (#0a1520) to light (#f6f9ff) - Increased ambient/directional lighting - Conveyor now looks like actual warehouse belt Tested on https://arhipovdan.ru/ — light scene, no artifacts EOF )" git push origin dan_branch ``` **DO NOT RUN** — commit/push not requested.