1. Аналитическая часть
1.1. Текущее состояние
Как задачу решают сейчас (AS-IS)
Готового пути «снял место — получил уровень» нет. Человек собирает его сам из нескольких инструментов. Процесс показан на диаграмме активности (рис. П.2.1).
Шаги, участники и потери текущего процесса приведены в табл. 1.1.
Табл. 1.1. Шаги текущего процесса и потери
| Шаг | Кто | Инструмент | Где теряются время и данные |
|---|---|---|---|
| 1. Снять место | Автор уровня | Сканер на телефоне: Polycam, Scaniverse, KIRI Engine | Приложение не сообщает, годится ли съёмка для игрового уровня |
| 2. Выгрузить модель | Автор уровня | Экспорт OBJ, FBX или GLB; часть форматов только в платном тарифе [26] | Плотная модель с мусором по краям, без игрового бюджета |
| 3. Почистить и упростить | Автор уровня или 3D-художник | Blender | Ручная работа, нужны навыки. Размеры легко сбить при экспорте |
| 4. Сделать опору для персонажа | То же | Blender или движок | Отдельная упрощённая модель руками. Сплат не держит персонажа, опору всё равно строят отдельно [7] |
| 5. Импортировать в движок и пройти | Разработчик | Godot, Unity, Unreal | Проходимость видна только здесь. Ошибку на шаге 1 или 4 находят в самом конце |
| 6. Переделать | Все | Все инструменты | Повторить тот же результат нельзя: каждый шаг ручной |
Кто участвует. Чаще всего один человек: инди-разработчик, level-дизайнер, автор макета или студент. В студии шаги 3–4 может делать 3D-художник, тогда добавляется передача файлов между людьми.
Где теряется время. Шаги 3–4: ручная чистка, упрощение и сборка опоры. Шаги 5–6: брак съёмки обнаруживают последним, и цикл повторяется с начала.
Где теряются данные. Размеры в метрах, которые измерил датчик, пропадают при экспорте и ручном масштабировании. Сведения о том, как снимали (путь камеры, глубина), в модель не попадают. Объяснить, почему уровень получился плохим, потом нельзя.
Условный пример
Персона Аня (раздел 2.2) участвует в гейм-джеме на 48 часов. Тема — «маленький мир», и она хочет сделать уровень из своего письменного стола с книгами и кружкой. Она снимает стол в Polycam и получает красивую модель на несколько сотен тысяч треугольников. Godot импортирует её, но персонаж проваливается: у модели нет отдельной опоры, а края стола рваные. Аня открывает Blender, вручную чистит края, упрощает модель и строит из кубов невидимую опору. При экспорте размеры сбиваются, и персонаж оказывается ростом с кружку. После второй попытки выясняется, что одна книга не попала в съёмку: Аня снимала слишком быстро. На уровень уходит полдня из 48 часов джема, и в итоге она заменяет стол кубами.
Этот пример показывает три потери: время на ручную доводку, поздно найденный брак съёмки и сбитые размеры. Именно их закрывает продукт.
Как будет (TO-BE)
Человек обходит участок телефоном 10–30 секунд. Приложение сразу проверяет запись и либо отправляет её на сервер, либо просит переснять с понятной причиной. Сервер сам собирает карту: видимую модель, отдельную лёгкую опору и отчёт, сохраняя размеры датчика. Человек проходит по карте в браузере и скачивает пакет в движок. Ручные шаги 3–4 и поздняя проверка 5 исчезают (рис. П.2.2).
1.2. Обзор источников
Использованы 33 источника, из них 10 научных. Источники разбиты на четыре группы: методы реконструкции, представление сцены, стандарты и правила, рынок и аналоги.
Методы реконструкции. Классический путь от глубины к поверхности описан в работах Курлесса и Левоя [13] и в KinectFusion [12]: карты глубины с известным положением камеры накапливаются в объёмной сетке, из которой поверхность извлекается алгоритмом marching cubes [14]. Метод устойчив к шуму отдельного кадра, но полностью зависит от точности поз: ошибка траектории размазывает поверхность. Отсюда два решения продукта. Позы камеры обязательны, и без них сборка честно отказывает. Участок съёмки маленький, чтобы накопленная ошибка траектории не успевала вырасти. Упрощение по квадрикам [15] позволяет уменьшить сетку до заданного числа треугольников с контролируемой потерей формы — это основа жёстких бюджетов видимой модели и опоры.
Точность датчика. Оценка LiDAR iPhone 12 Pro [4] показывает, что датчик даёт сантиметровую точность на небольших объектах при съёмке с расстояния до нескольких метров. Это согласуется с выбором небольшой зоны около 80×80 см и съёмки с небольшой высоты. Depth Anything V2 [21] оценивает глубину по одному кадру нейросетью; это оценка, а не измерение датчиком, поэтому в продукте такой способ — только запасной выключенный режим.
Представление сцены. Gaussian splatting [20] дал фотореалистичный просмотр сцен в реальном времени, и сканеры быстро его подхватили [6], [7], [23]. Но у сплата нет поверхности, по которой может пройти персонаж: даже в инструкциях Polycam для Unreal опора для персонажа берётся из отдельной модели [7]. Video2Game [19] — самая близкая к продукту работа: видео превращается в сцену с опорой для персонажа, которая работает в браузере. Однако она требует обучения нейронного представления для каждой сцены и остаётся исследовательским конвейером, а не сервисом. Вывод для продукта: красивая картинка и пригодная для игры опора — разные задачи, и продукт решает вторую.
Стандарты и правила. glTF 2.0 [11] задаёт метры как единицу и ось Y вверх и читается браузером и движками — это делает пакет переносимым без конвертации. GDPR [17] требует правового основания, минимизации данных и права на удаление: съёмка помещения может случайно захватить людей. WCAG 2.1 [18] задаёт измеримый уровень доступности веб-клиента. Техники выявления требований взяты из BABOK v3 [25].
Что из каждой группы источников следует для требований главы 2, показано в табл. 1.2.
Табл. 1.2. Выводы из источников для требований
| Источники | Что из них следует | Где в требованиях |
|---|---|---|
| Слияние глубины [12], [13], Open3D [22] | Карты глубины с известными позами сливаются в поверхность; без поз результат не собрать. Готовые реализации открыты (MIT) | Позы обязательны, иначе отказ: US-3.2; лицензии: 2.8 |
| Marching cubes [14], упрощение по квадрикам [15] | Поверхность строится автоматически, число треугольников можно жёстко ограничить | Бюджет карты: KPI-4, US-3.3 |
| LiDAR iPhone 12 Pro [4], устройства [5], [10] | Сантиметровая точность на небольшом участке; глубина есть только на Pro-устройствах Apple | Зона 80×80 см, платформа iOS: 2.3 |
| Gaussian splatting [20], сплаты в движках [7], [23] | У сплата нет физической поверхности; опору добавляют отдельной моделью | Отдельная опора: US-5.1; сплаты вне релиза |
| Depth Anything V2 [21] | Глубина по одному кадру — оценка нейросети, а не измерение | Сборка без LiDAR — выключенный режим: 2.3 |
| Video2Game [19] | Видео превращается в интерактивную сцену с опорой, но ценой обучения сцены; это исследование, а не продукт | Ходьба в браузере: US-4.1; без обучения нейросети на каждую сцену |
| glTF 2.0 [11], RoomPlan [16] | Открытый формат с метрами и осью Y вверх; RoomPlan строит план помещения, а не поверхность участка | Пакет GLB и манифест: US-5.2 |
| GDPR [17], WCAG 2.1 [18], BABOK [25] | Правовое основание, минимизация, удаление; доступность AA; техники выявления требований | 2.8, NFR-9; методы во введении |
| Рынок [1]–[3], аналоги [6]–[9], [23], [24] | Авторов игр много и больше с каждым годом; сканеры отдают модель, а не уровень | Сегменты: 2.2; аналоги: 1.3 |
Вывод. Технологии сборки поверхности и упрощения зрелые [12]–[15], [22]. Датчик телефона точен на небольшом участке [4]. Новизна продукта не в алгоритмах, а в том, чтобы связать их в проверяемый путь от съёмки до проходимого уровня с честным отказом.
1.3. Анализ аналогов
Рассмотрены девять решений. Коммерческие: Polycam [7] (подписка около 27 $ в месяц [26]), Scaniverse [6] (Niantic Spatial), KIRI Engine [8] (50–80 $ в год), RealityScan [9] (Epic Games, выгрузка через Sketchfab в Unreal), Luma [23] (сплаты, плагин Unreal), World Labs Marble [24] (генерирует 3D-мир из текста, фото или видео и отдаёт опору в GLB), а также API Apple RoomPlan [16], который строит план комнаты из стен и мебели. Исследовательские и открытые: Video2Game [19] и ручной путь на COLMAP [27], Open3D [22] и Blender.
Polycam — распространённый сканер с LiDAR и фотограмметрией. Сильная сторона — качество модели и широкий выбор форматов. Для уровня из него нужна ручная доводка: опоры нет, модель плотная, часть форматов только в платном тарифе [26].
Scaniverse — бесплатный сканер Niantic Spatial с моделями и сплатами. В 2026 году добавил пакет для симуляторов роботов, где модель строится из сплата [6], [28]. Это шаг к «пригодной для симуляции» сцене, но не к лёгкому игровому уровню.
KIRI Engine ориентирован на художников: ретопология, PBR-материалы, экспорт в Blender и Unreal [8]. Результат — ассет для дальнейшей работы, а не проходимый участок.
RealityScan от Epic Games превращает фотографии объекта в 3D-модель и ведёт её в экосистему Epic: Sketchfab и Unreal [9].
Luma делает фотореалистичные сплаты и плагин для Unreal [23]. У сплата нет поверхности для персонажа [20], метрические размеры производитель не заявляет.
World Labs Marble ближе всего по выходу: отдаёт отдельную опору в GLB [24]. Но мир генерируется моделью, а не измеряется, поэтому его размеры не настоящие; проверку проходимости и отказ на непригодной съёмке производитель не заявляет [24].
Apple RoomPlan строит план помещения из стен, дверей и мебели [16]. Это схема комнаты, а не поверхность стола или макета.
Video2Game доказывает, что путь «видео → проходимая сцена» возможен [19], но требует обучения на каждую сцену и не является продуктом.
Ручной путь на COLMAP [27], Open3D [22] и Blender даёт полный контроль, но требует навыков и времени и не повторяется одной командой.
Сравнение по критериям
Критерии выведены из потерь текущего процесса (табл. 1.1): каждому шагу, на котором теряются время или данные, соответствует один критерий, а последний показывает, в чём аналоги сильнее.
- Отказ (шаг 1) — отказ с причиной на съёмке, непригодной для уровня.
- Бюджет (шаги 2–3) — модель укладывается в игровой бюджет без ручного упрощения.
- Метры (шаг 3) — в результате сохраняются настоящие размеры.
- Опора (шаг 4) — отдельная лёгкая модель, по которой ходит персонаж.
- Ходьба (шаг 5) — проходимость можно проверить до импорта в движок.
- Повтор (шаг 6) — повторная обработка той же съёмки даёт тот же результат.
- Картинка — высокое качество картинки и текстур.
Оценки аналогов — по открытым описаниям и документации [6]–[9], [19], [23], [24]. Колонка NVC Maps — целевые значения: продукт в разработке. Результаты сведены в табл. 1.3.
Табл. 1.3. Сравнение аналогов по критериям
| Критерий | Polycam | Scaniverse | KIRI Engine | RealityScan | Luma | World Labs Marble | Video2Game | NVC Maps (цель) |
|---|---|---|---|---|---|---|---|---|
| Отказ (шаг 1) | — | — | — | — | — | — | — | ✓ |
| Бюджет (шаги 2–3) | — | — | ~ | — | — | — | — | ✓ |
| Метры (шаг 3) | ✓ | ✓ | ✓ | — | — | ✕ | — | ✓ |
| Опора (шаг 4) | ✕ | ~ | — | — | ✕ | ✓ | ✓ | ✓ |
| Ходьба (шаг 5) | — | — | — | — | — | ~ | ✓ | ✓ |
| Повтор (шаг 6) | — | — | — | — | — | — | — | ✓ |
| Картинка | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✕ |
Обозначения: ✓ — есть; ~ — частично; ✕ — нет; — — производитель не заявляет. Пояснения: Scaniverse отдаёт модель для симуляторов роботов [28]; KIRI Engine делает ретопологию [8]; у World Labs Marble есть пример с физикой в браузере [24]; у Polycam и Luma опору для персонажа добавляют отдельной моделью [7], [20].
Чего не хватает
- Опоры для персонажа в метрах. Сканеры с LiDAR сохраняют размеры, но отдельную опору не заявляют, а у Polycam её добавляют вручную [7]. World Labs Marble отдаёт опору, но мир сгенерирован моделью, и его размеры не настоящие.
- Проверки проходимости до движка. Её заявляет исследовательский Video2Game и частично World Labs Marble; сканеры такую проверку не заявляют.
- Честного отказа. Ни одно решение не заявляет отказ с причиной на съёмке, непригодной для уровня.
- Повторяемости и игрового бюджета. Ни одно решение не заявляет повторяемость результата и автоматическое укладывание в игровой бюджет.
Где аналоги сильнее. Качество картинки, текстуры, размер сцены (комната, улица), поддержка Android. Продукт сознательно уступает им здесь: его цель — пригодность результата для игры.
1.4. Выводы по главе
Выявленные проблемы и то, что должно уметь новое решение, сведены в табл. 1.4.
Табл. 1.4. Проблемы и их связь с эпиками и KPI
| № | Проблема | Что должно уметь новое решение | Эпик | KPI |
|---|---|---|---|---|
| П1 | Плохая съёмка выглядит как удачная, брак находят в движке | Проверить запись на телефоне и отказать с причиной | E1, E3 | KPI-3 |
| П2 | Опору для персонажа и упрощение делают руками | Собрать видимую модель и лёгкую опору автоматически | E3, E5 | KPI-1, KPI-4 |
| П3 | Проходимость видна только в движке | Дать пройти по карте в браузере | E4 | KPI-1, KPI-2 |
| П4 | Размеры датчика теряются по дороге | Сохранить метры и записать единицы и оси в манифест | E5 | KPI-1 |
| П5 | Путь от съёмки до уровня долгий и не повторяется | Принять съёмку, собрать карту на сервере, показать статус | E2, E3 | KPI-2 |
| П6 | Без телефона с LiDAR продукт не проверить | Открыть эталонные задания по тестовой ссылке | E6 | KPI-1, KPI-3 |