Разбор
April 1, 2019

Презентация сцены в Marmoset Toolbag с использованием фотограмметрии

Перевод разбора создания маленького проекта в marmoset toolbag с использованием фотограмметрии (неожиданно, после такого-то емкого названия). Приятного чтения!

ВВЕДЕНИЕ

Всем привет! Меня зовут Cian O’Reilly, я 3D Artist из Дублина, Ирландия. У меня за плечами больше 18-ти лет опыта работы в различных игровых и телевизионных проектах Англии и Ирландии. Я люблю изучать разные интересные штуки вне работы.

В последнее время я хотел получше разобраться в фотограмметрии. Так и возник мой проект ‘Unsinkable’, о котором я хотел бы сегодня рассказать.

ПРОЦЕСС ФОТОГРАММЕТРИИ

Это были мои первые шаги в фотограмметрии, так что я не рассчитывал на какой-то супер хороший результат. Мне хотелось посмотреть на основные моменты и уловить суть. После короткого ресерча, мне показалось, что “посканить” камни будет хорошей идеей. Но потом я вспомнил про свой давний интерес - Титаник. Последние пару лет я вручную создавал модель обломков Титаника, а в частности секцию Stern. Так что мой выбор пал на неё. В качестве софта я выбрал триальную версию Agisoft Photoscan. Он не очень сложный и в интернете есть куча туториалов к нему +офф мануал.

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

Как только вы запустите Photoscan, вы сразу же можете загрузить свои фотографии в Workflow lab. Они загрузятся в специальное поле, а дальше следуйте пошаговому туториалу, который объяснит как запустить процесс создания скана. Программа сопоставляет предыдущие кадры с последующими для того, чтобы построить облако точек на основе изображений. Sparse Cloud нужен только для создания этого облака, сам меш создается в другом софте. На изображении выше видно процесс создания скана моей модели с загруженными и выровненными фотографиями. Все подходящие фотографии помечаются зеленой галочкой.

Как я уже писал выше, Sparse Point Cloud необходим только для создания облака точек, которое в дальнейшем нужно пропускать через Dense Point Cloud. В окне настроек вы можете задать параметры качества для модели, в зависимости от которых также будет меняться и время обработки. Стоит поэкспериментировать чтобы найти баланс между качеством и временем на обработку.

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

Итак, мы дошли до момента создания модели. Тут всё довольно таки легко, просто нажмите кнопку “Build Mesh”. Далее методом проб и ошибок нужно будет подобрать баланс в детализации так, чтобы не убить важные детали и не потратить очень много времени в ожидании результата. Там много разных настроек и лучше посмотреть их все перед запуском процесса. На картинке вы видите сгенерированный меш на 10 млн треугольников. Это не финальная версия, так что я не особо волновался по поводу качества сетки и полигонажа. Накинув vertex color я понял, что результат меня вполне устраивает и перешел к следующему шагу - созданию текстур.

На этой картинке видно обломок корабля с уже назначенными текстурами. Тут также всё очень просто. Заходите в workflow, нажимаете build textures и настраиваете нужные параметры(разрешение, формат и тд.). В моем случае я сделал четыре текстуры с разрешением 4096. Развертка создается автоматически и не всегда корректно, но в данном случае всё было приемлемо.

С помощью Pro-Optimizer удалось скинуть поликаунт до 2.2 млн треугольников. После создания текстур я был готов приступать к экспорту и оптимизации модели в 3d’s max. Стоит помнить, что при оптимизации модели существует риск повредить UV развертку, так что нужно быть осторожным. Сразу после этого у меня наконец появилась возможность испробовать Marmoset. Я сделал в photoshop roughness и normal карты на основе той albedo, которую сгенерил при сканировании. Дальше я выставил модель под нужным углом в 3d's max и экспортировал её в fbx формате в Toolbag. На картинке выше вы можете видеть финальную версию меша после оптимизации и настройки в 3ds max.

ПРЕЗЕНТАЦИЯ В MARMOSET TOOLBAG

Следующим этапом была презентации в Marmoset Toolbag. Это был шаг в неизвестность и меня довольно сильно удивило то, насколько просто было освоить программу. Также интересно было наблюдать, как Marmoset пережевывает мою модель на 2 млн трисов и двенадцать 4к текстур(4 normal map, 4 roughness map, 4 albedo map). Чтобы облегчить cебе жизнь, я уменьшил разрешение roughness и albedo карт с 4к до 2к.

Для своей сцены я выбрал пресет освещения Berlin Underpass, включил GI и настроил Occlusion Detail и Voxel Resolution. На верхней картинке показано то, как выглядела сцена, когда я настроил всё из вышеперечисленного.

Мне хотелось создать ощущение, будто зритель действительно находится на дне океана, так что я добавил характерную дымку. Также я добавил свет от прожектора, которым освещали этот обломок при первом погружении. Для этого я использовал направленный сверху Spotlight. На картинке выше видно как выглядит результат работы со светом. Пришлось значительно уменьшить уровень освещения в сцене, чтобы картинка была больше похоже на кадры со дна океана. Изначально я планировал сделать фон абсолютно черным, но от этой идеи также пришлось отказаться в угоду создания эффекта затухания краев корабля в толще воды в зависимости от дистанции. Я не мог решить как мне дальше улучшать картинку, так что я сделал оверпейнт в фотошопе.

Проанализировав результат я решил, что будет классно, если я добавлю симуляцию частиц, которые будут плавать туда-сюда перед камерой. Так как в Marmoset Toolbag нет своего инструментария для симуляции частиц, то лучше всего сделать это в Maya/3ds Max, конвертировать в animated geometry и загрузить всё это дело в Toolbag. Мне попался классный туториал, в котором показали как это сделать в Maya с использованием nParticles и скрипта для конвертации, так что мой выбор пал на них. Немного о работе скрипта... он конвертирует каждую частицу в отдельный меш с текстурой и альфа каналом. Нужно учитывать, что такое количество геометрии с альфа каналом сильно нагружает обработку сцены, так что тут не стоит перебарщивать.

Дальше я анимировал камеру. Интерфейс для создания анимации в Toolbag очень похож на максовский и точно будет понятен тем, кто пользовался Graph Editor в Maya.

Вот так выглядит весь сетап симуляции в Maya, черный шейп - это Emitter Plane. Я отскейлил его так, чтобы он перекрывал модель титаника и настроил для него высокую плотность частиц.

На картинке выше видна моя сцена в Toolbag с уже добавленными партиклами. Частиц не очень много и летят они не очень плотно, но я всегда могу сдублировать их прямо в Marmoset.

Дальше нужно было засетапить раму и окно субмарины, через которое мы будем вести наблюдение. Вся модель была создана в 3d's max и, как и большая часть проекта, изначально не входила в мои планы. Как только я закончил создавать иллюминатор для субмарины, я понял, что было бы классно сделать её полную модель. В качестве главного референса я выбрал DSV Alvin, субмарину на которой было совершенно первое пилотируемое погружение к Титанику в 1986 году.

Вот так выглядит макет иллюминатора, к которому я позже прикрепил анимированную камеру.

Я решил отрендерить вьюпорт субмарины в Toolbag с альфа каналом отдельно, после чего наложить его через overlay в After Effects и добавить эффекты размытия. Перед началом рендера в marmoset нужно было добавить Alvin’а в сцену, настроить материалы, освещение и анимацию. Что касается материалов, я создал текстуру для надписей, а для самой субмарины настроил простенький материал в marmoset. Также я добавил прожектор на фронтовую часть субмарины. После создания анимации, Alvin был полностью готов к рендеру.

На картинке сверху можно увидеть, как выглядела сцена перед рендером. Настройки рендера справа, настройки камеры слева. Я не заморачивался сильно с настраиванием рендера и света, так как понимал, что всё равно буду допиливать всё в After Effects. Сцена рендерилась двумя пассами, базовое видео и отдельно вьюпорт субмарины, который позже накладывался поверх основной картинки (как .tga 32bit альфа секвенция).

Также в конце я добавил ещё один источник света сверху для того, чтобы сымитировать вспышку камеры и придать большей достоверности кадру. Такая вспышка используется в камерах при погружениях. Она фотографирует каждые 8 секунд. На этом я закончил в marmoset и следующим шагом была постобработка в After Effects, во время которой я довел картинку до её финального вида.

ЭТАП ПОСТОБРАБОТКИ

Во-первых я добавил больше частиц в кадр с помощью “snow system”. Также я выполнил цветокоррекцию. Следует уточнить, что цвет ржавчины при таком освещении отображается не совсем корректно, так что я добавил голубой и зеленый фильтры, чтобы сделать ржавчину менее красной. Ещё я добавил зернистости картинке, чтобы придать некоторой старины кадрам. Позже я добавил механические звуки и звуки океана в видео, что также заметно улучшило общее ощущение от всего видео. Ну, и конечно же, я наложил поверх видео рамку с иллюминатором от субмарины и немного размыл её.

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

Дальше автор рассказывает как классно использовать marmoset toolbag и надеется на то, что вам всем понравился разбор его проекта. Мне показалось, что вам будет довольно интересно почитать об этом и я надеюсь, что вам понравился перевод.

Я вырезал всё лишнее (на мой взгляд) из статьи, так что если вы хотите прочитать полную версию, вот оригинал.

Буду благодарен, если при обнаружении каких-то ошибок в тексте, вы сообщите о них мне. Спасибо!

P.S

Чтобы видеть переводы раньше всех - подписывайтесь на телеграм канал - https://t.me/CGTranslate

Все советы, предложения и критику присылайте в мою личку телеграма @DenisNik или на почту [email protected]

Перевод был подготовлен в рамках проекта CgTranslate.

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