Как стать автором
Обновить

Методика реконструкции утраченных зданий по фотографиям

Open source *Работа с 3D-графикой *Графический дизайн *
Tutorial
Привет, Хабр! Хочу поделиться опытом воссоздания трехмерной модели моей школы, которая сгорела несколько лет назад. Я расскажу о методике работы с фотографиями, как подогнать перспективу виртуальной камеры под снимок. Как облегчить задачи моделирования. И постараюсь сделать это не скучно даже для человека далёкого от 3Д.



Однажды, мой приятель Алексей Ляпин kaiwas показал способ, как при помощи бесплатного аддона BLAM для blender-а можно по фотографии подогнать ракурс и поле зрение 3D камеры, чтобы их перспективы совпадали. Тогда я «загорелся» идеей восстановить школу, и понял, что эта методика поможет.

Фотографий со школой, сделанных с разным освещением и погодой было достаточно, покрытие здания фотоснимками было около 95%, даже нашлись два снимка с самолёта. Это радовало. Большая часть цифровые, которые я сам снимал. Часть набрана из соцсетей. Были так же и фотокарточки, снятые еще на плёнку. Собрал всё в одну папку и стал разбираться.



Много мелких фотографий, спрятаны под спойлер
Для кого-то это здание покажется унылой сельской «деревягой» и это понятно, ведь вас с ним не связывает ничего. Но согласитесь, размеры и конструкция впечатляет, учитывая, что оно целиком создано из бруса.





Фото с самолёта.




Видеоролик кратко поведает об истории здания. Я специально сделал неторопливый, размеренный монтаж, т.к. ориентировался на взрослую аудиторию. Жаль, что ютуб как-то пережал видео и появился неприятный эффект «дёрганой» анимации. Увы, как есть.


Летом, крыльцо школы было нашим излюбленным местом сбора. Оно выполняло роль общественного пространства для школьников и студентов. Вечером туда приходили «тусить» и знакомиться. Играть на гитаре и бухать пиво.

Мне запомнился школьный период с теплотой, а со зданием связано много добрых воспоминаний. Несколько раз снился сюжет, словно возвращаюсь домой и заглядываю в гости в школу. Иногда она была причудливо искажена, по логике мира сна, её восстанавливали и дорабатывали… Что-то во мне томилось. Не давало покоя. И захотелось её самому взять и нарисовать.
Методика работы с аддоном BLAM:

  1. Открыть фотографию в окне клипов блендера;
  2. Нарисовать четыре опорные линии, которые должны попарно находиться на разных слоях Grease pencil, плагин один слой трактует как ось X, другой как Y;
  3. Линии необходимо ориентировать по прямоугольным объектам в кадре. По граням или заметным границам;
  4. Потом нужно нажать кнопку на панели плагина и камера в сцене может встать хаотичным образом ориентированной по отношению к точке отсчета.
  5. А после всего нужно долго и уныло подгонять один ракурс к другому…

Кстати, тут возникает довольно серьезное ограничения метода: здание должно содержать прямоугольные элементы, и снятые с хорошо видимой перспективой...



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



Короче, я не вижу смысла вас этими подробностями утомлять, т.к. автор плагина в итоге сделал отдельное приложение. В котором работа стала наглядней и приятней.

Называется fspy. Программа кроссплатформенная, бесплатная, воплощает редкий случай легковесных, лаконичных утилит. Еще она эстетично выглядит, от сайта до UI. Пользоваться одно удовольствие. Супер!



Обратите внимание на пару важных нововведений. Появился белый маркер с тройкой векторов. Это отметка центра мира. При импорте в blender в месте маркера будет расположен нулевая точка мировых координат.



Вторым значимым нововведением стала возможность отметить эталонное расстояние по одной из осей. Если в кадре присутствует объект известного размера это означает, что вы получите точное положение камеры, отстоящей на физически корректное расстояние от центра мира (маркера).

Сохраняем файл и импортируем в blender. Внимание, для возможности импорта файлов fspy нужно поставить в блендер аддон от того же автора. При импорте создается камера через которую будет видна выбранная фотография. Если все сделанно верно, камера будет ориентирована правильным образом, можно сразу начинать моделлить. Для этого следите, чтобы оси одинаковых цветов на разных фотографиях смотрели в одну сторону.





Теперь, задача сводится к приятному и интуитивному обрисовыванию деталей фасадов. Примерно как в детской раскраске. Этап выравнивания поначалу мне казался адской рутиной. Но позже стал чем-то вроде сборки трёхмерного паззла. Когда уже интуитивно чувствуешь перспективу и размеры, можно совмещать с прослушиванием кастов.

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

Большим подспорьем стал спутниковый снимок, я не помню точно откуда именно этот скриншот. Но сейчас карты обновились. И школы уже на них нет.



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

После создания габаритной коробки следовала кропотливая работа, типа прорисовывания проводов, снега, крылечек.



А к табличке применена техника «экстракции текстуры», мне нужна была она без перспективного искажения. Получил и перерисовал в векторе:



Березы нарисовал вручную в технике low-poly. Вообще я не ставил целью фотореализм, мне хотелось передать настроение игрушечности или мультфильма.



Затем захотелось добавить еще какой нибудь визуальной «вкусноты» и я дополнил сцену надписями, сделанными старым школьным шрифтом для остроконечного пера. Целый день выводил буковки. Да, кстати, всё делал в блендере. Он обладает огромными возможностями.



Я хотел опубликовать пост в ВК на новогодних каникулах и почти неделю безвылазно корпел над анимацией, двигая ключи и рисуя эффекты. А еще пришлось позалипать над созданием искристого материала снега, был получен бесценный опыт. Впрочем, как и от остальных работ над проектом.





Окончательный ролик рендерился около четырёх часов, на реалтайм движке eevee, на видеокарте 550ti. У меня был внутренний челлендж оформить работу так, чтобы не пришлось возиться ни с какими видеоредакторами. Нажал кнопку и получил финальный результат (уже со звуком). И блендер дал такую возможность.

Для тех, кто дочитал, бонус: фотографии с пожара. Фотограф: Ларин Владимир.

Вид со стороны главного входа (ракурс как вначале видеоролика).



Упавшие по диагонали двора провода. Слева видим наполовину сгоревшую пристройку со входом. На втором этаже была библиотека. Её окна над головой пожарного.



Вид на внутренний угол, где был вход. Со двора. На переднем плане Л-образная опора ЛЭП, которая стоит у въезда в мастерскую. Стены уже почти потеряли очертания. Никто из людей не пострадал.



Вид места происшествия утром. Слышал байку, что пар и дым, остатки стен источали еще неделю… За правдивость не ручаюсь. Наблюдал подобный пожар, тоже происходивший зимой. Здания раза в три меньшего, чем школа. И действительно, пепелище дымило и пахло несколько дней.

Кстати, процесс горения таких объемов дерева выделяет много тепла. От излучения может оплавиться краска на соседних домах и потемнеть кора стоящих неподалёку деревьев. На фото выше этот эффект тоже можно наблюдать. Березы порыжели от обугливания жаром.


Результат и оценка людей меня порадовали. Почти 10k просмотров ролика (в контакте) около 300 репостов. Благодарности от учителей, друзей и от незнакомых людей в личку.

Спасибо за внимание!

P.S. если вам не безразлично архитектурное наследие нашей страны старайтесь фотографировать старые здания со всех сторон и делиться ими в интернете, возможно кому-то эти фотографии очень помогут.

А если вам понравился пост, я с удовольствием расскажу о втором проекте. Которым занимаюсь сейчас. Он оказался сложней, т.к. мало фотографий но там я применил некоторые приёмы, достойные упоминания.
Теги:
Хабы:
Всего голосов 46: ↑46 и ↓0 +46
Просмотры 7.7K
Комментарии Комментарии 24