Джефф Лестер работал над созданием визуальных эффектов для игры Far Cry 4. Публикуем перевод материала, в котором Джефф подробно рассказывает, как можно заставить исчезнуть тигра.
В мире Шангри-Ла из Far Cry 4 многие вещи превращаются в пыль. Например мой приятель Тигра.
Или, как пошутил Макс Сковилл в своем видео, «из тигра сыплется кокаин». Думаю, лучше не смотреть это видео на работе: лично я не смог удержаться от хохота.
Я не принимал участия в создании «порошковых» визуальных эффектов, над этим работала команда экспертов: Триша Пенман, Крэг Алгуайр и Джон Ли. В Шангри-Ла очень много спецэффектов, и, нужно сказать, ребята постарались на славу.
Моей задачей было сделать так, чтобы тело тигра постепенно растворилось в воздухе. Весь процесс длится всего пару секунд, так что можно было особо не заморачиваться.
Прототип
Первым делом я набросал прототип в Unity3D, используя ресурсы из библиотеки Modo:
Я нарисовал черно-белую маску для альфа-канала и обработал ее пороговым методом (по аналогии с корректирующим слоем «Изогелия» в Photoshop). Края альфа-канала слегка размыты: в этой зоне я добавил повторяющуюся огненную текстуру. Не буду вдаваться в подробности, потому что эта техника стара как мир, и в интернете можно найти много обучающих материалов о ее использовании в Unity/UE4. Как оказалось, похожий прием применяется в игре для создания эффекта сгорания плакатов, поэтому я решил его позаимствовать, чтобы не копаться в шейдерах самому.
Причем здесь каньоны?
Для детализации карт я использовал инструмент World Machine. В итоге мне пришлось сделать около тридцати черно-белых карт для эффекта рассеивания на разных объектах.
Рабочий процесс
В качестве примера возьму модель вортигонта из Half-Life. Я давно собираюсь довести ее до ума, но всё время откладываю на потом, а так от нее будет хоть какая-то польза. Во-первых, для большинства ассетов я сделал грубый набросок черно-белой маски в Modo:
Затем я экспортировал его в World Machine в виде карты высот и добавил эрозию:
Готовую карту потока я перенес обратно в Photoshop и наложил ее поверх исходной черно-белой маски, добавив эффект Noise. После быстрой настройки в UE4 вот что получилось:
Не произведение искусства, но для десяти минут работы очень даже ничего. Прорисовка маски на важных объектах может занять больше времени, но конечный эффект длится всего пару десятков кадров, так что большинство можно оставить как есть.
Усовершенствование и автоматизация
По-моему, намного удобнее сгенерировать маску в Houdini, чем рисовать ее вручную.
• Задать цвет вертексов, с которых должно начинаться рассеивание.
• Использовать solver для распределения значений вертексов в каждом кадре (или в текстурном пространстве).
• Разнообразить переход на основе нормалей и гладкости поверхности (как вариант).
• Заодно можно сделать эрозию или другой аналогичный эффект.
Впрочем, на такой простой эффект не нужно тратить слишком много времени. Можно попробовать добавить внутрь объектов какой-нибудь объемный эффект (хотя здесь лучше проконсультироваться с графическим программистом).
Другие примеры
Я проделал то же самое практически для всех персонажей, за исключением нескольких (ОСТОРОЖНО: СПОЙЛЕР!), включая гигантского босса-орла, которыми, насколько я помню, занимались Нильс Майер и Стив Фабок. Не считая моего приятеля Тигры, вот еще несколько примеров:
Цепь для колокола
Если присмотреться, можно заметить, что звенья цепи исчезают одно за другим. Сделать это оказалось непросто: использованный материал не поддерживал 2 UV-канала, а все звенья были развернуты к одному месту в текстуре (что абсолютно логично). К счастью, материал позволял изменить тайлинг маски по UV-координатам по отношению к другим текстурам. Таким образом, мы сделали стек из UV-оболочек звеньев в UV-пространстве:
Итак, маска рассеивается по мере того, как значение V переходит от нуля к единице. Если бы у нас было 15 звеньев, нам нужно было бы разделить этот процесс на 15 шагов для всех карт (Diffuse, Normal, Roughness), оставив одиночное повторение текстуры маски. За создание ассетов для цепи отвечал Эдвин Чан, и я мог бы попросить его настроить всё вручную в 3ds Max. Но я и так частенько дергал его насчет настройки молитвенных барабанов, и это было бы уже слишком. У колокольной цепи было 3-4 конфигурации, по несколько уровней детализации для разных платформ в каждой. Поэтому я написал MAXScript для упаковки всех UV-координат в допустимый диапазон. Для такого быстрого эффекта я проделал достаточно много работы, но это того стоило.
Драгоценные камни для лука
Хоть эти камешки не вышли точь-в-точь, как было задумано, я остался доволен результатом. Излучающий материал не поддерживал параметр Threshold для альфа-канала. Поэтому в меше было 2 слоя: светящийся и несветящийся. Что интересно, исчезает как раз таки несветящийся слой, и по мере его рассеивания на поверхности выступает свечение. Немного запутанно, но результат налицо.
В мире Шангри-Ла из Far Cry 4 многие вещи превращаются в пыль. Например мой приятель Тигра.
Или, как пошутил Макс Сковилл в своем видео, «из тигра сыплется кокаин». Думаю, лучше не смотреть это видео на работе: лично я не смог удержаться от хохота.
Я не принимал участия в создании «порошковых» визуальных эффектов, над этим работала команда экспертов: Триша Пенман, Крэг Алгуайр и Джон Ли. В Шангри-Ла очень много спецэффектов, и, нужно сказать, ребята постарались на славу.
Моей задачей было сделать так, чтобы тело тигра постепенно растворилось в воздухе. Весь процесс длится всего пару секунд, так что можно было особо не заморачиваться.
Прототип
Первым делом я набросал прототип в Unity3D, используя ресурсы из библиотеки Modo:
Я нарисовал черно-белую маску для альфа-канала и обработал ее пороговым методом (по аналогии с корректирующим слоем «Изогелия» в Photoshop). Края альфа-канала слегка размыты: в этой зоне я добавил повторяющуюся огненную текстуру. Не буду вдаваться в подробности, потому что эта техника стара как мир, и в интернете можно найти много обучающих материалов о ее использовании в Unity/UE4. Как оказалось, похожий прием применяется в игре для создания эффекта сгорания плакатов, поэтому я решил его позаимствовать, чтобы не копаться в шейдерах самому.
Причем здесь каньоны?
Для детализации карт я использовал инструмент World Machine. В итоге мне пришлось сделать около тридцати черно-белых карт для эффекта рассеивания на разных объектах.
Рабочий процесс
В качестве примера возьму модель вортигонта из Half-Life. Я давно собираюсь довести ее до ума, но всё время откладываю на потом, а так от нее будет хоть какая-то польза. Во-первых, для большинства ассетов я сделал грубый набросок черно-белой маски в Modo:
Затем я экспортировал его в World Machine в виде карты высот и добавил эрозию:
Готовую карту потока я перенес обратно в Photoshop и наложил ее поверх исходной черно-белой маски, добавив эффект Noise. После быстрой настройки в UE4 вот что получилось:
Не произведение искусства, но для десяти минут работы очень даже ничего. Прорисовка маски на важных объектах может занять больше времени, но конечный эффект длится всего пару десятков кадров, так что большинство можно оставить как есть.
Усовершенствование и автоматизация
По-моему, намного удобнее сгенерировать маску в Houdini, чем рисовать ее вручную.
• Задать цвет вертексов, с которых должно начинаться рассеивание.
• Использовать solver для распределения значений вертексов в каждом кадре (или в текстурном пространстве).
• Разнообразить переход на основе нормалей и гладкости поверхности (как вариант).
• Заодно можно сделать эрозию или другой аналогичный эффект.
Впрочем, на такой простой эффект не нужно тратить слишком много времени. Можно попробовать добавить внутрь объектов какой-нибудь объемный эффект (хотя здесь лучше проконсультироваться с графическим программистом).
Другие примеры
Я проделал то же самое практически для всех персонажей, за исключением нескольких (ОСТОРОЖНО: СПОЙЛЕР!), включая гигантского босса-орла, которыми, насколько я помню, занимались Нильс Майер и Стив Фабок. Не считая моего приятеля Тигры, вот еще несколько примеров:
Цепь для колокола
Если присмотреться, можно заметить, что звенья цепи исчезают одно за другим. Сделать это оказалось непросто: использованный материал не поддерживал 2 UV-канала, а все звенья были развернуты к одному месту в текстуре (что абсолютно логично). К счастью, материал позволял изменить тайлинг маски по UV-координатам по отношению к другим текстурам. Таким образом, мы сделали стек из UV-оболочек звеньев в UV-пространстве:
Итак, маска рассеивается по мере того, как значение V переходит от нуля к единице. Если бы у нас было 15 звеньев, нам нужно было бы разделить этот процесс на 15 шагов для всех карт (Diffuse, Normal, Roughness), оставив одиночное повторение текстуры маски. За создание ассетов для цепи отвечал Эдвин Чан, и я мог бы попросить его настроить всё вручную в 3ds Max. Но я и так частенько дергал его насчет настройки молитвенных барабанов, и это было бы уже слишком. У колокольной цепи было 3-4 конфигурации, по несколько уровней детализации для разных платформ в каждой. Поэтому я написал MAXScript для упаковки всех UV-координат в допустимый диапазон. Для такого быстрого эффекта я проделал достаточно много работы, но это того стоило.
Драгоценные камни для лука
Хоть эти камешки не вышли точь-в-точь, как было задумано, я остался доволен результатом. Излучающий материал не поддерживал параметр Threshold для альфа-канала. Поэтому в меше было 2 слоя: светящийся и несветящийся. Что интересно, исчезает как раз таки несветящийся слой, и по мере его рассеивания на поверхности выступает свечение. Немного запутанно, но результат налицо.