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

Что такое фотограмметрия
Фотограмметрия — метод восстановления трёхмерной формы объекта по набору его фотографий, сделанных с разных точек. Идея знакома каждому: два глаза видят предмет под немного разными углами, и мозг оценивает расстояние. Программа делает то же самое, только с десятками или сотнями кадров и с геометрической строгостью.
Результат — 3D-модель в виде полигональной сетки (mesh) с текстурой, снятой с реального предмета. Для задач компьютерного зрения это важный источник: можно быстро получить точную копию реального объекта и затем использовать её в 3D-моделировании и визуализации, расставляя в тысячах сцен с разным светом, фоном и ракурсами.
Фотограмметрия особенно хороша, когда нужно воспроизвести сложную органичную форму: изделие ручной работы, деталь с износом, упаковку с потёртостями, растение, грунт. Моделировать такое вручную долго, а результат выглядит хуже, чем снятая реальность.
Как это работает внутри
Процесс состоит из нескольких этапов, и понимание их помогает понять, почему съёмка должна быть именно такой.
- Поиск особых точек. На каждом снимке находятся устойчивые детали, отличимые от соседних: углы, пятна, узоры.
- Сопоставление. Одинаковые точки ищутся на разных кадрах. Чем больше совпадений, тем надёжнее результат.
- Восстановление положений камер. По совпадениям программа вычисляет, откуда снимали каждый кадр, и строит разреженное облако точек. Этот шаг называют структурой из движения.
- Плотное облако. Для каждой области считается глубина, и облако становится плотным: миллионы точек.
- Построение сетки. Облако превращается в поверхность из треугольников.
- Текстурирование. Цвета с фотографий проецируются на сетку и собираются в текстурные карты.
Из описания ясно главное требование: у соседних кадров должно быть большое перекрытие, а на поверхности должны быть детали, за которые можно зацепиться.
Как снимать: практические правила
Качество модели на девяносто процентов определяется качеством съёмки. Хорошую обработку не спасёт плохой исходный материал.
Оборудование
Подойдёт зеркальный или беспроводной фотоаппарат, а для небольших предметов даже современный смартфон. Важнее не мегапиксели, а резкость и стабильные настройки. Что желательно:
- фиксированное фокусное расстояние (не меняйте зум по ходу съёмки);
- закрытая диафрагма для большой глубины резкости, чтобы в фокусе был весь предмет;
- низкая чувствительность для минимального шума;
- съёмка в RAW или хотя бы в максимальном качестве без агрессивной обработки;
- штатив и поворотный стол для небольших предметов.
Схема съёмки
Для небольшого предмета типичная схема такая: вращаем предмет на столе и делаем кадр через каждые 10–15 градусов, то есть 24–36 кадров на оборот. Затем повторяем с двух-трёх высот камеры: сверху под углом, на уровне предмета, снизу под углом. Для крупных объектов обходим их вокруг с нескольких ярусов.
Правила перекрытия: соседние кадры должны пересекаться минимум на 60–70 процентов. В сложных местах (отверстия, углубления, выступы) снимайте больше кадров с близких расстояний. Хороший итог для небольшого предмета — от 80 до 200 фотографий.
Свет
Свет должен быть мягким и равномерным. Резкие тени и блики на разных кадрах лежат в разных местах и сбивают сопоставление. Идеальный вариант — лайтбокс или рассеянный свет от больших софтбоксов. На улице лучше всего подходит пасмурный день. Если нужны чистые текстуры без «запечённых» теней, используют кросс-поляризацию: поляризационные фильтры на источнике и объективе убирают блики.
Что не получается и как с этим бороться
У метода есть системные слабые места. Знать их заранее важнее, чем уметь пользоваться программой.
| Тип поверхности | Проблема | Что делать |
|---|---|---|
| Блестящий металл, глянец | Блики перемещаются, точки не сопоставляются | Матирующий спрей, кросс-поляризация, рассеянный свет |
| Прозрачное стекло, пластик | Видно то, что за предметом | Матирующее покрытие или моделирование вручную |
| Однотонные гладкие поверхности | Нет деталей для привязки | Временные маркеры, пятна, скотч с узором |
| Очень тонкие элементы, проволока, волосы | Сетка слипается или пропадает | Ручная доработка геометрии |
| Подвижные и мягкие объекты | Форма меняется между кадрами | Жёсткая фиксация или многокамерная одновременная съёмка |
Стоит сказать и про масштаб. Сама по себе фотограмметрия восстанавливает форму с точностью до масштаба: программа не знает, метровый перед ней предмет или сантиметровый. Поэтому в кадр помещают масштабную линейку или маркеры известного размера, либо замеряют реальный размер предмета и масштабируют модель вручную.
Софт и этапы обработки
На рынке есть как платные, так и бесплатные решения. Из открытых популярно семейство Meshroom, из коммерческих — RealityCapture, Metashape и другие. Выбирать стоит по трём критериям: объёму памяти видеокарты, скорости на вашем количестве кадров и качеству экспорта текстур. Для регулярной работы с большим числом объектов важна возможность пакетной обработки через командную строку или скрипты, чтобы встроить её в конвейер.
После автоматической обработки результат почти всегда нужно дорабатывать.
- Удалить лишнее: опору, куски фона, шумовые «капли» вокруг предмета.
- Закрыть дыры в сетке, там, где не хватило кадров.
- Выровнять модель: поставить в начало координат, повернуть правильной стороной вверх.
- Задать масштаб в реальных единицах.
- Выполнить ретопологию, то есть создать лёгкую сетку с аккуратной разводкой полигонов.
- Запечь детали высокополигональной модели в карты нормалей.
- Очистить текстуры от теней и бликов (деливинг).
Шестой пункт важен для массового рендера. Сырая модель из фотограмметрии может содержать миллионы треугольников, а для генерации тысяч кадров нужны лёгкие модели. Подробнее об оптимизации под массовый рендер написано в материале об оптимизации 3D-моделей.
От скана к материалу
Главная ошибка начинающих — оставить «запечённый» цвет как есть. Текстура с фотографий содержит освещение, при котором предмет снимали: тени, блики, цветовой оттенок источника. Если поставить такую модель в сцену с другим светом, она будет выглядеть неестественно: тени лежат не там, где должны.
Правильный путь — получить из скана физически корректные материалы: чистый альбедо без освещения, карту шероховатости, карту металличности, карту нормалей. Именно такая модель реагирует на любой свет правильно. Эту тему мы разбирали в статье PBR-материалы и почему от них зависит реалистичность. Для металлов и глянцевых пластиков чаще всего параметры подбирают вручную по справочным значениям, а скан используется только для формы и цвета.
Фотограмметрия и синтетические датасеты
Для проектов с синтетическими данными фотограмметрия выполняет две роли.
Источник объектов. Если заказчик может прислать реальный образец продукции, мы снимаем его, подготавливаем PBR-модель и размножаем в тысячи сцен. Так получаются датасеты для распознавания конкретных изделий: деталей, упаковки, инструментов, продуктов.
Источник окружения. Сканы реальных поверхностей (бетон, доски, ткань, асфальт) дают реалистичные фоновые материалы. Они повышают правдоподобие сцен и уменьшают разрыв между синтетикой и реальностью. Тема разрыва подробно раскрыта в статье Domain gap: как сократить разрыв между рендером и реальностью.
Мы используем фотограмметрию не для всего. Если у заказчика есть CAD-модель изделия, мы работаем с ней: геометрия идеальна, и сканировать нечего. Если объект ещё не существует, моделируем его с нуля. Фотограмметрия нужна там, где есть физический образец, но нет чертежей, либо где важны следы реального износа.
Сколько это стоит по времени
Ориентиры для небольшого предмета при отработанном процессе:
- съёмка: 15–40 минут;
- автоматическая обработка: от нескольких минут до часа в зависимости от железа и числа кадров;
- ручная доработка и ретопология: 1–4 часа;
- подготовка PBR-материалов: 1–3 часа.
То есть полноценная готовая к рендеру модель занимает полдня работы специалиста. Для одного уникального предмета это нормально. Для сотни разных предметов нужна серьёзная автоматизация и стандартизованная съёмочная установка, иначе проект растянется на месяцы.
Хорошая практика: заводить для съёмки небольшую стандартную станцию с поворотным столом, лайтбоксом, цветовой миской и масштабными метками. Повторяемая установка уменьшает число брака в разы и делает обработку предсказуемой.
Если у вас есть физические образцы, из которых нужно сделать датасет для обучения моделей зрения, напишите нам на [email protected]. Мы оценим, подойдёт ли фотограмметрия, подготовим 3D-модели и покажем результат на тестовом датасете.
Нужен датасет под вашу задачу?
Подготовим тестовую партию изображений с разметкой, чтобы вы могли проверить подход на своей модели. Напишите на [email protected] или оставьте заявку.
Читайте также
3D-моделированиеОсвещение в рендере: HDRI, источники и тени
Освещение определяет, поверит ли модель картинке из рендера. Разбираем HDRI, типы источников, тени и способы варьировать свет так, чтобы датасет охватывал реальные условия.
3D-моделированиеОптимизация 3D-моделей для массового рендеринга
Когда нужно получить не десять красивых картинок, а 50 000 размеченных кадров, каждая лишняя миллисекунда рендера превращается в дни ожидания и счета за вычисления. Рассказываем, как мы готовим модели к массовому производству датасетов.
3D-моделированиеПроцедурная генерация сцен для датасетов
Вручную собрать сто сцен реально, десять тысяч — нет. Процедурная генерация задаёт правила, по которым компьютер сам строит разнообразные сцены. Рассказываем, как это устроено и где подводные камни.