01NVC Maps

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].

Чего не хватает

  1. Опоры для персонажа в метрах. Сканеры с LiDAR сохраняют размеры, но отдельную опору не заявляют, а у Polycam её добавляют вручную [7]. World Labs Marble отдаёт опору, но мир сгенерирован моделью, и его размеры не настоящие.
  2. Проверки проходимости до движка. Её заявляет исследовательский Video2Game и частично World Labs Marble; сканеры такую проверку не заявляют.
  3. Честного отказа. Ни одно решение не заявляет отказ с причиной на съёмке, непригодной для уровня.
  4. Повторяемости и игрового бюджета. Ни одно решение не заявляет повторяемость результата и автоматическое укладывание в игровой бюджет.

Где аналоги сильнее. Качество картинки, текстуры, размер сцены (комната, улица), поддержка 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