Коллеги,
Ниже - продолжение перевода статьи на Ronen Bekerman - Making of Rumyantsevo Park . В первой части речь шла о технологии туров и об экстерьерной части проекта. В продолжении речь пойдет об интерьерной части проекта, создании уникального вида из окон для целого ЖК и немного о постобработке. Надеемся вам будет интересно!
С уважением,
Команда Biganto Visual
Для тех кто не смотрел первую часть статьи - предлагаю ознакомится, а лучше изучить оригинал . Но всё таки скажу два слова о проекте: Румянцево, это проект по визуализации жилого комплекса на востоке Москвы, основная прелесть которого - доступ ко всем интерьерам и экстерьерам с помощью виртуальных туров:
Теперь собственно к переводу статьи:
Интерьеры
Для сборки интерьеров мы использовали мастер-сцены с одобренными заказчиками моделями, декором и материалами. Меши и материалы в них оптимизированы для ускорения рендера и удобства работы.
Семнадцать сотен квартир это много, но и создавать сцену под каждую из них не требуется. Для каждой из 88 уникальных планировок мы создали сцену с одними и теми же элементами внутри. Туры, созданные по этим уникальным планировкам мы можем раскопировать в нашем web-интерфейсе чтобы создать столько квартир, сколько требуется. На первый взгляд, собирать 88 одинаковых сцен с разными стенами достаточно рутинная задача, но настоящий вызов начинается, когда нужно создать уникальный и корректный вид из окон для каждой квартиры:
Первая проблема это масштаб - для каждой квартиры есть около десятка панорам с видимыми окнами, т.е. в конечном счете речь идет об обработке тысяч изображений (и эту цифру нужно удвоить т.к. для каждой квартиры есть вариант с мебелью и без).Вторая проблема - архитектура данного объекта: квартиры с одинаковой планировкой расположены в разных секциях здания на разных этажах.
Ручной труд однозначно не выход в данной ситуации. В конечном итоге мы выбрали подход, основанный на скриптах и некоторых “трюках” в 3d Max и Fusion.
Первый шаг это получить правильные рендеры экстерьера, чтобы в дальнейшем подставить их в альфа канал интерьеров. Чтобы это сделать мы использовали анимированную по сплайну камеру. Камера использует точку сплайна для каждого кадра, точки расположены внутри здания, недалеко от окон. Один сплайн покрывает все квартиры отдельно взятой планировки (из 88-ми), каждая точка соответствует одной квартире. Вертексы расположены в строгом порядке, это будет важно в дальнейшем при совмещении изображений.
Наша камера в интерьерах всегда смотрит на “север”, т.е. чтобы получить совпадающие кубмапы мы поворачиваем камеру вместе с позицией окна. Камера также повернута на 90 градусов по часовой стрелке чтобы компенсировать разницу между кубмапами в VRay (использовался для интерьеров) и Corona (экстерьер). Таким образом с помощью альфа канала и совпадающих кубмап мы можем простым наложением объединить интерьеры и вид из окон. Corona sun также привязана к положению камеры чтобы достичь похожего вида из окон в каждой квартире и упростить постобработку.
Тем не менее, недостаточно просто просчитать вид из окон с точек, полученных с помощью данной камеры. Нам нужен только вид из окон, без какой либо прилегающей геометрии из экстерьерной сцены. Чтобы убрать её, мы использовали opacity в материале здания:
Для начала мы создали дополнительную карту Output для быстрого доступа к opacity каждого sub material в Multi/Sub материале здания. Вместо того чтобы вручную подключать эту ноду в opacity каждого из 20+ субматериалов, мы использовали скрипт “Slate Connector”. Данный инструмент не идеален, но подходит для этой конкретной задачи. Следующий шаг - создать маску чтобы opacity влияла на прозрачность только прилегающей к камере геометрии. Ключевой элемент здесь это геометрия, привязанная к положению камеры, и Corona distance. Изменяя эту дополнительную геометрию мы получаем полный контроль над тем, какая часть фасада здания будет исключена из рендера.
В результате этих операций мы получили последовательность (sequence - секвенцию) уникальных видов из окон для этой конкретной планировки (нода “Exterior (LD)” во Fusion).
Следующая задача - добавить вид из окон в панорамы интерьеров для данной планировки, для чего мы использовали Fusion и некоторые скрипты. Основная идея - использовать timeline во Fusion чтобы автоматически совместить Последовательность 1 (Exterior - серия уникальных видов из окон) с Последовательностью 2 (“Interior (LD)”, серия интерьерных панорам).
Используя функцию “Loop” для исходных секвенций и замедляя экстерьерную последовательность относительно интерьерной мы создаем общий timeline, в котором Fusion сначала обрабатывает всю секвенцию с интерьерами для первого кадра из экстерьеров, потом для второго, третьего и т.д., как простое математическое действие умножения (например 28 кадров интерьера x 9 кадров экстерьера). Мы написали скрипт, который рассчитывает насколько необходимо замедлить экстерьеры в зависимости от количества кадров в обеих последовательностях, создает папки и сохраняет в них соответствующие изображения.
Это может звучать сложно и было непросто выстроить весь процесс, но в итоге пайплайн оказался весьма удобным. Более наглядно в схемах ниже:
Также в схеме выше присутствуют ноды для замены неба в виде из окон и ноды для постобработки. Т.к. мы используем более или менее одинаковое освещение для всех интерьеров и экстерьеров (видов из окон) эти ноды универсальны и могут использоваться для всех квартир.
Используя этот подход мы смогли сократить задачу по обработке нескольких тысяч изображений до нескольких простых действий:
1. Расставить сплайн для камеры в экстерьерной сцене
2. Подождать пока посчитаются рендеры
3. Указать пути к файлам полученных секвенций и данные для скрипта (импорт из Excel в нашем случае)
4. Оценить правильный вид из окон для всех квартир этой планировки
5. Повторить 87 раз для всех остальных планировок
Постобработка
Есть несколько моментов, которые надо учитывать относительно постобработки:Во первых, технически довольно мало ограничений в редактировании изображений когда речь идет о кубмапах. Само собой, все правки на швах панорамы будут видны в туре в виде странных искажений (поэтому нельзя использовать виньетирование в 3d max и подобные эффекты). Тем не менее, с помощью определенных нодовых систем во Fusion, Nuke, Natron и похожих редакторах эту проблему довольно просто решить. Основная идея - разбить панораму на шесть отдельных изображений, добавить эффект и собрать панораму заного.
Во вторых, для естественного вида каждый кадр в туре должен иметь приблизительно одинаковую постобработку. Это просто вопрос здравого смысла - если на кухне яркое солнце, соседняя комната не должна быть освещена лунным светом(если вы не хотите достичь какого-либо сюрреалистичного эффекта конечно). Процесс постобработки весьма похож на редактирование видеоряда, поэтому вышеупомянутые редакторы наиболее удобны для обработки множества изображений одновременно. В остальном постобработка не слишком отличается от работы с обычными изображениями. Для промо материалов (например Румянцево) мы обычно делаем базовую постобработку: коррекция цвета, баланса, шарп, контраст.
На этом всё! Как только все элементы тура подготовлены, мы наконец можем собрать тур и сгенерировать код для его интеграции в сайт заказчика или другой ресурс. Это не сложнее, чем вставить видео с YouTube или другой медиа контент. Надеемся это было интересное чтиво для вас!