Динамическое небо: Теория и практика

Разработка игр | |

Привет! Меня зовут Брайан Адамс (Bryan Adams), мне 23 года, я родом из далёких земель Новой Зеландии. Я вырос на Южном острове, в краю сельхозугодий, завораживающих гор и восхитительного неба. В течение семи лет я изучал анимацию, визуальные эффекты, 3D-моделирование, а прямо сейчас делаю упор на игровую разработку. За годы учёбы у меня было много практики, включая работу в Новой Зеландии и за рубежом и даже преподавание. Сейчас я на последнем году обучения по специальности Game Art в Media Design School.

Мне всегда нравилось масштабное окружение, сначала в фильмах и анимации, потом и в играх. Всё началось года два назад, когда я встретился с Майком Портером (Mike Porter) в Окленде во время обыденной поездки, нацеленной на изучение дальнейших курсов. Три месяца спустя я посетил мастер-класс от Джейсона Сассмена (Jason Sussman) – на тот момент работающего старшим художником окружения, ответственным за внешний вид Марса в первой Destiny – в котором он рассказывал о специфике рабочего процесса в Bungie. В тот самый день я и влюбился в игровое окружение и с тех пор развиваю свои познания в UE4.

Когда я начал работать с окружением, меня сразу заинтересовали скайбоксы и то, как они передают эмоции и поддерживают историю. Специализированную информацию по скайбоксам найти было сложно, но в итоге мне попалась на глаза программа Vue от E-on Software, позволяющая создавать замечательные статичные скайбоксы:

Сейчас я пользуюсь отличным плагином для UE4 под названием Truesky, с ним можно создавать процедурные скайбоксы с объёмными облаками и погодными условиями. Я обожаю этот плагин за возможность экспериментировать с небом в реальном времени без необходимости в бейкинге и рендеринге:

Теория

Скайбоксы всегда занимают внушительную часть пространства вокруг вас, будь вы на Земле, на Марсе или на Конкорде (Halo 4). Вы можете и не задумываться об этом, но небеса рассказывают вам о мире и его атмосфере, и при разработке скайбокса следует учитывать множество факторов.

Одни из основных элементов, которые я беру в расчёт, принимаясь за новый скайбокс, это время, место, история, анимация и эмоции. Время суток, разумеется, многое значит для любого скайбокса, но когда речь идёт о динамических скайбоксах, важно думать и о том, как изменится небо со временем. Место также играет важную роль: в зависимости от того, где вы находитесь, окружение будет оказывать на разный эффект на игровой процесс. Например, вы стоите у моря в ветреный день – на воду может опуститься лёгкий туман, и освещение будет смягчено. Дальше идёт история данного места: как здесь проходит обычный день, происходит ли что-то особенное (вроде солнечной активности на карте Solace из Halo 4). Анимация важна, потому что она оживляет сцену и помогает проникнуться ей – посреди космоса вы можете не ощущать прямой причастности к окружению, но движущийся спутник или пролетающая мимо комета позволят игроку укрепить свою связь с этим местом, и так вам будет проще добиться задуманного эффекта. И последнее – но не по важности – эмоции. Что должен чувствовать игрок, глядя на горизонт? Умиротворённость, восхищение, испуг?

Всем, кто интересуется скайбоксами, рекомендую взглянуть, как Рик Нокс (Rick Knox) демонстрирует отдельные элементы, из которых он собирал скайбокс карты Longbow из Halo 4 – я был очень впечатлён, впервые увидев это небо.

Как создавать динамические скайбоксы в UE4?

Для создания динамичных скайбоксов в UE4 я пользуюсь плагином TrueSky, это превосходный инструмент, и работать с ним будет легко, если вы уже знакомы с той же Vue.

Я покажу простой пример скайбокса в Truesky и расскажу, как настроить объёмные облака, сохраняя определённую эстетику. В качестве основы для окружения я воспользовался World Machine, а при помощи Truesky менял оригинальный скайбокс. Также я подключил направленное освещение для симуляции Солнца и Луны.

В качестве отправной точки я выбрал базовую водную поверхность и простой меш из World Machine.

Обычно я первым делом повышаю плотность облаков, чтобы было, с чем работать.

В Truesky менять время суток проще простого, я выставил 6:30, чтобы добавить облакам немного цвета.

Чтобы избавиться от однообразия и слишком крупных форм, меняем плотность облаков и добавляем шум Уорли. Это делает сцену естественнее, и в Truesky много других настроек, повышающих реалистичность скайбокса.

Крупный план облаков: как видите, уже довольно правдоподобно.

Освещение

Освещение – важная часть работы над скайбоксом. Обычно я отключаю подгрузку текстур в UE4 и создаю серый проход рендеринга, чтобы сконцентрироваться только на освещении. Это помогает мне подобрать подходящее время суток, после чего я перехожу к облакам. Я обращаю внимание на такие вещи, как тип облаков, область покрытия, атмосферное освещение, отражённый свет/подсвечивание облаков, скорость затухания, второстепенные слои и движение. Разобравшись со всем этим, я включаю подгрузку текстур и могу использовать Post Process Volume для тонкой настройки нужных значений. На статичных скайбоксах я всегда меняю температуру цвета, добиваясь большего реализма и затем полагаюсь на постобработку для настройки до желаемого результата.

Как добавляются художественные штрихи?

Я думаю, важный аспект, которому часто не уделяют должного внимания – это движение. Сочетание листвы и движения облаков или объектов окружения может существенно повысить реализм и оживить мир. Второстепенные акторы на заднем плане, вроде животных/существ, городов или какого-либо рода движения, добавляют сцене глубины, масштабов и истории.

Можно украсить сцену и другими штрихами, и здесь лучше всего поможет обращение к работам людей, которые вас вдохновляют. Когда я был моложе, я постоянно смотрел на небо, и однажды у нас был северо-западный ветер, создающий невероятные цвета и формы. Знаете, как в кино, когда думаешь, будто в жизни такого не бывает. В некоторых играх я чувствовал нечто подобное – мне нравится окружение и скайбоксы в проектах Bungie, от первой Halo до Destiny 2, и думаю, что их скайбоксы многое добавляют сюжету и ощущениям от игры в целом. Очень важно искать источники вдохновения, подталкивающие к созданию чего-то нового, и для меня это Райан Уоткинс (Ryan Watkins), Мукул Соман (Mukul Soman), Ту Бси (Tu Bsi), Гёкхан Карадайы (Gökhan Karadayı) и Рик Нокс.

Хочу поблагодарить Бреда Аллена (Brad Allen) и Джейсона Сассмена за обучение и наставление на этот замечательный путь.

Примечание: TrueSky доступен для Unity и Unreal Engine.

Оригинал статьи на 80.lv – Real-Time Skies: Theory and Practice.

Владимир FrostBite Хохлов frostbite@progamer.ru

Поделиться

Обсудить