На данном этапе самое время  скачать и загрузить замечательный бесплатный инструмент для работы с облаками точек (и не только), приложение MeshLab вот отсюда.

Инсталируйте следуя инструкциям установщика.

Мы возьмем два полученных в ходе шагов выше файла и создадим текстурированный, чистый, высокополигональный меш. MeshLab также автоматически сгенерирует UV-развертку и создаст текстуру основываясь на наиболее четких пикселях с каждой фотографии, что конечно же безумно круто;) В результате мы получим два файла:

  • Файл .obj, с UV-разверткой, который легко может быть экспортирован в любой 3д пакет для дальнейшего использования.
  • И файл .png произвольного размера, с текстурой.

Когда мы “уплотнили” нашу 3д реконструкцию, VisualSFM экспортировал результат в созданную нами перед запуском данного процесса структуру папок проекта и записал в них файл bundle.rd.out. Последние версии MeshLab поддерживают открытие этих файлов напрямую, так что следующий шаг – открытие проекта там.

Запустите MeshLab. Перейдите в меню File→Open project и укажите путь к файлу bundle.rd.out в каталоге NVM, созданном VisualSFM. Он должен находиться в папке 00 в каталоге с именем проекта, которое вы указали при сохранении. Важно отметить, что MeshLab попросит вас тут же указать файл описывающий локации камер в проекте. Это информация описана в файле list.txt в той же директории.

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

Нажмите на иконку слоев на панели инструментов, чтобы открыть палитру слоев. Здесь мы видим слой с геометрией в правом верхнем углу, и ниже растровые слои.

отображение панели слоев в MeshLab

Выберите в строке меню Render → Show Camera. Это отобразит плоскости всех камер во вьювере. Масштаб визуализации камер по умолчанию слишком велик по сравнению с размерами нашего меша, поэтому нажмите на треугольник рядом с надписью «Show Camera», которая появилась на нашей боковой панели со слоями:

раскрывающееся меню Show Camera

Изменим размер в окошке Scale Factor в моем случае я установил значение 0.0001.

измененение размера визуализации камер во вьювере

Убедившись в том что камеры импортированы и установлены правильно, отключите отображение камер в меню Render → Show Camera.

Далее следует заменить слой с геометрией в палитре слоев на слой с “плотным мешем” полученным нами в VisualFSM. Для этого выделим слой с геометрией в палитре слоев справа и выберем Delete Current Mesh в контекстном меню.

удаление слоя с геометрией  в MeshLab

Затем импортируем наш “плотный” меш в проект MeshLab выбрав File → Import Mesh, и указав путь к сгенерированному  PMVS файлу .ply, лежащему в папке models в корневой директории проекта.

импорт в проект плотного меша

На данный момент мы должны получить достаточно плотное облако состоящее из растровых слоев вкупе с загруженным “уплотненным” мешем.

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

инструменты выделения и удаления вершин

выделенные точки перед удалением

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

Выберите в строке меню Filters → Point Set → Surface Reconstruction: Poisson. В открывшемся диалоговом меню установите значения на основе которых будет сгенерирована поверхность (экспериментальным путем определите оптимальные значения) , жмите Apply, и идите заварите себе чаю :)

запуск реконструкции поверхности

По завершении вычислений сгенерированный меш помещен на новый слой с геометрией.

результат реконструирования поверхности

 

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

просмотр спроецированного изображения на геометрию

Следующий шаг – создание UV развертки. Выбираем Filter → Texture → Parameterization from registered rasters , оставляем значения по умолчанию и жмем Apply.

Сохраняем проект и полученный меш.

И последний этап создание текстуры из спроецированных на геометрию изображений и экспорт из MeshLab.

Для этого идем Filter → Texture → Project active rasters color to current mesh, filling the texture, устанавливаем разрешение будущей текстуры, указываем ей имя и жмем Apply.

результат применения автоматического текстурирования

Вуаля! Перед нами текстурированная полигональная модель, полученная из серии снимков и все что осталось, это экспортировать ее в поддерживаемом всеми 3д пакетами формате из приложения для дальнейших манипуляций. File → Export Mesh.

полученная в итоге модель

Не сказать что я восхищен результатом, однако, уверен, при известном старании (и количестве отснятых кадров;)) можно получить вполне приемлемый результат!

Полученную таким образом модель можно использовать для чего угодно, разумеется предварительно обработав молотком и напильником;)

модель импортированная в Blender

 

Одна мысль о «Фотограмметрия — генерация меша в MeshLab»

  1. Упоминания: Фотограмметрия - облако точек VisualSFM - 3drewwviwer

Комментарии закрыты.