Найти тему
4kkGames

Фотограмметрия. Автопортрет в 3D. Может каждый.

Построение всего по 2 фотографиям. Да, можно и так. Но в статье рассмотрен более простой способ.
Построение всего по 2 фотографиям. Да, можно и так. Но в статье рассмотрен более простой способ.

В прошлой статье я очень кратко описал, что такое фотограмметрия на примере создания текстуры для персонажа в игре The Pharody / Цэ Пародья. А сейчас хочу продолжить тему и поведать процесс создания модели в домашних условиях.

Если ты дока в 3Д моделировании, то эта статья точно не для тебя. Закрой ее! Дальнейшее прочтение может понизить твои высокие чувства и испортить настроение. Ведь я не профи. Но мне очень хотелось попробовать.

Существует анекдот, дескать, любая инструкция должна начинаться со слов «Ну что, поломал!». Жизненно, но не совсем точно. Теорию я заблаговременно изучил. Иначе, как бы я додумался до такого эксперимента? Т.е. условную инструкцию я читал. Но умудрился нарушить ее по всем пунктам, замутив полнейшую отсебятину. Назовем это творческим экспериментом.

Итак. Понеслось. Что там в инструкциях говорится? Начинайте с простых примитивных объектов, типа игрушечного кубика. Ну, да, щаззъ! Кубик, это ж так скучно. Сходу, с напора, будем оцифровывать человеческую тушку, не меньше!

Первое. Нужны фотокамеры. Штук 100. Расположенные по кругу / сфере вокруг объекта сканирования. И нейтральный, т.е. без лишних «шумов» фон. А что было у меня? Зеркалка. Камера старенькая, но качественная. Возможно именно поэтому эксперимент не провалился.

Не все так печально. Это всего лишь мем.
Не все так печально. Это всего лишь мем.

Еще одна ошибка / нарушение инструкции. Фон в домашних условиях сами понимаете, не однотонный. Программы по 3D реконструкции с трудом справляются с поиском точек на разных фотографиях с пестрящим фоном, появляется шум и даже посторонние объекты.

Я пришвартовался на стуле, а моя супруга сделала несколько десятков снимков вкруговую. Не так красиво и ровно, как на схеме ниже, но с шагом градусов этак 10, не больше.

-3

Далее. Нужен был соответствующий софт. В моем случае я рассматривал исключительно бесплатное ПО. Халява, сэр!

Мой выбор пал на Zephyr. По очень простой причине. Другие программы не понимали железо сборки 2009 года и хныкали на тему, ой, а твоя видюха то совсем [censored]. А Зефирка работала и не жаловалась. Хотя процесс протекал не гладко.

Облако точек. По ним программа пытается понять форму модели. Частично это получается.
Облако точек. По ним программа пытается понять форму модели. Частично это получается.

Первые несколько попыток были провальными. Но все есть опыт. Я более-менее понял принципы 3д оцифровки и даже приспособился под скорость обработки. Все просто. Запускаешь программу вечером и смело идешь баиньки. Утром смотришь на результат. Иногда приходится откатывать и начинать заново. И так несколько дней. Ведь процесс реконструкции объекта по снимкам проходит не в один этап.

Все, что удалось выжать из программы. Дальше шумы надо убирать в 3D редакторе
Все, что удалось выжать из программы. Дальше шумы надо убирать в 3D редакторе

Про эти этапы особо рассказывать не хочу. Программа сама подсказывает, что делать. Шаг 1, 2, 3… Сперва строится так называемое облако точек. Точек программа найдет много и не все они нужны. Нужно очистить от лишних, оставив только точки, принадлежащие целевому объекту. По этим точкам выстраивается высоко полигональная модель. В конце создаются текстуры.

Да, криво. Тогда я смутно представлял процесс создания сетки.
Да, криво. Тогда я смутно представлял процесс создания сетки.

На этом фотограмметрия заканчивается. А если мы хотим использовать полученную модель, например, в игровом движке? Тогда нужны доработки. Уменьшение полигонов (ретопология), оптимизация развертки и запекание текстур. Однако, «оживление» персонажа, это уже другая тема.

-7

Вот финальный персонаж, которого я вставил в игру. Демоверсия игры в открытом доступе. Скачать можно здесь.