3D-СКАНИРОВАНИЕ | ОБЛАКО ТОЧЕК И СЕТКА

Видео с английскими субтитрами:



Всем привет!

Это вторая часть урока по 3D-сканированию фотоаппаратом. В прошлой части я показал, как снимать объекты для фотограмметрии. Здесь будет, как собрать облако точек из этих снимков и построить high-poly сетку с текстурой.

3D Scanning with photo camera

Для этого нужны две программы и одно дополнение:
- Visual SFM
- MeshLab
- CMVS (дополнение для Visual SFM)

Чтобы подключить CMVS, распакуйте архив и скопируйте содержимое папки Win64-VS2010 или Win32-VS2010 (зависит от системы) в папку VisualSFM.
Если своих снимков нет, можно взять мой набор фотографий.

Начинаем.

Сначала импортируем снимки в Visual SFM.
Для этого откройте «File» → «Open Multi Images» и выберите фотографии. Подождите, пока программа их загрузит. Когда импорт закончится, в окне Log появится соответствующая запись.

Visual SFM log window

Дальше нажмите кнопку «Compute Missing Matches». Программа начнёт расчёт, это займёт несколько минут.

Compute missing matches

Сразу после расчёта нажмите «Compute 3D Reconstruction» и снова немного подождите.

Compute 3d reconstruction

Следующий шаг — плотное облако точек. После кнопки «CMVS» нужно указать путь и имя файла. Создайте папку Model и назовите файл Model. Программа начнёт строить плотное облако.

CMVS dense reconstruction

Когда расчёт закончится, вы увидите, сколько времени ушло на плотное облако. На первый взгляд сцена не изменилась, но если нажать TAB, плотное облако станет видно.

Dense point cloud

После этого Visual SFM больше не нужен.
Откройте MeshLab, нажмите «Open Project» и выберите файл, который только что создал Visual SFM. У меня это Model.nvm. Подождите, пока программа загрузит облако точек.

MeshLab open project


Затем нажмите «Show Layer Dialog», чтобы увидеть слои проекта.

MeshLab layer dialog

Потом откройте «File» и нажмите «Import Mesh». Выберите файл Model.0, он тоже создан в Visual SFM.

MeshLab import mesh

После импорта два облака точек наложатся друг на друга.

MeshLab point cloud

Перед построением high-poly сетки из плотного облака нужно убрать лишние вершины. Выберите инструмент «Select Vertices», выделите ненужные точки и нажмите «Delete».

Deleting unwanted points

Когда лишние точки удалены, откройте «Filters» → «Point Set» и выберите «Surface Reconstruction: Poisson».

MeshLab surface reconstruction - poisson

В окне четыре параметра. «Octree Depth» поставьте 12: от него зависят скорость и качество. «Solver Divide» поставьте 8. Эти значения лучше всего балансируют скорость и качество. Подождите несколько минут, пока программа построит high-poly сетку.

MeshLab surface reconstruction properties

Когда сетка готова, облако точек можно отключить. Выберите сетку, откройте «Filters» → «Selection» и нажмите «Select non Manifold Edges».
MeshLab deleting non manifold edges

Нажмите «Apply», затем «Delete» на клавиатуре. Это нужно, чтобы UV (координаты текстуры) построились правильно.
Теперь можно сделать текстуру: «Filters» → «Texture» → «Parameterization: texture from registered rasters».

MeshLab parameterization - texture from registered rasters

Размер текстуры сделайте большим: автоматически построенные UV используют место неэкономно. Остальные параметры оставьте по умолчанию. Нажмите «Apply». Когда процесс закончится, появится сетка с текстурой. Окно можно закрыть.

MeshLab texture from registered rasters parameters

В MeshLab на этом всё. Осталось экспортировать модель в обычный формат для 3D-редакторов.

Результат урока:


Вторая часть закончена. Подпишитесь на рассылку (кнопка справа), если не хотите пропустить последнюю: в ней будет удобная топология и подготовка модели для игрового движка.

Посмотрите готовые игровые ассеты, сделанные с помощью фотограмметрии.

<Предыдущая часть

Удачных сканов! :)