Привет всем. Сегодня мы рассмотрим возможность интеграции 3д модели в панорамы 360° от Google, с последующей визуализацией в них, и выкладыванием на ресурсы с их просмотром.
Итог того о чём будет здесь идти речь, можно посмотреть тут:
Заранее прошу прощения если что то не так, ибо это мой первый опыт в написании чего то подобного.
Не для кого не секрет что вписывание в фото, это менее затратная техника, чем моделирование всего пространства. Плюс ко всему, панорамы найти в наше время не стало проблемой. Порой заказчикам нужен просто эскиз, и вписывание в фото лучшее средство. Ну и не забываем про невысоко бюджетные проекты.В данном уроке попытаюсь объяснить методику работы с панорамами. Качество и фотореалистичность зависит уже от навыков архитектурной визуализации. Но некоторые нюансы будут оговорены здесь.
Итак, начнём. Для начала гуглим "street view download 360" и находим ссылкуhttps://svd360.istreetview.com/. Заходим туда и скачиваем программку "Street View Download 360". Устанавливаем её и запускаем. Там всё просто. Там же на странице загрузки идём по ссылке iStreetView.com, там жмякаем кнопку "Continue to the website" и мы попадаем в просмотр карт и панорам. На карте выбираем панораму интересующую нас. Выбираем её и находим её ID.
Открываем программу Street View Download 360.
1. Прописываем путь куда сохраниться панорама.
2. Вставляем её ID
3. Выставляем максимальное разрешение.
4. Скачиваем её.
!!!Теперь сделаю небольшое пояснение по по поводу этих панорам. Панорамы сделанные гугломобилем имеют много недостатков: Есть логотипы гугла, кривые сшивки автоматические и прочие недостатки. Лучшие панорамы с гугла заливаются обычными людьми. Разница в них думаю понята. Обозначение их на карте можно увидеть на скрине.
По поводу панорам от Google Street View. При просмотре улиц, существует возможность смотреть более ранние снимки.
Допустим вы выбрав место, недовольны качеством и освещением последней съёмки. Но просмотрев более ранние фото нашли то что вас устраивает. Как узнать их ID? Всё просто. ID всегда можно достать у "уличных панорам" прямо из ссылки. ID пишется после символов "!1s" и до символа "!" . Выбрав нужное время, всегда можно брать ID и скачивать через программу любую панораму.
Вернёмся к нашей панораме. Разберёмся с масштабом. Открываем вид карты в браузере. Находим точку съёмки панорамы и проводим линейкой с целыми значениями для масштаба.Сохраняем её как текстуру скриншотом.
Далее открываем нашу сцену. Ставим бокс размером исходя из размера нашей линейке со скриншота. В моём случае это 200 метров. Далее создаём плоскость с размером нашего скриншота. У меня он 843х1041 пикселей. Я создаю плоскость 84300 х 104100 в миллиметрах. В общем, главное сохранить пропорции с текстурой. Далее создаём материал и цепляем на него наш скриншот-текстуру и масштабируем плоскость по нашему боксу и линейки. Материалу делаем прозрачность, что бы в дальнейшем видеть наш фон во вьюпортах. Для удобства масштабирования, можно пивот поставить в начало линейки на текстуре.
Тут на GIFках показано подробнее
Создаём камеру в центре координат и на высоте примерно человеческого роста. !!!Внимание. Камера никогда не должна выходить из центра координат. Далее создаём текстуру с нашей панорамой для Environment Map в редакторе материалов. Зеркалим её (Tiling U: -1). Помещаем в слот для фона в Environments и устанавливаем её фоном во вюьпорте (Views - Viewport background - Environment background). Выставляем значения угла обзора камеры, для большего обхвата вида и смещение отображения по вертикали.
Далее уже начинается шаманство небольшое:
Уточняем расположение нашей камеры:
Делаем это направляя Target камеры (Камера должна быть начале координат) на объекты на плане-текстуре, и смотрим на вид из камеры с панорамой. Двигаем положение нашего плэйна если нужно. Абсолютной точности не получится. Кстати не забываем о том, что панорама и текстура "карта" может отличаться из за разницы во времени. Например у меня уровень воды в озере.
Тут на GIFках показано подробнее:
Теперь можно располагать модели. Вот тут уже чистый шаманизм. Точных объяснений уже дать не получится, ибо всё индивидуально. В помощь есть текстура карта. Не забываем о высоте камеры объектов относительно её. Передвигаем Target камеры и "подбиваем" модели. Тут уже играем воображением. Для примера я полез на 3ddd и купил когда то пару хороших моделек от concept61 и 3d-andrew и разместил их.
Подробно о настройках архитектурной визуализации не буду, благо в интернетах полно информации. Остановлюсь лишь на моменте освещения сцены HDRI. Для начала находим хдрку с похожим небом и высотой расположения солнца. Ещё нужно иметь превью этой HDRI который мы вставим взамен нашему фону панораме. Для этого вначале мы отметим расположение солнца на нашей панораме. Из вида камеры направим её Target на место где солнце.
Тут на GIFках показано подробнее:
Далее в редакторе материалов открываем превью нашей HDRI и заменяем им нашу панораму, поместив в слот для фона в Environments. В редакторе материалов меняем параметры карты значения Offset U, двигая солнце как можно ближе к "точке солнца панорамы", которая отмечена у нас Target-ом. После этого уже назначаем на фон уже HDRI карту и ставим ей значение Offset U от предыдущей карты. Итак, у нас теперь солнце HDRI на том же месте что и солнце на панораме. По желанию можно назначить на отражения материалов стекла карту с панорамой.
Тут на GIFках показано подробнее:
Так как HDRI внизу "земля" скорей всего не будут похожи на землю нашей панорамы (у меня вообще чёрный цвет), создаю фэйковую поверхность цветом нашей "земли", что бы падающий свет от неё дал нужный тон моделям. В моём случае я создал плоскость ниже модели белого цвета, имитирующую снег, и исключил её в Proprietis - visible to camera. Но всё же лучше находить HDRI максимально похожую с панорамой по цветовым тонам. Я специально не стал подбирать, дабы показать принцип.
Ещё у меня есть объекты попадающие в воду. Я создал модель воды с волнами и расставил в нужных местах соприкосновения. В дальнейшем в постобработке можно будет слить её с существующим изображением. Отражение на данном материале я назначил картой панорамой.
Далее настраиваем камеру: Переводим камеру в режим Spherical 360. Ставим Target камеры так, что бы он по Y был равен 0, а по Z (высота) был равен высоте, на которой стоит наша камера. Y выставляем в ноль для того, что бы рендер наших объектов совпадал с нашей панорамой при слиянии их в слоях при постобработке. Иначе придётся накладывать фрагментами.
Ставим разрешение рендера такое же как и наша панорама. Не забываем в обязательном порядке сохранять наш альфа-канал. Ну и собственно рендерим. После уже собираем всё в фотошопе. Добавляем тени... ну вы знаете думаю что и как. Ну и собственно получаем результат.
Если рендер идёт очень тяжко, или вовсе не начинается (например в связи с малым объёмом оперативы), то можно рендерить частями с помощью Crop или Region.
Результат после объединения в Фотошопе нашего рендера и панорамы выходит таким:
Назначая на фон нашу готовую панораму в пустую сцену 3ds Max-а, можно вытаскивать за пару минуту такие рендеры
Далее загружаем уже полученную панораму для её просмотра, на различные сайты по вашему усмотрению.
Я для примера залил на kuula.co
Ну и повторю результат https://kuula.co/post/7Y1fb
Всем Спасибо!. Надеюсь кому нибудь пригодиться. Понимаю что много ещё нюансов, но тема достаточно широкая, и я постарался затронуть основные.
Постараюсь ответить на все ваши вопросы.