Industry

Книга мертвых: Фотограмметрические активы, деревья, VFX

ZDRAVKO PAVLOV / UNITY TECHNOLOGIESContributor
Jun 15, 2018|13 Мин
Книга мертвых: Фотограмметрические активы, деревья, VFX
Эта веб-страница была переведена с помощью машинного перевода для вашего удобства. Мы не можем гарантировать точность или надежность переведенного контента. Если у вас есть вопросы о точности переведенного контента, обращайтесь к официальной английской версии веб-страницы.

В этой серии блогов мы рассмотрим все аспекты создания нашей демоверсии "Книги мертвых". Сегодня мы сосредоточимся на фотограмметрических активах, деревьях и VFX. Это четвертый блог из этой серии, посмотрите два предыдущих блога, в которых рассказывается о создании персонажей и концепт-арта из "Книги мертвых".

Здравствуйте, меня зовут Здравко Павлов, я CG и VFX художник с опытом работы в VFX, видеокомпозитинге, монтаже, графическом дизайне. Я работаю в команде Unity с 2014 года и участвовал в создании различных частиц, динамики жесткого тела и симуляции ткани в демоверсиях "Деревня викингов", "Кузнец" и "Адам".

Демо "Book Of The Dead" было немного другим. Для меня это была совершенно новая территория, поскольку моя роль в этом проекте заключалась в создании различных объектов окружения с помощью фотограмметрии. Фотосъемка на природе - мое хобби, поэтому я с радостью взялся за такое задание. Создавать деревья? Ведь это так сложно, правда? В следующем блоге я постараюсь описать все, что узнал на этапе подготовки и разработки проекта.

Рабочий процесс фотограмметрии

К счастью, на данный момент в Интернете полно ценной информации об этом процессе, так что именно с этого момента началось мое обучение. В большинстве статей говорится, что вам нужна любая зеркальная фотокамера с 50-миллиметровым объективом. В тот момент у меня не было ни одной из них, поэтому я решил провести первые тесты с помощью 24-мегапиксельной беззеркальной камеры Sony a7II с зум-объективом 16 мм-35 мм. И позвольте мне сразу же сказать вам, что это работает просто замечательно! Более широкий объектив дает больше искажений, но вы всегда можете исправить это, например, в Lightroom, но на самом деле лучше этого не делать! Программное обеспечение для фотограмметрии прекрасно справляется с этим. Прайм-объективы более жесткие и теоретически должны давать более четкое изображение. Они действительно хороши, если вы сканируете в контролируемой студийной среде, и я настоятельно рекомендую использовать их в таких сценариях. Однако в полевых условиях умение правильно кадрировать нужный объект с помощью качественного зум-объектива даст вам преимущество.

Изображение
Изображение
Изображение
Изображение
Изображение
Изображение

Я опробовал большинство популярных программ для фотограмметрии, и некоторые из них работали довольно хорошо. Я выбрал RealityCapture из-за его значительно более высокой производительности и возможности обрабатывать большое количество фотографий, не расходуя при этом оперативную память. Количество деталей, которые ему удается восстановить по фотографиям, просто поражает! Мне удалось получить модели, иногда достигающие 185 миллионов треугольников, и успешно экспортировать геометрию в формат PLY.

Изображение
Изображение

Этого, конечно, более чем достаточно, но и немного экстремально. Большинство моих реконструкций в итоге составили примерно от 50 до 90 миллионов треугольников. Сначала я использовал GF980TI, но позже перешел на GF1080, что дало небольшой прирост производительности.

В какой-то момент я также обновил свою камеру до 42-Мп Sony aRII с объективом Planar T* FE 50mm f/1.4 ZA. Однако удвоение разрешения и использование превосходного сверхчеткого объектива не дало мне ожидаемых результатов "WOW". Во-первых, более длинный (и узкий) основной объектив означает, что вам придется сделать несколько шагов назад, чтобы получить перекрытие изображения, необходимое для успешной реконструкции. Это не всегда возможно, когда вы находитесь в центре леса, среди других деревьев, кустарников и всего остального. Это также означает, что вам придется управлять, хранить и обрабатывать в два раза больше гигабайт данных об изображениях. Но это не обязательно приведет вас к сканам с более высоким разрешением. Больше снимков - это то, что вам нужно, а 24 Мп - это более удобный вариант. Это может показаться очевидным, но мне это не приходило в голову, пока я не попробовал это на собственном опыте.

Изображение

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

Не многие программы могут обрабатывать такое количество полигонов, поэтому я просто сохранил файл и использовал функции децимации RC для создания низкополигональной версии той же модели. Обычно около 1 миллиона треугольников. И его можно открыть в ZBrush, MeshLab или любой другой программе для моделирования, где его можно ретопологизировать и развернуть. В зависимости от модели я использовал разные техники для ретопологии. Часто ZRemesher, а иногда вручную.

Изображение
изображение
Изображение

Затем я использовал xNormal для запекания текстур. xNormal, похоже, не беспокоят сотни миллионов треугольников, и он легко справляется с ними. Я запек диффузную текстуру, используя информацию о цвете вершин. Плотность вершин в highpoly была более чем достаточной для создания чистой и четкой текстуры без интерполяции между вершинами. Я никогда не использовал встроенные в RC функции разворачивания и текстурирования.

Тем не менее, если по какой-то причине плотное облако недостаточно плотное или в нем отсутствуют некоторые участки (как на изображении ниже), проецирование текстуры с ваших фотографий может придать этим участкам дополнительную детализацию.

Изображение

Большинство учебников по фотограмметрии учат вас тому, что при сканировании объекта лучше избегать прямого, резкого освещения и теней. Если речь идет о небольшом камне, который вы собираетесь запечатлеть, его можно отнести в тень или даже в студию и использовать софтбоксы и поворотные столы. Но с деревьями так не получится, поэтому я следил за прогнозом и надеялся на облачную погоду. Однако даже в пасмурную погоду в кадре присутствовали тени и окклюзия. Эта проблема решается с помощью инструмента Unity DeLighting. Все, что для этого нужно, - карта нормалей, изогнутая карта нормалей и запеченная AO. Он сохраняет диффузные значения, удаляя тени.

Изображение

Полученные активы были импортированы в Unity для тестирования динамического освещения и шейдеров.

Изображение
Изображение
Изображение

Бывают случаи, когда просто невозможно запечатлеть все детали модели. Либо есть препятствие, и вы не можете охватить все углы. Иногда вы торопитесь или у вас садится аккумулятор, и вы что-то упускаете, а потом не понимаете, пока не придете домой и не начнете обрабатывать данные. Я совершил много подобных ошибок, но потом мне удалось спасти часть своей работы, используя Substance Painter для клонирования штампа и попытки исправить недостающие данные.

Фактические игровые активы

На протяжении большей части съемок "Книги мертвых" в штате команды Demo не было художника по окружению, и мы искали его. Часть работы была поручена внешнему художнику по окружению Тихомиру Няголову, который сделал первые наброски и белую коробку окружения, но основная нагрузка легла на креативного и арт-директора Веселина Ефремова и меня. Каждый из нас отправлялся в близлежащие леса, чтобы получить данные фотограмметрии, и работа естественным образом переходила в создание необходимых игровых активов. У меня нет опыта работы с окружением, и у меня не было опыта работы с оптимизацией игр, LOD и т.д. На тот момент у Тихомира уже было несколько деревьев, созданных с помощью GrowFx, и я взялся за дело, обучаясь на ходу.

GrowFX оказался действительно мощным и универсальным инструментом для создания всевозможной растительности. Он взаимодействует с другими объектами в сцене, что позволяет добиться уникальных и естественных результатов. Он не совсем предназначен для создания игровых активов, но достаточно управляем и может быть использован для этой задачи. Это плагин для 3DS Max. Я являюсь пользователем 3DS Max уже более 20 лет и чувствую себя в нем как дома. К сожалению, GrowFX опирается на некоторые устаревшие компоненты 3DS Max, такие как диалоги редактирования кривых, которые не очень удобны, но все же это был хороший инструмент для решения поставленной задачи, поэтому мне пришлось с ним смириться.

изображение

Лес в Book of the Dead должен был быть преимущественно хвойным. Рядом с моим домом есть несколько красивых лесов и парков, поэтому я отправился на "охоту" и отсканировал некоторые из них. Затем я приступил к пришиванию своих творений GrowFX к отсканированным моделям. Финальный ствол дерева был создан из отсканированной геометрии и уникальной текстуры для нижней части, пришитой к процедурно сгенерированному стволу с плиточной текстурой для остальной части, вплоть до верхушки.

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

Одно дело - фотограмметрия камней и стволов деревьев, но сканирование сосновых иголок - это совершенно новое дело. Именно здесь на помощь пришла компания Quixel, предоставившая нам свои великолепно отсканированные атласы. Они сотрудничали с командой демоверсии и сделали множество мелких активов, таких как трава, кустарники, мусор и т.д., специально созданных для "Книги мертвых".

Как я уже упоминал в начале, мой опыт связан с CG-продакшеном, и я уже делал большие леса, используя Multiscatter или Forest Pack Pro и рендеринг в V-ray. В таких задачах можно использовать атласы Quixel Megascans в их нынешнем виде, но для такого проекта в реальном времени, как "Книга мертвых " , нам потребовалось провести некоторую оптимизацию. Она включала в себя создание крупных элементов (ветвей, верхушек деревьев и т.д.) и их компоновку в новые текстуры, передачу исходных отсканированных данных для карт нормалей, смещения, передачи и так далее.

Изображение
Изображение

Существующие нормальные данные Megascans были слегка изменены, чтобы создать впечатление фальшивого общего объема.

Заголовок
Изображение

Я использовал различные техники редактирования нормалей, такие как Normal Thief и другие пользовательские скрипты 3DSMax, чтобы смешать ветви со стволом.

Изменение нормалей вершин, чтобы они сливались со стволом

Используя этот подход, я смог создать разные виды сосен.

Изображение
Изображение
Ветер

Мы хотели, чтобы лес был "живым", и ветер был для нас важным элементом. Деревья были настроены для анимации ветра на основе вертексных шейдеров нашим художником по окружению Джулиеном Хеймансом (Julien Heijmans).

Существует множество различных способов создания векторного поля, и я рассмотрел несколько вариантов. Будучи знакомым с решателем жидкостей PhoenixFD от Chaosgroup, я решил посмотреть, какие полезные данные можно из него получить, и перенести их в Unity. Я смог экспортировать геометрию сцены, перенести ее в 3DS Max в формате FBX и пропустить через нее жидкость, которая закручивается вокруг растительности и создает эффект турбулентного ветра. Большие деревья заслоняли более мелкую растительность, и эффект от них был менее заметен.

Изображение
Изображение

Я зациклил смоделированную последовательность, используя встроенные элементы управления воспроизведением PhoenixFD.

Затем векторная информация была считана через PhoenixFD Texmap, нормализована и вставлена в качестве диффузной текстуры на процедурно созданную изоповерхность.

Изображение
Изображение

Затем последовательность отрендеренных изображений была импортирована в Unity, где был собран финальный атлас текстур. Раньше я делал это в After Effects, но теперь в Unity есть очень удобный инструмент Image Sequencer, который может делать это практически автоматически. Это один из новых инструментов VFX, который разрабатывается командой GFX Unity в Париже.

Изображение

Созданный атлас текстур был помещен в сцену. Я создал простую рамку для определения границ моделирования и использовал ее в качестве опорной точки.

Для ясности, это был эксперимент, который позволил нам расширить визуальную составляющую некоторых кадров в кинематографическом тизере, который мы показали. Этот метод я могу порекомендовать, если вы используете Unity для создания фильмов. Он подключается к основному процедурному решению для анимации ветра на основе вертексных шейдеров, которое было разработано для проекта нашим техническим руководителем Торбьорном Лаэдре и использовалось в большинстве сцен тизера, а также в консольной версии проекта, которую мы показали на GDC.

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

Заголовок
Улей

Я начал блокировать некоторые идеи об Улье еще в самом начале.

изображение
Изображение

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

Изображение
изображение
изображение
Шурупы

Для тех, кто любит винтики, я немного поработал над вариациями тела. Я снова использовал программу PhoenixFD от Chaosgroup и провел симуляцию жидкого дыма. Затем я вырезал винтообразную форму и создал изоповерхность на основе температуры жидкости

Некоторые исследования форм, выполненные с помощью PhoenixFD

Этот метод позволил нам быстро просмотреть различные формы, и он был использован в качестве общего эталона. Финальная модель персонажа была создана Пламеном (Пако) Тамневым, и вы можете прочитать об этом в его невероятно подробной записи в блоге.

Эффект капающего сока

Чтобы получить капающий сок на лице винтика, я снова использовал PhoenixFD. Я начал с того, что сделал небольшую пробную версию, демонстрирующую возможности и то, чего мы можем добиться с помощью густой вязкой жидкости.

изображение

Я был вполне доволен общим результатом и плавностью движений, поэтому приступил к созданию реальной модели. Цель заключалась в том, чтобы предотвратить образование слишком большого количества разрозненных кусочков и капель при моделировании.

Изображение

Это позволило мне получить один кадр из сгенерированной последовательности геометрии, ретопологизировать его, сделать UVs и с помощью WRAP3 спроецировать его на остальные фигуры в последовательности. В результате у меня получилась серия фигур наложения, использующих одну и ту же топологию.

изображение

Я также попробовал провести симуляцию сока по некоторым стволам деревьев.

Изображение
изображение
Изображение

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

---

Следите за следующей статьей в блоге. Вместе с Джулиеном Хеймансом мы углубимся в изучение искусства окружения, созданного для Book of the Dead .

Встречайтесь с нами в Unite Berlin 19 июня, чтобы самим пройтись по окружению Book of the Dead на консоли и посетить презентацию Джулиена Хейманса об искусстве окружения в демоверсии. Полное расписание смотрите здесь.

Дополнительная информация о книге мертвых