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

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

rwisbkrzzhlt_bda_xycg6pmsx4.png

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

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

p2-sl4d88_nicl0n-xp9-0nxrdg.jpeg

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

w37jx_6wp_veesbn3kfrh3tdyba.png
yywo61cqljspbmio2jglfbtoo6w.png

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

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

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

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

Методика работы с аддоном BLAM:

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

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

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

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

axcebfwa3afy0tv4rw9tdxvbm7i.png

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

p4vxsn4_lrhuqc1ssvf7kinyace.png

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

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

vaflc9_pzrrh8ew1ricd_hcxiv8.png

0b00hyhdvpvc3gznipvkh1mwbge.png

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

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

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

veeaxs5_wxmlhtpsuposyhnuavm.png

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

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

racs3moioeggea7mvzsdbkbe1j4.png

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

f_k1wlllzl2ourqlk-pqivtq7ty.png

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

fucvai0blykaje1mq01yl7_4rva.png

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

47vf-jpu_oyhjkc-fu3vkx01v6i.png

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

uqn_csfhzmzsgjpkyebed3kolvk.png

y4ejt0uo_wnylqkqnxf_zrlckow.png

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

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

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

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

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

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

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

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

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

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

А если вам понравился пост, я с удовольствием расскажу о втором проекте. Которым занимаюсь сейчас. Он оказался сложней, т.к. мало фотографий, но там я применил некоторые приёмы, достойные упоминания.

© Habrahabr.ru