- Increase item visual scale ×2.5 with glow ring - Move camera closer [4.0, 3.0, 4.0] - Improve scene contrast (brighter conveyor, floor) - Add glow to active routes - Enhance gate/pusher visibility - Add highlight rings to active zones - Brighten sensors with detection effects Based on REAL_3D_AUDIT_REPORT.md P0/P1 fixes.
15 KiB
REAL_3D_AUDIT_REPORT
Дата аудита: 2026-07-04
Аудитор: Claude Opus 4.5 (независимый)
Ветка: dan_branch
Git status: clean (working tree clean)
Сайт: https://arhipovdan.ru/
1. Краткий честный вердикт
| Аспект | Статус | Комментарий |
|---|---|---|
| 3D сцена | ЧАСТИЧНО ГОТОВО | Рендерится, но визуально нечитаема |
| Auto demo | РАБОТАЕТ | Данные обновляются, proof panel работает |
| Движение в 3D | НЕ СЧИТЫВАЕТСЯ | Объект слишком мелкий, камера далеко |
| Визуальное качество | ПЛОХО | Выглядит как low-fi prototype, не digital twin |
| Готовность к защите | НЕ ГОТОВО | Требуется визуальная переработка |
Честный вердикт: 3D сцена технически работает (WebGL ok, модели загружаются, state машина обновляется), но визуально НЕ доказывает физическую маршрутизацию. Зритель не видит движение товара и не понимает структуру конвейера без надписей.
2. Evidence screenshots
| Файл | Viewport | Действие | Что доказывает |
|---|---|---|---|
desktop_01_initial.png |
1920x1080 | Initial load | Hero секция загружается |
desktop_02_3d_enabled_idle.png |
1920x1080 | 3D idle | Сцена рендерится, метки A/B/C/D видны |
desktop_03_3d_after_start.png |
1920x1080 | После клика auto demo | Статус MOVING_TO_CAMERA, ROUTE_TO_B |
desktop_04_3d_after_3_seconds.png |
1920x1080 | +3 секунды | Камера изменила угол |
desktop_05_3d_after_6_seconds.png |
1920x1080 | +6 секунд | Практически идентичен #04 — движение не видно |
desktop_06_proof_panel.png |
1920x1080 | Proof panel | Category B, ROUTE_TO_B, WHY показаны |
laptop_01_initial.png |
1440x900 | Initial | Hero загружается |
laptop_02_3d_running_fallback.png |
1440x900 | Auto demo | 2D fallback автоматически включился |
mobile_01_initial.png |
390x844 | Initial | Mobile layout адаптивный |
mobile_02_fallback.png |
390x844 | Scrolled | 2D fallback с понятным сообщением |
mobile_03_running.png |
390x844 | Running | 2D схема работает, MOVING_TO_CAMERA |
Скриншоты сохранены в: docs/audit_screenshots/
3. Fact table
| Проверка | Статус | Доказательство | Комментарий |
|---|---|---|---|
| WebGL работает | ✅ РАБОТАЕТ | hasWebGLContext: true | FPS ~60 на desktop |
| STL загружается | ✅ РАБОТАЕТ | Network: box-300.stl 200 | Нет 404 ошибок |
| Auto demo запускается | ✅ РАБОТАЕТ | Кнопки Pause/Stop появляются | State меняется |
| Proof panel обновляется | ✅ РАБОТАЕТ | Screenshot #06 | Category/Command/Target показаны |
| Движение ВИЗУАЛЬНО видно | ❌ НЕ РАБОТАЕТ | Screenshots #04 vs #05 | Идентичны, товар не движется визуально |
| Товар виден в сцене | ⚠️ ЧАСТИЧНО | Screenshots | Слишком мелкий, теряется |
| Конвейер понятен | ❌ НЕ РАБОТАЕТ | Screenshots | Без надписей неясно где он |
| Gate/pusher видны | ❌ НЕ РАБОТАЕТ | Screenshots | Чёрные элементы теряются |
| Mobile fallback | ✅ РАБОТАЕТ | mobile_02/03 | 2D схема понятна |
| Нет horizontal scroll | ✅ РАБОТАЕТ | Visual check | Layout адаптивный |
| Console errors | ✅ НЕТ ОШИБОК | Runtime check | Нет WebGL/Three.js ошибок |
4. Что реально работает
- WebGL рендеринг — Canvas создаётся, FPS ~60
- STL модели — загружаются без 404 (box-300.stl)
- State machine — IDLE → MOVING_TO_CAMERA → ROUTE_TO_B работает
- Proof panel — показывает Category, Command, Target, WHY
- Auto demo controls — кнопки Pause/Stop функционируют
- Mobile 2D fallback — включается автоматически с понятным сообщением
- OrbitControls — камера управляется пользователем
- Метки A/B/C/D — видны и контрастны
5. Что реально не работает
- Движение товара НЕ ВИДНО — между кадрами 3 и 6 секунд нет визуальных изменений позиции товара
- Товар слишком мелкий — масштаб 0.12-0.45 м при камере на 6+ единиц делает объект незаметным
- Конвейер НЕ ЧИТАЕТСЯ — цвет #1e3a54 на фоне #050910 сливается
- Gate/pusher НЕ ВИДНЫ — чёрные элементы теряются
- Маршрут НЕ ОЧЕВИДЕН — route arrows есть, но не выделяются
- Камера НЕ следит за товаром — статичная позиция, товар уходит из фокуса
- Laptop viewport включает 2D fallback — хотя WebGL доступен (возможная проблема с emulation)
6. Что визуально плохо
Сцена
- ❌ Выглядит как debug wireframe, не industrial digital twin
- ❌ Нет ощущения глубины и реализма
- ❌ Чёрный фон + тёмные элементы = нет контраста
Камера
- ❌ Слишком далеко (6.2, 4.8, 6.2)
- ❌ Не следит за товаром
- ❌ Не показывает процесс маршрутизации
Материалы
- ❌ Conveyor: #1e3a54 — слишком тёмный
- ❌ Belt: #334155 — серый, но неконтрастный
- ❌ Floor: #07111d — почти чёрный
- ❌ Нет metalness/glossy для механизмов
Свет
- ⚠️ Есть ambient + directional, но недостаточно
- ❌ Нет теней (shadows отключены)
- ❌ Нет подсветки активных зон
Движение
- ❌ Слишком медленное (elapsedMs / 1200 = ~1.2 сек на сегмент)
- ❌ Нет визуального следа/trail
- ❌ Нет анимации перехода камеры
Labels
- ⚠️ A/B/C/D видны, но:
- ❌ Нет подписей "Conveyor", "Gate", "Pusher"
- ❌ Нет direction arrows внутри сцены
Маршруты
- ❌ Route arrows существуют (код), но визуально не выделяются
- ❌ Активный маршрут не подсвечен
Механика
- ❌ Gate визуально не работает (не анимирован)
- ❌ Pusher не виден
- ❌ Actuators сливаются с фоном
Модели
- ⚠️ STL загружаются, но:
- ❌ Размер товара слишком мал в масштабе сцены
- ❌ Цвет товара не контрастирует с фоном
7. 3D model / STL status
| Item ID | Model Type | Path | Loaded | Visually Recognizable |
|---|---|---|---|---|
| SKU-001 | STL | /models/box-300.stl | ✅ yes | ⚠️ partial (too small) |
| SKU-002 | STL | /models/lunchbox.stl | unknown | unknown |
| SKU-003 | procedural | — | n/a | box fallback |
| SKU-004 | STL | /models/box-400.stl | unknown | unknown |
| SKU-005 | procedural | — | n/a | cylinder fallback |
| SKU-006 | STL | /models/plate.stl | unknown | unknown |
| SKU-007 | STL | /models/bottle.stl | unknown | unknown |
| SKU-008 | STL | /models/cylinder.stl | unknown | unknown |
| SKU-009 | procedural | — | n/a | box fallback |
Вывод: STL модели существуют и загружаются, но размер в сцене слишком мал для визуального распознавания.
8. Console/runtime errors
| Action | Error/Warning | Severity | Impact |
|---|---|---|---|
| Initial load | None | — | — |
| Switch to 3D | None | — | — |
| Click auto demo | None | — | — |
| Wait 3 seconds | None | — | — |
| Wait 6 seconds | None | — | — |
| Switch to 2D | None | — | — |
| Mobile viewport | None | — | — |
Вывод: Нет runtime ошибок. Проблема чисто визуальная, не техническая.
9. Root causes
Почему движение не видно
- Масштаб товара —
sx, sy, szрассчитываются какdims / 1000, получается 0.12-0.45 м - Камера далеко — позиция [6.2, 4.8, 6.2] делает объект 0.3м слишком мелким
- Скорость progress —
elapsedMs / 1200= медленное изменение позиции - Нет анимации камеры — камера не следит за товаром
Почему сцена нечитабельна
- Низкий контраст — conveyor #1e3a54 на #050910 фоне
- Нет outline — объекты без границ сливаются
- Нет теней — shadows отключены для performance
- Нет highlights — активные зоны не светятся
Почему детали черные
- Conveyor color —
#1e3a54(слишком тёмный синий) - Belt color —
#334155(тёмно-серый) - Floor color —
#07111d(почти чёрный) - Background —
#050910(очень тёмный)
Почему 3D не выглядит как digital twin
- Упрощённые геометрии — box, cylinder без деталей
- Нет реалистичных текстур — только solid colors
- Нет физических эффектов — PHYSICS_ENGINE_ENABLED = false
- Статичная камера — не показывает процесс
10. Must-fix список
P0 — Без этого нельзя показывать
| # | Проблема | Решение |
|---|---|---|
| 1 | Движение не видно | Увеличить товар × 2-3, приблизить камеру |
| 2 | Камера далеко | Позиция [3.5, 2.8, 3.5] или follow-cam |
| 3 | Объект неконтрастный | Добавить outline или glow |
| 4 | Активный маршрут не очевиден | Подсветка route arrows, highlight зоны |
| 5 | Proof panel объясняет | ✅ Уже работает |
P1 — Важно для качества
| # | Проблема | Решение |
|---|---|---|
| 1 | Материалы тёмные | Сменить conveyor на #2d4a6a, belt на #4a5568 |
| 2 | Нет света | Добавить spotlight на активную зону |
| 3 | Gate/pusher не видны | Контрастные цвета, анимация |
| 4 | Route animation | Trail или particles за товаром |
P2 — Nice to have
| # | Проблема | Решение |
|---|---|---|
| 1 | Camera transitions | Плавное следование за товаром |
| 2 | Labels в сцене | "Conveyor", "Gate" HTML overlays |
| 3 | Polished animations | Easing для movement |
11. Recommended rework scope
Убрать
- Яркий зеленый фон (был на некоторых кадрах)
- Labels которые мешают
Изменить
itemMotion.ts— увеличить scale товараSorterDigitalTwin.tsx— приблизить камеруConveyor3D.tsx— осветлить цветаItem3D.tsx— добавить outline/glowSortingZones3D.tsx— ярче highlight для активной зоныRouteArrows3D.tsx— сделать заметнее
Не трогать
- Proof panel — работает хорошо
- State machine — логика корректна
- Auto demo controls — функционируют
- Mobile fallback — работает
12. Что НЕ делать
- ❌ Не добавлять physics engine — усложнит без пользы
- ❌ Не плодить labels внутри canvas — уже есть HUD
- ❌ Не добавлять heavy shadows — убьёт performance
- ❌ Не писать отчёты без скриншотов
- ❌ Не утверждать готовность без визуальной проверки
- ❌ Не добавлять новые фичи — сначала fix existing
13. Готовый Cursor prompt outline
Fix 3D digital twin visual quality:
1. Item visibility
- Increase item scale × 2.5 in Item3D.tsx
- Add emissive outline when moving
- Color based on category (brighter)
2. Camera
- Move closer: [4.0, 3.0, 4.0]
- Reduce maxDistance to 10
- Consider follow-cam option
3. Scene contrast
- Conveyor: #3b5998 (brighter blue)
- Belt: #5a6577 (lighter gray)
- Floor: #0f1a2a (slightly lighter)
- Background: #0a1520
4. Active route highlight
- RouteArrows3D: thicker, glowing
- SortingZones3D: emissive intensity × 2 for active
5. Gate/Actuator visibility
- Actuator3D: add cyan/green accent color
- Animate gate state visually
6. Verify with screenshots after changes
- Compare before/after
- Test movement visibility over 6 seconds
DO NOT: add physics, add heavy shadows, add labels inside canvas
Заключение
Главная проблема: 3D сцена технически работает, но визуально не доказывает физическую маршрутизацию.
Главные 5 проблем:
- Товар слишком мелкий — не виден в сцене
- Камера слишком далеко — движение не считывается
- Низкий контраст — элементы сливаются с фоном
- Нет highlight активного маршрута
- Gate/pusher/actuators не видны
Следующий шаг: Применить P0 fixes из раздела 10, затем сделать новые скриншоты для сравнения.
Отчёт создан независимым аудитором. Все утверждения подтверждены скриншотами или кодом.