Syntidata
Главная / Блог / 3D-моделирование / Фотограмметрия: как получить 3D-модель реального предмета

Фотограмметрия: как получить 3D-модель реального предмета

3D-моделирование

Фотограмметрия превращает набор обычных фотографий в трёхмерную модель с текстурой. Рассказываем, как снимать, обрабатывать результат и когда этот способ лучше моделирования вручную.

Фотограмметрия: как получить 3D-модель реального предмета

Что такое фотограмметрия

Фотограмметрия — метод восстановления трёхмерной формы объекта по набору его фотографий, сделанных с разных точек. Идея знакома каждому: два глаза видят предмет под немного разными углами, и мозг оценивает расстояние. Программа делает то же самое, только с десятками или сотнями кадров и с геометрической строгостью.

Результат — 3D-модель в виде полигональной сетки (mesh) с текстурой, снятой с реального предмета. Для задач компьютерного зрения это важный источник: можно быстро получить точную копию реального объекта и затем использовать её в 3D-моделировании и визуализации, расставляя в тысячах сцен с разным светом, фоном и ракурсами.

Фотограмметрия особенно хороша, когда нужно воспроизвести сложную органичную форму: изделие ручной работы, деталь с износом, упаковку с потёртостями, растение, грунт. Моделировать такое вручную долго, а результат выглядит хуже, чем снятая реальность.

Как это работает внутри

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

  1. Поиск особых точек. На каждом снимке находятся устойчивые детали, отличимые от соседних: углы, пятна, узоры.
  2. Сопоставление. Одинаковые точки ищутся на разных кадрах. Чем больше совпадений, тем надёжнее результат.
  3. Восстановление положений камер. По совпадениям программа вычисляет, откуда снимали каждый кадр, и строит разреженное облако точек. Этот шаг называют структурой из движения.
  4. Плотное облако. Для каждой области считается глубина, и облако становится плотным: миллионы точек.
  5. Построение сетки. Облако превращается в поверхность из треугольников.
  6. Текстурирование. Цвета с фотографий проецируются на сетку и собираются в текстурные карты.

Из описания ясно главное требование: у соседних кадров должно быть большое перекрытие, а на поверхности должны быть детали, за которые можно зацепиться.

Как снимать: практические правила

Качество модели на девяносто процентов определяется качеством съёмки. Хорошую обработку не спасёт плохой исходный материал.

Оборудование

Подойдёт зеркальный или беспроводной фотоаппарат, а для небольших предметов даже современный смартфон. Важнее не мегапиксели, а резкость и стабильные настройки. Что желательно:

  • фиксированное фокусное расстояние (не меняйте зум по ходу съёмки);
  • закрытая диафрагма для большой глубины резкости, чтобы в фокусе был весь предмет;
  • низкая чувствительность для минимального шума;
  • съёмка в RAW или хотя бы в максимальном качестве без агрессивной обработки;
  • штатив и поворотный стол для небольших предметов.

Схема съёмки

Для небольшого предмета типичная схема такая: вращаем предмет на столе и делаем кадр через каждые 10–15 градусов, то есть 24–36 кадров на оборот. Затем повторяем с двух-трёх высот камеры: сверху под углом, на уровне предмета, снизу под углом. Для крупных объектов обходим их вокруг с нескольких ярусов.

Правила перекрытия: соседние кадры должны пересекаться минимум на 60–70 процентов. В сложных местах (отверстия, углубления, выступы) снимайте больше кадров с близких расстояний. Хороший итог для небольшого предмета — от 80 до 200 фотографий.

Свет

Свет должен быть мягким и равномерным. Резкие тени и блики на разных кадрах лежат в разных местах и сбивают сопоставление. Идеальный вариант — лайтбокс или рассеянный свет от больших софтбоксов. На улице лучше всего подходит пасмурный день. Если нужны чистые текстуры без «запечённых» теней, используют кросс-поляризацию: поляризационные фильтры на источнике и объективе убирают блики.

Что не получается и как с этим бороться

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

Тип поверхностиПроблемаЧто делать
Блестящий металл, глянецБлики перемещаются, точки не сопоставляютсяМатирующий спрей, кросс-поляризация, рассеянный свет
Прозрачное стекло, пластикВидно то, что за предметомМатирующее покрытие или моделирование вручную
Однотонные гладкие поверхностиНет деталей для привязкиВременные маркеры, пятна, скотч с узором
Очень тонкие элементы, проволока, волосыСетка слипается или пропадаетРучная доработка геометрии
Подвижные и мягкие объектыФорма меняется между кадрамиЖёсткая фиксация или многокамерная одновременная съёмка

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

Софт и этапы обработки

На рынке есть как платные, так и бесплатные решения. Из открытых популярно семейство Meshroom, из коммерческих — RealityCapture, Metashape и другие. Выбирать стоит по трём критериям: объёму памяти видеокарты, скорости на вашем количестве кадров и качеству экспорта текстур. Для регулярной работы с большим числом объектов важна возможность пакетной обработки через командную строку или скрипты, чтобы встроить её в конвейер.

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

  1. Удалить лишнее: опору, куски фона, шумовые «капли» вокруг предмета.
  2. Закрыть дыры в сетке, там, где не хватило кадров.
  3. Выровнять модель: поставить в начало координат, повернуть правильной стороной вверх.
  4. Задать масштаб в реальных единицах.
  5. Выполнить ретопологию, то есть создать лёгкую сетку с аккуратной разводкой полигонов.
  6. Запечь детали высокополигональной модели в карты нормалей.
  7. Очистить текстуры от теней и бликов (деливинг).

Шестой пункт важен для массового рендера. Сырая модель из фотограмметрии может содержать миллионы треугольников, а для генерации тысяч кадров нужны лёгкие модели. Подробнее об оптимизации под массовый рендер написано в материале об оптимизации 3D-моделей.

От скана к материалу

Главная ошибка начинающих — оставить «запечённый» цвет как есть. Текстура с фотографий содержит освещение, при котором предмет снимали: тени, блики, цветовой оттенок источника. Если поставить такую модель в сцену с другим светом, она будет выглядеть неестественно: тени лежат не там, где должны.

Правильный путь — получить из скана физически корректные материалы: чистый альбедо без освещения, карту шероховатости, карту металличности, карту нормалей. Именно такая модель реагирует на любой свет правильно. Эту тему мы разбирали в статье PBR-материалы и почему от них зависит реалистичность. Для металлов и глянцевых пластиков чаще всего параметры подбирают вручную по справочным значениям, а скан используется только для формы и цвета.

Фотограмметрия и синтетические датасеты

Для проектов с синтетическими данными фотограмметрия выполняет две роли.

Источник объектов. Если заказчик может прислать реальный образец продукции, мы снимаем его, подготавливаем PBR-модель и размножаем в тысячи сцен. Так получаются датасеты для распознавания конкретных изделий: деталей, упаковки, инструментов, продуктов.

Источник окружения. Сканы реальных поверхностей (бетон, доски, ткань, асфальт) дают реалистичные фоновые материалы. Они повышают правдоподобие сцен и уменьшают разрыв между синтетикой и реальностью. Тема разрыва подробно раскрыта в статье Domain gap: как сократить разрыв между рендером и реальностью.

Мы используем фотограмметрию не для всего. Если у заказчика есть CAD-модель изделия, мы работаем с ней: геометрия идеальна, и сканировать нечего. Если объект ещё не существует, моделируем его с нуля. Фотограмметрия нужна там, где есть физический образец, но нет чертежей, либо где важны следы реального износа.

Сколько это стоит по времени

Ориентиры для небольшого предмета при отработанном процессе:

  • съёмка: 15–40 минут;
  • автоматическая обработка: от нескольких минут до часа в зависимости от железа и числа кадров;
  • ручная доработка и ретопология: 1–4 часа;
  • подготовка PBR-материалов: 1–3 часа.

То есть полноценная готовая к рендеру модель занимает полдня работы специалиста. Для одного уникального предмета это нормально. Для сотни разных предметов нужна серьёзная автоматизация и стандартизованная съёмочная установка, иначе проект растянется на месяцы.

Хорошая практика: заводить для съёмки небольшую стандартную станцию с поворотным столом, лайтбоксом, цветовой миской и масштабными метками. Повторяемая установка уменьшает число брака в разы и делает обработку предсказуемой.

Если у вас есть физические образцы, из которых нужно сделать датасет для обучения моделей зрения, напишите нам на [email protected]. Мы оценим, подойдёт ли фотограмметрия, подготовим 3D-модели и покажем результат на тестовом датасете.


Читайте также