feat: maximize sorter demo realism and add safe agent MVP
Wire live classifyItem into continuous playback, add jam/E-stop cases, presenter controls (seek/speed/hotkeys), quality modes, demo scripts, audit docs, and a verify-only autonomous agent CLI with hard safety limits. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
115
docs/VISUAL_REALISM_AUDIT.md
Normal file
115
docs/VISUAL_REALISM_AUDIT.md
Normal file
@@ -0,0 +1,115 @@
|
||||
# Аудит визуального реализма
|
||||
|
||||
**Дата:** 2026-07-15
|
||||
**Стек визуализации:** Three.js + React Three Fiber + drei (клиентский WebGL)
|
||||
**Решение по стеку:** **остаёмся на R3F** — смена на Babylon/Unity Web не обоснована; текущий стек уже даёт industrial twin и STL.
|
||||
|
||||
Легенда: **Измерено** (код/сборка/тесты) · **Оценка** (экспертный вывод без GPU-профайлера браузера в этом отчёте).
|
||||
|
||||
---
|
||||
|
||||
## 1. Цель аудита
|
||||
|
||||
Отделить:
|
||||
|
||||
1. Что уже выглядит как оборудование.
|
||||
2. Что всё ещё «игровое» или декоративное.
|
||||
3. Что критично для доверия жюри за первые 10 секунд.
|
||||
|
||||
---
|
||||
|
||||
## 2. Текущая визуальная архитектура
|
||||
|
||||
| Компонент | Continuous `/` | Details `/details` |
|
||||
| --------- | -------------- | ------------------ |
|
||||
| Scene root | `SorterDigitalTwinContinuous` | `SorterDigitalTwin` |
|
||||
| Items | `PhysicalPlaybackItem` / motion domain | `Item3D` + sim state |
|
||||
| Conveyor | `Conveyor3D` + network layout | Аналогичные примитивы, другой wiring |
|
||||
| Actuators | Gate/pusher анимации | State-driven actuators |
|
||||
| Sensors | Overlay + measurement HUD | `SensorRig3D` / panels |
|
||||
| Models | STL через `modelAssets` + fallbacks | То же семейство ассетов |
|
||||
| Camera | Cinematic / demo camera path | Свободная/инженерная |
|
||||
|
||||
**Проблема parity:** два twin визуально расходятся — разные акценты освещения/композиции/детализации. Для жюри это снижает ощущение «одной реальной линии».
|
||||
|
||||
---
|
||||
|
||||
## 3. Чек-лист визуальных факторов
|
||||
|
||||
| Фактор | Статус | Комментарий | Тип |
|
||||
| ------ | ------ | ----------- | --- |
|
||||
| Геометрия / пропорции | Частично OK | Layout в мм через `physicalLayout` | Измерено |
|
||||
| Масштаб сцены | OK | Единая физическая раскладка | Измерено |
|
||||
| Камера / перспектива | OK на `/` | Cinematic playback | Измерено |
|
||||
| Focal length / DoF | Минимально | DoF не форсируется (мешает чтению) | Оценка |
|
||||
| Освещение | Среднее | Достаточно для читаемости; не studio HDRI | Оценка |
|
||||
| Контактные тени | Ограничено | `shadows: false` в quality presets (perf) | Измерено |
|
||||
| AO / post FX | Выкл. в presets | `effectsEnabled: false` | Измерено |
|
||||
| Материалы PBR | Базовые | Шероховатость/металл упрощены | Оценка |
|
||||
| Текстуры / загрязнения | Слабо | Нет сильного wear layer | Оценка |
|
||||
| Края / bevel | Частично | STL + примитивы | Оценка |
|
||||
| Движение ленты / ролики | OK с trade-off | Static/sparse rollers в perf-режимах | Измерено (ветка perf) |
|
||||
| Приводы / задержки | Симулированы кинематикой | Не servo-physics | Измерено |
|
||||
| Motion blur | Нет | Сознательно | Измерено |
|
||||
| Anti-aliasing | По режиму | low/medium off; high/demo on | Измерено |
|
||||
| Звук / вибрация | Нет | Не реализовано | Измерено |
|
||||
| Заполнение накопителей | Упрощено | B receiver timing учтён в истории perf | Измерено (история) |
|
||||
| CV overlay | Есть | RULE line + inspection | Измерено |
|
||||
| Presentation declutter | Есть | Скрытие панелей в presentation | Измерено |
|
||||
|
||||
---
|
||||
|
||||
## 4. Режимы качества
|
||||
|
||||
Источник: `src/domain/qualityMode.ts` (**Измерено**).
|
||||
|
||||
| Mode | dprMax | AA | Shadows | maxItems | rollers | target FPS |
|
||||
| ---- | -----: | -- | ------- | -------: | ------- | ---------: |
|
||||
| low | 1 | нет | нет | 3 | none | 30 |
|
||||
| medium | 1.25 | нет | нет | 5 | sparse | 30 |
|
||||
| high | 1.5 | да | нет | 6 | full | 60 |
|
||||
| demo | 1.5 | да | нет | 6 | full | 60 |
|
||||
|
||||
Автовыбор: по ширине viewport и опционально по recent FPS; `adaptQuality` понижает режим при просадке.
|
||||
|
||||
**Целевая демо:** стабильные 60 FPS при возможности, иначе стабильные 30 без рывков (**требование брифа**; фактический FPS на клиенте жюри — **не измерен в этом аудите на всех устройствах**).
|
||||
|
||||
---
|
||||
|
||||
## 5. Что выглядит убедительно
|
||||
|
||||
- Непрерывный путь товара от входа до B/C/D с подписями зон.
|
||||
- STL-модели там, где ассет доступен; осознанные fallbacks для тяжёлых STL.
|
||||
- Proof HUD и CV overlay связывают картинку с решением.
|
||||
- Fault визуально останавливает поток (freeze).
|
||||
- Presentation mode убирает engineering chrome.
|
||||
|
||||
---
|
||||
|
||||
## 6. Что снижает доверие («игровое»)
|
||||
|
||||
| Симптом | Почему заметно | Рекомендация |
|
||||
| ------- | -------------- | ------------ |
|
||||
| Разный вид `/` и `/details` | «Две разные игрушки» | Shared scene kit (Open) |
|
||||
| Нет теней/AO | Плоские объекты | Осторожно включить в demo на мощных GPU клиентов |
|
||||
| Pseudo-CV bbox | Идеальная геометрия | Оставить RULE + confidence честно |
|
||||
| Отсутствие звука | Тихая «сцена» | Опциональный ambient loop (низкий приоритет) |
|
||||
| Идеально ровное движение без контактов | Нет micro-collisions | Seeded jitter уже частично компенсирует |
|
||||
|
||||
---
|
||||
|
||||
## 7. Критичность для показа
|
||||
|
||||
| Приоритет | Находка | Действие |
|
||||
| --------- | ------- | -------- |
|
||||
| P0 | Proof + classification visible | Сделано |
|
||||
| P0 | Presentation + hotkeys | Сделано |
|
||||
| P1 | Twin visual unify | Open |
|
||||
| P2 | Shadows/AO в demo-only | Open, perf-gated |
|
||||
| P3 | Sound / wear textures | Backlog |
|
||||
|
||||
---
|
||||
|
||||
## 8. Вывод
|
||||
|
||||
Визуальный стек **достаточен**. Узкое место не «не тот движок», а **согласованность двух сцен** и **сдержанный shading ради FPS**. Для жюри важнее читаемый контур решения, чем ray-traced реализм. Следующий максимум ROI: унификация twin + актуальный production dist.
|
||||
Reference in New Issue
Block a user