Making of Rumyantsevo Park - перевод, часть 2
biganto 8333

Коллеги,

Ниже - продолжение перевода статьи на 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 или другой медиа контент. Надеемся это было интересное чтиво для вас!

Biganto Visual

Комментарии (12)

0
Valentin_K
Интересно! Спасибо!
У вас одна рендер-ферма справляется с объёмом, или их несколько?
+1
biganto
Пожалуйста! Ферма в целом справляется (там несколько машин), но это же всё равно делается не один день для такого проекта. Если измерять в интерьерах - трудностей с просчетом нескольких объектов в день нет.
+1
Al-make
Шикарный проект и интересное описание процесса работы, очень увлекает.
+3
End-of-ray
Спасибо!
Очень интересный проект!
Из всего впечатлил больше всего ваш движок. Напоминает по-возможности Google Street View... Действительно в данном случае есть определенные преимущества в такой презентации с помощью такого движка. Любые игровые движки требуют много ресурсов для вычислении компютера на стороне клиента и обычно такие презентации остаются, например лишь частью экспозиции какой-нибудь выставки. В данном случае Вы сделали определенный прорыв, предоставив возможность клиенту через браузер почти полноценно прогуливаться по виртуальному пространству без необходимости загружать сложные сетки с текстурами. Не могли ли бы Вы расказать немного о вашем движке тоже и как в двух словах проходит процесс собирания виртуального тура?
Благодарю!
0
biganto
Вам спасибо за отзыв! Основные преимущества подхода вы и сами заметили - не требует железа для просмотра, смотрится в вэб и т.д. Добавлю только что в производстве это всё быстрее и проще чем при использовании realtime движков.
По самому движку вкратце было в первой части статьи, если есть конкретные технические вопросы - что смогу отвечу, лучше в личке пожалуй. Еще было обсуждение здесь:https://3ddd.ru/forum/thread/show/biganto_virtualnye_3d_tury_svoia_tekhnologiia 
Сборка тура - по сути загрузка активов в движок, у нас всё реализовано в Web интерфейсе. После этого тестирование и добавление всяких "плюшек", вроде переходов в другие туры, подписи к мебели и т.п.
0
tulnev39
Комментарий удален
0
tony_black
Молодцы очень эффективная работа и система). А если не секрет какие железы на машине стоят??))
+2
biganto
Секрета как такового нет, но по фермам - не скажу, надо специально смотреть, сейчас нет возможности. Там стоят многопроцессорные фермы, не помню уже. Рабочие машины у нас в основном с Ryzen7-3,4Ghz/GTX1070Ti
0
tony_black
Ясно спасибо я тоже как бы именно такую собираю себе домой)))
ASUS ROG Strix X370-F GAMING
EVGA GeForce GTX 1070 Ti SC GAMING
AMD Ryzen 7 1800X
TOSHIBA HDD 2TB
SSD Kignston 240GB SA400
GSkill 32GB (16x2) 3200Mhz
DeepCool Maelstrom 240T
Aerocool KCAS-800W 80PLUS, BOX
Case Aerocool Cylon
0
biganto
Если кому-то актуально, то 26 числа в Москве будем рассказывать о технологии и этом проекте вживую. Кому интересно - присоединяйтесь! https://biganto.timepad.ru/event/745390/ 
0
3dramiz
Здравствуй!
Прежде всего, спасибо за внимание!
Не могли бы вы сделать этот блог в видео?
Думаю, это будет более интересно и понятно.
0
Skap
Комментарий удален