Всем привет!
А вот и следующее видео
с Unreal Fest Online.
Пока я в очередной раз пытаюсь
настроить звук, ставьте
лайк этому видео, подписывайтесь,
и нажимайте на колокольчик
для оповещений о вышедших
видео.
Лекцию читает Райан Брукс,
главный технический художник
Epic Games.
Сегодня мы поговорим о
Fortnite и некоторых способах
использования в нем новых
и будущих функций Unreal Engine
. Мы рассмотрим, каково
использовать некоторые
из этих инструментов для
внесения изменений в мир
Fortnite, и это должно помочь
дать представление о том,
на что они способны.
А в некоторых случаях мы
поговорим о том, как эти
инструменты могут применяться
в разных случаях, помимо
Fortnite.
Давайте перейдем к делу
. Прежде чем мы поговорим
о каких-либо конкретных
инструментах, я хотел бы
поговорить о той роли, которую,
как мы видим, инструменты
играют в целом, и которая
помогает расширить возможности
художников а дизайнеры
воплощают свое видение
в движке.
Таким образом, некоторые
из наших инструментов предназначены
для обеспечения единообразия
и управления скучными вещами,
одновременно оптимизируя
творческий процесс.
Итак, с учетом этого, что
это значит для Fortnite?
Что ж, у Fortnite есть уникальный
набор проблем при разработке,
таких как большой открытый
мир, он часто обновляется,
и мы хотим, чтобы эти обновления
были значимыми.
Карта Fortnite регулярно обновлялась
каждый сезон с первого
по десятый.
Часто большие части острова
были перепроектированы
или изменены на новый тип
биома, такой как снег или
пустыня.
Однако для главы 2 задачи
развития были другого масштаба.
Нам нужно было создать
совершенно новый остров
, решая новые технические
задачи, такие как более
разнообразная местность
с геймплейно-интерактивной
водной системой, и все это
в сроки, не сильно отличающиеся
от одного из наших обычных
циклов сезонных обновлений.
И быстрое заявление об
отказе от ответственности,
что мир Fortnite по-прежнему
создается с любовью вручную
нашими дизайнерами.
Инструменты открытого
мира, представленные здесь,
призваны помочь им более
эффективно воплотить свое
видение в Engine . Итак, мы
начнем с разбивки по темам,
чтобы вам было легче разобраться
в этой записи . Начнем с
пейзажа.
Мы собираемся поговорить
о новой системе виртуального
текстурирования , используемой
в Fortnite, новой системе слоев
ландшафта, новых сплайнах
ландшафта, допускающих
неразрушающее редактирование,
и пользовательских кистях
Blueprint Brushes.
Затем поговорим о новой
системе водоснабжения.
Это новая система, выходящая
на Unreal Engine 4.26, которая позволяет
интегрировать резку местности
и симуляцию жидкости , взаимодействие
игрового процесса, включая
волны и карты потоков.
Далее мы поговорим о том,
как Fortnite использует новый
компонент SkyAtmosphere из Unreal
Engine 4.24 . А также сделаем
краткий обзор грядущей
объемной облачной системы,
которая будет поставляться
с Unreal Engine 4.26.
И, наконец, мы закончим
обсуждением некоторых
общих инструментов редактирования,
которые включают такие
вещи, как размещение объектов
в мире, таких как деревья,
дороги и здания, или разбиение
мира для потоковой передачи
и т.
Д.
Действительно хлеб с маслом
дизайна уровней.
Некоторые из инструментов,
которые мы покажем, доступны
в движке сегодня, другие
все еще находятся в стадии
разработки, но мы хотели
показать некоторые ранние
примеры.
Наша первая категория функций
- пейзаж.
Первое, о чем здесь стоит
поговорить, - это виртуальное
текстурирование во время
выполнения.
Это ни в коем случае не
является строго ландшафтной
функцией, но в Fortnite мы в
первую очередь используем
ее для ландшафтных целей.
Прежде чем перейти к виртуальному
текстурированию, я хотел
бы указать на различие
между двумя совершенно
разными типами систем виртуального
текстурирования в Unreal Engine.
У нас есть как потоковая
VT, так и среда выполнения
VT.
Потоковая VT, с одной стороны,
передается с диска и обычно
экономит память за счет
некоторой производительности.
В настоящее время он не
используется в Fortnite.
С другой стороны, среда
выполнения VT создается
графическим процессором
во время выполнения, и это
экономит производительность
за счет некоторого объема
памяти, и это обычно полезно
для сложных, многоуровневых
материалов.
Теперь он используется
в Fortnite, начиная со второй
главы.
Потоковая передача данных,
которая, как и раньше, в
настоящее время не используется
в Fortnite, по сути, является
способом более детальной
потоковой передачи больших
текстур.
Разные области одной текстуры
могут транслироваться
с разным разрешением.
По сути, это просто настройка
текстуры для ресурсов текстуры
и не требует каких-либо
изменений рабочего процесса
или дополнительных возможностей,
кроме увеличенного разрешения,
которое вы можете загрузить.
С другой стороны, среда
выполнения VT позволяет
различным объектам, включая
статическую сетку и ландшафт,
объединяться в одну виртуальную
текстуру.
Это идеально подходит для
очень дорогих многослойных
материалов или там, где
требуются индивидуальные
эффекты смешивания.
Теперь давайте посмотрим,
как Fortnite реализует виртуальное
текстурирование во время
выполнения.
Первое, что требуется - это
объемы виртуальных текстур
во время выполнения . Это
объемы, которые сообщают
системе виртуального текстурирования
, насколько велика должна
быть каждая виртуальная
текстура в мире.
Теперь, в Battle Royale, поскольку
у нас есть остров лобби
так далеко от главного
острова, мы решили предоставить
ему отдельную настройку
виртуального текстурирования,
чтобы не тратить память
на хранение виртуального
текстурирования там, где
оно нам не нужно.
И второе, что следует отметить,
это то, что у нас фактически
есть два тома на виртуальную
текстуру.
Один - это тип виртуальной
текстуры по умолчанию , который
включает в себя базовый
цвет, нормальный цвет, шероховатость
и секулярность, а другой
- мировая высота, которая
включает мировую высоту
чего-либо внутри виртуальной
текстуры.
Здесь мы видим основной
объем для главного острова,
а затем второй объем для
главного острова, который
включает рельеф и высоту
виртуальной текстуры.
Это подробные сведения
об активе для каждого из
ресурсов виртуальной текстуры
среды выполнения.
Обратите внимание на то,
что слева установлен основной
цвет, нормальный, грубый
и светлый.
Это похоже на установку
упрощенного атрибута материала
в одном активе.
Справа задается мировая
высота, которая дает доступ
к высоте чего-либо в виртуальной
текстуре времени выполнения
для любого материала в
мире, который читает RVT.
Это показывает реализацию
виртуального текстурирования
внутри материала ландшафта.
Слева материал выводится
в виртуальную текстуру
с помощью узла вывода виртуальной
текстуры среды выполнения.
Это то, что фактически рендерится
в RVT, а затем справа виртуальная
текстура дискретизируется
с помощью RVT Sample Target.
Ниже по потоку от этих атрибутов
материала могут возникнуть
любые пользовательские
эффекты наложения.
Например, здесь у нас есть
камень, плавно переходящий
в ландшафт, путем ссылки
как на атрибуты материала
виртуальной текстуры, так
и на высоту RVT.
Это показывает настройку
для получения смешивания
материалов с высотой виртуального
мира текстур во время выполнения.
Сначала мы выбираем мировое
положение, синий канал
или Z, а затем мы выбираем
высоту мира виртуальной
текстуры во время выполнения,
затем просто вычитаем их,
добавляем смещение и делим
на желаемую длину перед
фиксацией этого результата.
Теперь у нас есть альфа,
которую мы можем использовать
для смешивания нескольких
материалов.
На этом слайде показаны
результаты смешивания
дорог с ландшафтом с помощью
виртуального текстурирования.
На этом изображении не
показана геометрия дороги.
Текстура дороги была записана
в виртуальную текстуру
среды выполнения и плавно
сочетается с ландшафтом.
Теперь на этом слайде мы
показываем геометрию дороги
поверх ландшафта.
Это не очень большое изменение,
и фактически оно больше
не нужно для рендеринга.
Единственная причина, по
которой мы сохраняем это,
заключается в том, что столкновение
с дорогой дало более приятные
результаты и ощущение физики
вождения транспортного
средства, и, конечно, если
мы собираемся столкнуться,
нам также нужно согласовать
геометрию.
Это показывает каркас сплайновой
сетки.
Полезная отладка, которую
добавили дизайнеры уровней
в Fortnite, - это возможность
просматривать виртуальную
текстуру времени выполнения
в режиме сравнения с разделенным
экраном.
Это в основном позволяет
выводить как виртуальную
текстуру времени выполнения,
так и исходный материал
с использованием смешивания
разделенного экрана.
Здесь мы визуализируем
сравнение на разделенном
экране.
Слева мы показываем включенную
виртуальную текстуру с
бесшовным смешиванием
с ландшафтом, а справа виртуальная
текстура отключена, показывая
саму геометрию с отдельным
материалом и без бесшовного
перехода.
Давайте продолжим и посмотрим
на различия в сложности
шейдеров при включении
и выключении виртуальной
текстуры.
Итак, мы будем смотреть
на весь остров сверху.
С отключенной виртуальной
текстурой мы видим довольно
высокую сложность шейдера.
Теперь эти красные значения
начинаются примерно с 500,
550 инструкций.
В этих розовых участках
над водой мы видим где-то
более 1000 инструкций.
С включенной виртуальной
текстурой во время выполнения
мы получаем гораздо меньшую
сложность шейдеров и гораздо
более согласованный результат.
У нас нет некоторых компонентов
ландшафта с более высокой
сложностью, потому что
в них нарисовано больше
слоев.
Для справки, зеленый цвет
означает, что количество
инструкций меньше 200.
Что касается производительности,
у нас нет точных показателей
для вас сегодня, но у нас
есть приблизительная экономия
на Playstation 4.
Обновление времени выполнения
обходится нам примерно
в одну миллисекунду. виртуальная
текстура, но в типичном
представлении с большим
количеством ландшафта
на экране это может сэкономить
нам около трех миллисекунд,
и это зависит от вида.
Он сильно возрастает, когда
мы находимся в режиме прыжка
с парашютом, покрывающем
весь экран ландшафтом,
и явно снижается, когда
в помещении, а не на очень
большой местности на экране.
Еще один полезный режим
отладки - отображение уровня
вывода виртуальной текстуры
во время выполнения.
Это похоже на просмотр
MIPS RVT.
Это встроено в материал
ландшафта Fortnite как дополнительный
режим отображения отладки,
показанный здесь.
Следующая особенность
ландшафта, которую нужно
обсудить, - это новая система
слоев ландшафта.
Это добавляет стек слоев
ландшафта, где каждый слой
содержит полный набор данных
ландшафта.
Это означает набор карт
высот и слоев карты весов
в каждом добавляемом вами
слое.
Стек слоев добавляет гибкости
и отлично подходит для
временной работы по тестированию
разовых работ или внесения
изменений, которые, возможно,
потребуется отменить в
будущем.
В этом видео показано, как
работать со слоями ландшафта.
Обратите внимание, что
в инструменте пейзажа у
нас теперь есть группа
редактирования слоев с
разными слоями.
Здесь у нас есть базовый
слой, формирующий общую
форму острова, а затем у
нас есть слой деталей сверху,
позволяющий вносить дополнительные
изменения.
Теперь мы можем нарисовать
изменения внутри этого
слоя деталей, а затем переключать
их, чтобы увидеть ландшафты
без этих изменений.
И одна из замечательных
особенностей этих слоев
заключается в том, что вы
можете просто стереть слой,
который находится выше,
чтобы показать, что было
ниже в стопке.
Так что, если вам нужно
было переместить эти здания
в другое место, вам не нужно
беспокоиться о том, что
вы разрушительно выровняли
местность под зданием.
Вы можете просто стереть
эти изменения слоя, поэтому
он отлично подходит для
таких вещей, как интеграция
искусственных структур
в естественный ландшафт,
и вы также можете, как показано
здесь, выполнять сглаживание
и другие функции внутри
слоя ландшафта.
Далее мы поговорим о новых
сплайнах ландшафта . Они
позволяют нам неразрушающим
образом вырезать ландшафт,
и они фактически встроены
в новую систему слоев ландшафта.
В предыдущем видео вы могли
заметить, что слой сплайнов
был затемнен серым цветом,
и это потому, что новая
система слоев ландшафта
резервирует слой для сплайнов,
если вы того пожелаете.
А это видео показывает,
каково работать со сплайнами
новых неразрушающих ландшафтов.
Мы выбираем сплайновый
слой с ландшафтом и, удерживая
Control и щелкая поперек ландшафта,
добавляем новые точки сплайна
к нашей дороге.
Обратите внимание, что
когда мы добавляем точки,
местность вырезается неразрушающим
образом в реальном времени.
Я собираюсь применить дорожную
сетку, чтобы у нас было
что-то более интересное.
И теперь мы можем выбирать
точки сплайнов, и по мере
их перемещения результаты
немедленно обновляют неразрушающую
резьбу . Это действительно
полезно для внесения небольших
изменений без необходимости
стирать, повторять снова
и снова и уничтожать предыдущую
работу.
Сплайны ландшафта также
могут быть записаны для
взвешивания слоев карты.
И мы можем переключать
эффект слоя сплайна ландшафта,
как и другие слои.
Custom Blueprint Brushes - еще одна
функция, которая была добавлена
вместе с системой редактирования
слоев ландшафта в 4.24.
Это модификаторы ландшафта
на основе материалов, которые
используют графический
процессор для генерации
данных.
В режимах скульптуры и
рисования пейзажа есть
новый инструмент Blueprint
Brushes.
Вот как вы выбираете и добавляете
кисти.
Кисти в мире отображаются
в списке справа под заголовком
Edit Layer Blueprint Brushes.
Экспериментальный плагин
под названием Landmass предлагает
несколько гибких примеров
кистей, но вы также можете
унаследовать от родительского
класса C ++, чтобы создать
собственную кисть из чистого
листа.
Класс для этого - LandscapeBlueprintBrush.
На изображении справа показаны
типы кистей по умолчанию,
включенные в плагин Landmass.
Это пример гибких эффектов
, которые возможны с помощью
настраиваемой системы
кистей.
Используйте формы, чтобы
определять биомы и управлять
ландшафтом различными
способами.
Как карты высот, так и карты
веса можно изменять, а кисти
можно определять бесчисленными
способами, от сплайнов
до статических мер в качестве
входных данных.
На этом слайде показан
пример потока данных от
ландшафта к пользовательским
кистям и обратно.
Пейзаж запускает функцию
рендеринга на пользовательской
кисти с текущими данными
ландшафта в качестве входных.
Затем кисть выполняет рендеринг
материала GPU с использованием
этих данных, что приводит
к целевым объектам рендеринга
в качестве выходных данных.
Эти цели рендеринга затем
передаются обратно в ландшафт.
Это пример реализации этой
функции рендеринга внутри
пользовательской кисти.
Будут предоставлены текущие
данные ландшафта, которые
затем могут быть изменены
с использованием материала
и записаны в цель рендеринга,
затем эта измененная цель
рендеринга возвращается
обратно в ландшафт на возвратном
узле.
Вывод настраиваемой кисти
полностью настраивается,
но вот посмотрите, как плагин
Landmass генерирует рельефные
образования из простых
фигур.
Поток данных должен сначала
создать маску формы, определяемой
сплайном.
Затем для этой маски выполняется
проход обнаружения кромок
, в котором хранятся исходные
местоположения кромок.
Затем алгоритм Jump Flood запускается
в начальных точках для
создания диаграммы Вороного,
которую можно преобразовать
в назначенное поле расстояния.
Шум может быть добавлен,
чтобы разбить форму внутри
семени , добавив шума в
места семени.
Это всего лишь пример того,
как поле расстояния от
сплайна может создавать
различные формы ландшафта.
Различные эффекты возникают
в результате закрытия внутренней
части и подъема или опускания
кисти.
В этом видео показан прототип
метода рисования фигур,
который использует Landmass.
Можно выбрать и нарисовать
такие предустановки, как
гора, суша, дорога или река
, а затем точки можно выбрать
и изменить как обычно.
Поскольку пользовательские
кисти существуют в стеке,
стек можно переупорядочить,
чтобы разные объекты имели
разный приоритет.
Если мы поместим каньон
в штабель выше, он прорежет
гору.
Если гора выше, гора заполнит
долину.
Таким образом, одно предостережение
относительно пользовательских
кистей заключается в том,
что они в настоящее время
еще не используются в Fortnite,
за исключением некоторых
экспериментов, но они сформировали
основу для части другой
системы, о которой мы собираемся
поговорить дальше, и это
система водоснабжения.
Для получения более подробной
информации о пользовательских
кистях вы можете посмотреть
доклад Unreal Engine Open World Preview
и Landscape Tools с Unreal Dev Days 2019.
А теперь тема, о которой
я долго ждал, чтобы поговорить.
Вода была одним из самых
больших нововведений в
Fortnite во второй главе, и
мы рады представить набор
инструментов для редактирования
и взаимодействия с водой
в Unreal Engine в версии 4.26 в качестве
единой водной системы.
Водная система позволяет
определять озера, реки,
океаны и острова с помощью
сплайнов.
Он включает в себя игровое
взаимодействие и плавное
моделирование.
На изображении показано,
как мы разбили типы водных
объектов для первоначальной
версии воды во второй главе.
В основе водной системы
лежит водяной шлиц нового
типа.
Водяной сплайн позволяет
редактировать настраиваемые
свойства воды в каждой
точке сплайна с помощью
интерактивных устройств
визуализации.
Это означает, что мы можем
настроить такие параметры,
как глубина, ширина, скорость
и звуковые параметры реки
в каждой точке.
В этом видео показано, каково
работать с системой водоема
. Водные объекты являются
Актерами, как и любые другие
объекты в мире, и ими можно
манипулировать, масштабировать,
вращать или дублировать.
Итак, мы можем взять эту
реку здесь, а я вытащу ее,
чтобы сделать копию, и посмотреть,
как она может выглядеть
где - нибудь еще в мире.
Вы можете использовать
это как основу, например,
для образования другой
реки.
Или мы можем взять кусок
новой реки, которую я создал
там, и я перетащу одну из
ее точек, чтобы образовалась
развилка в реке, и мы заставим
эту развилку идти вперед
и расширяться, чтобы встретить
океан.
А справа на панели Details
вы увидите некоторые настройки
рельефа водоемов, которые
взяты из упомянутого ранее
плагина Landmass . Итак, первое,
что мы здесь сделаем, это
выберем эти водные точки
и переместим их вниз вровень
с океаном, потому что при
этом система смешивает
скорость и высоту.
Вы по-прежнему хотите, чтобы
река была ближе к океану.
Теперь мы выбрали и показали
гизмо ширины реки.
Это позволяет нам выбирать
и изменять ширину реки
в каждой точке, а затем
здесь мы решили изменить
смещение края реки, чтобы
дать немного больше ширины
берега.
Итак, следующий визуализатор,
который мы здесь покажем,
- это визуализатор глубины.
Это добавляет новую маленькую
штуковину под каждую точку
сплайна, которую мы можем
выбрать и затем перетащить,
чтобы изменить глубину
реки в каждой точке.
Итак, я собираюсь пойти
дальше и изменить все эти
точки, чтобы река стала
немного более мелкой.
И наконец, мы собираемся
показать последний тип
визуализации - скорость.
Когда мы включаем скорость,
мы получаем эти новые штуковины
со стрелками, которые мы
можем щелкнуть и перетащить,
чтобы увеличить или уменьшить
скорость.
Материал автоматически
настраивается для рендеринга
и создания карт потока
для всего мира, что позволяет
нам видеть пену в реке по
мере ее изменения.
Кроме того, это также влияет
как на игровой процесс,
так и на симуляцию жидкости.
Итак, теперь, когда у нас
есть эти точки реки, которые
выглядят довольно прилично,
как мы и хотели, мы, возможно,
захотим изменить уклон
местности за пределами
реки.
Мы также можем сделать
это, используя некоторые
варианты резьбы по местности.
Итак, теперь мы посмотрим,
как создается текстура
скорости.
Мы визуализируем комбинированный
атлас текстуры воды, который
включает всю информацию
о воде для одного ландшафта.
Это включает скорость воды,
высоту воды и высоту местности.
Эта унифицированная текстура
очень полезна для водных
материалов и моделирования.
Скорость имеет встроенную
карту потока, основанную
на данных сплайна, и именно
она используется для создания
белой пены, которую мы видели
в предыдущем видео.
Для рендеринга всей этой
воды нам требовалось эффективное
и масштабируемое решение.
Нам нужна была детализированная
поверхность вблизи, но
нам также нужно было, чтобы
она работала быстро, поэтому
нужно было агрессивно упрощать
на расстоянии.
Этим занимается новый Актер
Water Mesh.
Актер Water Mesh Actor строит сетку
из четырехугольников вокруг
всех водных объектов, позволяя
детализировать детали
вблизи и упрощая их, с плавными
переходами между ними.
В этом примере показано,
как сетка дерева квадратов
уточняется с увеличением
расстояния и становится
более детальной по мере
приближения камеры к поверхности.
Поскольку у нас есть глобальная
текстура воды, можно визуализировать
всю поверхность воды с
помощью одного шейдера,
но это не идеально для производительности.
Например, в океанах и озерах
есть волны, а в реках - карты
потоков.
Было бы немного расточительно
платить за карты потоков
всего океана.
Мы разделяем функции, уникальные
для океанов, озер и рек,
на отдельные материалы.
Затем мы раскрываем типы
переходов, которые позволяют
смешивать эти материалы.
Переходы всегда происходят
между реками и океанами
или реками и озерами.
Переходы - самые дорогие
виды материалов.
Это показывает режим отладки
плиток водной сетки из
дерева квадратов водной
сетки.
Цвет плитки показывает
тип плитки.
Синий представляет океан,
зеленый - озера, а красный
- реки.
Фиолетовый означает переход
от реки к океану, а желтый
- от реки к озеру.
Обратите внимание, что
мы также затемняем воду,
используя текстуру глубины
воды, чтобы геометрия воды
не отсекалась.
Обратите внимание, что
болото зеленого цвета,
хотя оно находится на уровне
океана.
Это потому, что мы вложили
озеро в океан и использовали
его, чтобы ограничить дополнительную
сложность материала болота
только регионом болота.
Со всеми этими деталями
мы теперь можем визуализировать
несколько довольно красивых
волн.
Мы решили реализовать волны
Герстнера, которые представляют
собой хорошо известную
аналитическую волновую
формулу, основанную на
синусоидальных волнах.
Они полезны тем, что могут
легко сопоставить один
и тот же результат на CPU
и GPU, так что игровой процесс
и рендеринг могут соответствовать
друг другу.
В этом видео показан эффект
объединения 16 волн Герстнера
. Как только вы наберете
такое количество волн,
появится довольно реалистичная
водная поверхность.
Но, конечно, Fortnite стилизован,
и мы не обязательно хотим
быть слишком реалистичными
с нашей водой.
Мы нашли решение, ограничив
количество волн и тщательно
контролируя параметры
волн.
Fortnite использует только
шесть волн, а мобильная
связь ограничена четырьмя
волнами.
Мы сортируем волны от наибольшей
к наименьшей, чтобы две
волны, падающие на мобильный
телефон, были двумя наименьшими
и не оказывали большого
влияния на визуальное соответствие
игрового процесса.
Каждый водоем имеет свой
собственный набор параметров
волн, которые мы называем
спектром.
Это дает диапазон значений
для таких вещей, как амплитуда
и длина волны в распределении
между значениями.
Это просто пример того,
как два водоема рядом друг
с другом могут иметь совершенно
разные значения волнового
спектра: один слева имеет
умеренно изменчивые волны,
а тот, что справа, почти
не имеет волн.
В этом видео показано, каково
редактировать значения
спектра волн для океана
Fortnite.
Сначала мы установим количество
волн равным нулю, чтобы
показать спокойный океан,
а затем постепенно снова
включим волны по одной.
Вы можете увидеть, как каждая
волна после нескольких
первых оказывает относительно
небольшое влияние, но все
же помогает в конечном
результате.
Затем мы можем настроить
амплитуды, чтобы волны
были больше или меньше.
Мы должны быть осторожны
при тестировании после
игры с этими значениями,
потому что волны, как правило,
выглядят намного больше
с точки зрения игрока.
Регулировка спада позволяет
регулировать распределение
между маленькими и большими
волнами.
Это позволяет вам сказать,
хотите ли вы иметь больше
маленьких волн, больше
больших волн или равное
распределение, если спад
равен единице, и то же самое
касается длин волн.
Обычно мы используем спад
длины волны где-то около
3 или 4, потому что мы склонны
хотеть больше маленьких
волн по сравнению с большим
количеством больших волн.
Мы также можем отрегулировать
крутизну волны.
Доминирующее направление
волны определяет направление
первой и самой большой
волны, которая также является
отправной точкой, из которой
генерируются все другие
случайные волны . Вы также
можете настроить величину
углового случайного разброса
для этих вторичных волн.
Чтобы улучшить качество
рендеринга воды, была добавлена
новая модель затенения
под названием SingleLayerWater
. Фактически, это уже вошло
в публичную версию 4.24 . Это
добавляет на график узел
материала SingleLayerWater, который
позволяет поглощать цвета
в зависимости от глубины,
а также управлять рассеянием
и анизотропией.
Вода отображается как непрозрачная
и отображается в отдельном
проходе воды, который выполняет
отражения в пространстве
экрана . На этом снимке
экрана показаны преимущества
того, что цветное поглощение,
отражения в пространстве
экрана и стандартные элементы
управления материалами,
такие как шероховатость
и отражение, теперь работают
правильно вместе.
И наша последняя тема о
воде - моделирование жидкости.
Водная система включает
встроенный инструмент
моделирования жидкости
, который позволяет взаимодействовать
персонажам, транспортным
средствам и оружию.
Жидкость также реагирует
на рельеф местности, например,
отражает рябь от берега
и на нее влияют карты речного
стока.
Это видео демонстрирует
некоторые взаимодействия
жидкостей в Fortnite.
Оружие и движения персонажей
мешают воде и пене на поверхности
воды.
Симуляция выполняется
в локальном диапазоне вокруг
игрока, и на нее также может
влиять определенное количество
других игроков поблизости
. На моделирование также
могут влиять карты речного
стока , созданные путем
редактирования точек сплайна
воды . Это заставляет рябь
течь вниз по потоку, как
и следовало ожидать.
Здесь вводится команда
отладки, чтобы показать
силу текучести персонажа
. Мы в основном рисуем фигуру
из палочек , задавая местоположения
костей и визуализируя их
в виде капсул в материале.
Лодки используют более
простой тип силы жидкости,
который представляет собой
простую форму на основе
текстуры, определенную
художником по эффектам,
которая прикрепляется
к сетке лодки.
С помощью лодки мы можем
вызвать гораздо большую
рябь и расчистить большие
пути в пене.
Симуляция жидкости помогает
добавить ощущения от взаимодействия
игрока с миром во время
вождения автомобиля.
Здесь мы посмотрим, как
достигается эффект стирания
пены.
Наша симуляция жидкости
на самом деле имеет два
канала: красный и зеленый.
Красный канал - это стандартный
жидкостный решатель.
Фактически вы можете найти
аналогичный пример в проекте
примеров контента , загрузив
карту Blueprint Render to Target . Для
зеленого канала мы выполняем
этап диффузии или размытия,
к которому применяется
незначительная обратная
связь от красного канала.
Затем этот зеленый канал
используется для вычитания
непрозрачности пены в воде.
В болотном биоме также
интересно использовать
канал диффузии жидкости,
заставляя движущиеся объекты
расчищать путь в пенистой
пене.
И это может обеспечить
некоторый визуальный интерес
при переходе через болото
в качестве игрока или при
движении на лодке.
Он также использует тот
же метод для создания эффекта
свечения в соке, разлитом
по болоту.
А теперь поговорим о небе
и атмосфере.
Начиная с версии 4.24, UE4 имеет
новую надежную модель SkyAtmosphere.
Это модель рэлеевского
рассеяния с множественными
отскоками, и хотя она физически
основана, она по- прежнему
очень удобна в использовании,
что было большим требованием
для ее использования в
Fortnite.
И он также масштабируется
от высокопроизводительных
ПК до мобильных устройств.
И, начиная со второй главы,
Fortnite теперь использует
новую SkyAtmosphere.
Теперь стоит отметить,
что физическая активность
не должна быть скучной.
Я имею в виду, что вы все
равно можете использовать
его как отправную точку
для вашего художественного
самовыражения.
Я хотел бы поделиться своим
собственным опытом, когда
я впервые начал изучать
физический рендеринг материалов,
когда Дисней впервые популяризировал
его много лет назад.
Поначалу это звучало и
очень круто, и немного устрашающе.
В то время создание красивого
внешнего вида материалов
было в основном тем, чем
занимались технические
художники.
Так что казалось, что PBR
собирается убрать это,
так сказать.
Беседуя с другими техническими
художниками, я был не единственным,
кто вызвал этот страх.
Было смутное ощущение,
что мы можем потерять некоторую
свободу или какое-то выражение.
На самом деле произошло
прямо противоположное.
Теперь, из-за рендеринга
PBR, у технических художников
стало намного больше работы
и вещей, чем раньше, и люди
решают более крупные и
сложные проблемы вместо
того, чтобы решать одни
и те же основные проблемы.
То же самое, вероятно, будет
верно и в других областях
в будущем, таких как небо
и атмосфера.
Fortnite использует Blueprint Time-of-Day
Manager для управления значениями
SkyAtmosphere.
В нашей программе Time-of-Day
Blueprint есть четыре значения
времени суток.
У нас есть утро, день, вечер
и ночь.
Каждое время суток имеет
отдельную структуру с сгруппированными
параметрами, управляющими
несколькими действующими
лицами, такими как солнце,
атмосфера неба и высота
тумана.
Для SkyAtmosphere это позволяет
нам изменять такие вещи,
как цвета рассеяния Рэлея
и Ми, в каждое время суток
и точно настраивать это
взаимодействие с освещением
и туманом вместе.
Каждый раз управление по
отдельности дает возможность
художественного контроля
над физической основой.
Здесь мы видим эффект очистки
предварительного просмотра
времени суток внутри редактора.
Мы можем видеть, как, несмотря
на то, что это физическое
небо, ему все же удается
выглядеть довольно стилизованным
с красивыми художественными
и стилистическими цветами.
А здесь мы отключили туман
по высоте, а теперь отключили
атмосферу.
Итак, вы можете видеть,
что мы по-прежнему используем
туман с экспоненциальной
высотой , и вместе с ним
и SkyAtmosphere действительно
формируется общая атмосфера,
которая у нас сейчас в Fortnite.
В версии 4.26 появилась еще
одна интересная новая функция
- объемные облака.
Пользователи GitHub могут
получить к нему доступ
с помощью рендеринга разработчика.
Система объемного облака
использовалась в ролике
Fortnite Chapter 2 Season 3, а также
в недавно показанной демоверсии
Playstation 5 вместе с нашей технологией
рендеринга Nanite . Объемные
облака используют материальную
область, называемую объемом.
Это позволяет пользователям
указывать свои облака с
помощью стандартного интерфейса
материалов.
Это пример очень простого
облачного материала.
Логика облачной маски должна
перейти на вывод исчезновения.
Этот график здесь просто
отображает простую мозаичную
2D-текстуру по небу.
Затем он вычитает смещение
и умножается на параметр
плотности.
Далее мы увидим, как он
выглядит и что нужно, чтобы
он выглядел как надлежащий
материал облака . Начнем
с показа Актера Объемного
Облака.У Актера есть некоторые
базовые элементы управления
такими вещами, как толщина
облачного слоя, которые
мы здесь настраивается,
а также начальная высота
облаков.
И пока что этот материал
представляет собой простой
круговой мозаичный круг,
который мы видели, но мы
можем открыть этот экземпляр
материала и настроить параметр
смещения, чтобы размыть
форму, чтобы сделать облака
больше или меньше.
Теперь посмотрим на материал
и улучшим его.
Здесь мы остановились на
предыдущем слайде.
Если немного прокрутить
вниз, есть функция контролируемого
падения высоты.
Облачные материалы имеют
доступ к только что выбранному
узлу под названием Cloud Sample
Attributes, который дает доступ
к нормализованной высоте
внутри облачного слоя.
Это можно использовать
для отображения функций
спада.
Это простой экспоненциальный
спад для верха и низа.
Теперь мы можем вернуться
к экземпляру и очистить
эти значения, чтобы поиграть
с ними и управлять ими по
отдельности для создания
различных типов фигур.
Теперь вернемся к материалу
и добавим деталей.
Для этого мы собираемся
добавить текстуру объема.
Итак, здесь у нас есть образец
текстуры объемной текстуры,
и у него просто мировые
координаты, умноженные
на коэффициент тайлинга
и контролируемые множителем
для плотности.
Затем мы компилируем и
возвращаемся к материалу,
смотрим на него, и теперь
у нас есть некоторые детали,
образующие облака, похожие
на края, и мы можем настроить
этот параметр детализации.
Обратите внимание, что
для некоторых типов эффектов
он может быть как положительным,
так и отрицательным . Итак,
теперь мы можем выйти за
рамки этого и вместо того,
чтобы просто использовать
мозаичную 2D-текстуру круга,
использовать текстуру,
в которой больше естественного
шума.
Итак, теперь, компилируя
шейдер с шумовым материалом,
нам нужно немного настроить
тайлинг, чтобы получить
что-то разумное.
Итак, я продолжу и очень
быстро отрегулирую плотность
и тайлинг , а затем мы начнем
получать что-то, что больше
похоже на процедурное небо,
созданное только из некоторых
текстур тайлинга.
Итак, теперь, когда мы приближаемся
к тому, что нам нужно, мы
можем начать играть со
временем дня и посмотреть,
как мы это сделали.
Так что вы также можете
проявить творческий подход
к определению облаков.
Вот пример маски текстуры,
созданной из кривой, чтобы
вы могли более точно определить
профиль высоты облаков.
И затем, конечно, вы можете
воспользоваться тем же
подходом из предыдущего
раздела и применить объемный
слой шума сверху, чтобы
разбить поверхность и создать
реалистичную форму с деталями,
а также красивую макро-форму.
И это видео показывает,
что Blueprint используется
для создания облачной маски
путем размещения отдельных
актеров.
При перемещении Актеров
маска облаков обновляется,
что вы можете видеть здесь
красным в правом нижнем
углу.
Это делается путем рисования
материалов в цель рендеринга.
У каждого облачного объекта
есть свои настройки масштаба,
шума, непрозрачности и
других параметров.
Здесь мы очистили зерно
шума, чтобы попробовать
разные образы.
Мы также можем быстро скопировать
одно облако вокруг сцены,
чтобы составить желаемый
вид.
Это может помочь разместить
несколько больших облаков
на горизонте и использовать
настройки шума для создания
большого кластера, чтобы
легко формировать большие
области неба за один раз.
Итак, теперь, когда мы расположили
некоторые облака примерно
так, как мы хотим в нашей
сцене, давайте продолжим
и начнем двигаться вокруг
солнца, что мы можем сделать,
просто удерживая Control-L
и перемещая мышь, что является
еще одной приятной новой
функцией, которая появилась.
с SkyAtmosphere.
Итак, вы можете видеть,
что мы можем получить довольно
хорошие результаты, просто
перетаскивая несколько
Актеров по сцене, а затем,
конечно, мы можем решить,
что хотим добавить еще
несколько облаков только
для этого другого вида
заката здесь, и что тоже
может быть довольно приятным.
И, конечно же, вы не ограничены
реалистичными облаками.
Это пример стилизованного
теста, демонстрирующего
гибкость материала объема,
что означает , что вы можете
попробовать нереалистичный
рендеринг, а также практически
все, что вы можете себе
представить.
И теперь мы достигли нашей
последней категории - общего
редактирования, и мы начнем
с редактирования на основе
сетки.
Это новый инструмент, который
помогает автоматически
разделить мир на сетку,
подобно тому, как игровая
мини-карта Fortnite делится
на ячейки сетки с A1 по J10.
Редактирование на основе
сетки автоматически гарантирует,
что Актеры будут помещены
на правильный подуровень.
Эта функция пока еще недоступна
для релиза.
На данный момент аналогичных
результатов можно достичь
с помощью инструмента World
Composition Tool и его функции
импорта мозаичного ландшафта,
помогающей создать сетку.
Это отладка, показывающая,
каково это перемещать Актера
с помощью сетки уровней.
Когда Актер перемещается
за пределы своей ячейки
сетки, вы можете видеть,
что выбран новый уровень,
который отображается в
виде желтого квадрата в
этом окне отладки.
Раньше, если вы случайно
переместили Актера за пределы
намеченной сетки уровней,
это могло вызвать проблемы
с потоковой передачей,
требующие от дизайнера
уровней ручного исправления.
Еще одна предстоящая функция,
которая поможет с подобным
редактированием, - это один
файл для каждого Актера.
Это появится в Unreal Engine 4.26.
Это новая парадигма управления
файлами и исходным кодом,
и, хотя она еще не используется
в Fortnite, мы ожидаем ее использования
в ближайшее время.
Эта функция позволяет определять
внешний вид объекта другим
пакетом.
Это сделано для уменьшения
числа конфликтов между
файлами.
Это означает, что когда
у вас есть Актеры, хранящиеся
на уровне, как это традиционный
метод, используемый сейчас,
только один человек может
проверить этот файл уровня,
потому что это двоичный
файл.
Вы не можете объединить
различные двоичные изменения,
как это можно сделать с
кодом.
Итак, что это может означать
здесь, если у вас есть часть
мира с различными типами
объектов, такими как деревья,
дома и местность, обычно
только один человек может
проверить эту область и
работать над ней за раз.
, С одним файлом для каждого
Актера, поскольку все эти
Актеры становятся отдельными
файлами, практически любой
может проверить, над чем
им нужно работать, если
им не нужно работать с одними
и теми же объектами.
Еще одна полезная функция,
которую мы добавили, чтобы
помочь в разработке Fortnite,
- это Actor Foliage, и это позволяет
нам рисовать Blueprints так
же, как они были статическими
сетками с помощью инструмента
листва.
А сделать это довольно
просто.
Вы просто создаете новый
тип Actor Foliage , как показано
здесь, как создать из браузера
содержимого.
И стоит отметить, что в
Fortnite очень немногие объекты
представляют собой обычные
статические сетки.
Практически все, что вы
видите в мире, - это Blueprint,
который позволяет настраивать
дизайнера уровней.
Это означает, что раньше
почти все в мире приходилось
размещать вручную путем
копирования или перетаскивания
из Content Browser, что было немного
утомительно для дизайнеров
уровней.
А теперь мы можем рисовать
актеров, как будто они листва.
Это показывает пример того,
как нарисовать Листву Актера
на карте Fortnite.
Как и раньше, мы переходим
на вкладку «Раскраска листвы»
и видим наш выбор листвы,
который мы добавили для
рисования.
Выбрав один из них, мы увидим,
что теперь он может указывать
класс Actor.
Так что мы можем просто
щелкнуть и раскрасить их.
И еще один новый режим,
показанный здесь, который
действительно полезен,
- это новый режим Single Instance,
что означает , что вы можете
разместить один экземпляр
одним щелчком мыши, не беспокоясь
о том, чтобы получить плотность
как раз там, где вы либо
не получите деревья, либо
вы получите деревья.
Поскольку традиционная
краска для листвы была
больше предназначена, я
думаю, для рисования большей
плотности, чем для отдельных
объектов, но все же довольно
полезно иметь возможность
шлепать деревья и объекты
одним щелчком мыши по уровню,
подобному этому.
Это определенно требовалось
дизайнерами уровней и позволяло
им использовать инструмент
рисования листвы, тогда
как раньше они действительно
не получали от этого многого.
Итак, следующая особенность,
о которой стоит поговорить,
- это улучшенное иерархическое
рассеяние.
Это добавляет большее разнообразие
процедурного рассеяния.
Большие объекты могут выступать
в качестве опорных точек
и порождать более мелкие
объекты различного вида.
Итак, Unreal Engine уже некоторое
время имеет процедурное
рассеяние , но у вас не может
быть разных уровней вложенности
или какой-либо иерархии.
Это представление отладки,
показывающее, каково создавать
объекты с использованием
ландшафтной маски и создавать
различные типы объектов
как дочерние объекты.
Подойдя ближе, мы действительно
увидим, что цилиндрические
объекты порождают меньшие
сферические объекты.
Это просто пример того,
что вы могли бы сделать,
в том числе большие каменные
шпили, способные порождать
более мелкие куски каменной
осыпи, и мы с нетерпением
ждем возможности найти
способы использовать это
в предстоящем Fortnite.
На этом мы завершаем разговор.
Спасибо всем за внимание.
Мы с нетерпением ждем ваших
отзывов и всех вещей, которые
вы создаете с помощью этих
новых инструментов.
Еще раз спасибо.
Перевёл и озвучил Дмитрий
Зуев, все ссылки доступны
в опиании
