Академический Документы
Профессиональный Документы
Культура Документы
Development
Unreal Engine
MIDDLE
Урок 4
Динамическая смена
времени суток.
Создание леса
и настройка света
2
Динамическая смена времени суток. Создание леса...
Динамическая смена
времени суток. Создание леса
и настройка света
Современные игры становятся все реалистичней.
Улучшается графика и внешний вид персонажей, а также
физика окружающей среды. Игровые миры становятся
больше, и каждый элемент приобретает свойства реаль-
ных аналогов. К примеру, вода может промочить одежду
персонажа, а на снегу или песке остаются следы.
Одной из самых приятных фишек в играх является
смена времени суток. Она не нова, однако подобное при-
родное явление делает игры более интересными. Нередко
функция смены дня и ночи вплетается в сюжет. Напри-
мер, персонажам разрешено исполнять определенные
действия только ночью (рис. 1) или с наступлением утра.
Рисунок 1
3
Урок 4
Рисунок 2
Выделим данный объект, найдем вкладку Transform
и поменяем режим Mobility (Мобильность) на Movable
(Движимый). Именно этот параметр позволит солнцу
передвигаться по небу (рис. 3).
Рисунок 3
4
Динамическая смена времени суток. Создание леса...
Рисунок 4
Рисунок 5
Далее находим в сцене SkySphereBlueprint — элемент
небесного свода. Также добавим его в редактор блуприн-
та (рис. 6–7).
5
Урок 4
Рисунок 6
Рисунок 7
Теперь добавим специальное событие Event Tick, ко-
торое обращается к каждому кадру анимации, и подклю-
чим к нему ноду float*float (рис. 8).
Рисунок 8
Далее создадим переменную типа Float, которая бу-
дет высчитывать скорость солнца. Назовем ее SunSpeed
(рис. 9). Зададим скорость, равную 20 (рис. 10).
6
Динамическая смена времени суток. Создание леса...
Рисунок 9
Рисунок 10
Вынесем данную переменную в блупринт со значе-
нием Get и подключим ее к ноде float*float, как показа-
7
Урок 4
Рисунок 11
Также добавим в скрипт ноду MakeRotator и подклю-
чим ее в стоке Y (Pitch). В результате солнце будет пере-
мещаться исключительно по оси Y (рис. 12).
Рисунок 12
Чтобы определить нужную координату вращения,
сверяемся с маркером координат в левом нижнем углу
вьюпорта (рис. 13).
Следующий этап — подключить LightSource с помо-
щью функции AddActorLocalRotation, которая генериру-
ет сам поворот (рис. 14).
А SkySphereBlueprint — с помощью Update Sun Direc
tion. Эта нода отвечает за динамическую смену неба днем
и ночью (рис. 15).
8
Динамическая смена времени суток. Создание леса...
Рисунок 13
Рисунок 14
Рисунок 15
9
Урок 4
Рисунок 16
Компилируем готовый скрипт и выходим из редактора.
Чтобы проверить работоспособность блупринта, на-
жимаем Play. Как показано на рисунках, солнце будет ди-
намично перемещаться по небу (рис. 17–18).
Рисунок 17
10
Динамическая смена времени суток. Создание леса...
Рисунок 18
Чтобы лучше разобраться, как смена дня и ночи бу-
дет выглядеть в игре, давайте создадим небольшую реа-
листичную локацию. Прежде всего необходимо создать
плоскость, которая послужит основой будущей локации.
Для этого воспользуемся программой Blender. В данной
программе есть генератор ландшафтов, с помощью ко-
торого можно быстро и легко создать любую заготовку
локации. В нашем проекте воспользуемся стандартным
шаблоном River (рис. 19).
Чтобы затекстурировать любую модель, прежде всего
необходимо создать UV-развертку. По сути, это карта ко-
ординат объекта, на которой отмечается местоположение
текстур. В программе Blender можно создать простейшую
развертку всего в несколько кликов. Для этого в Blender
переходим в режим Edit, нажимаем хоткей U и выбира-
ем первый пункт меню — Unwrap (Развернуть) (рис. 20).
11
Урок 4
Рисунок 19
Рисунок 20
Полученный результат можно оценить, переключив
вьюпорт в режим UV/Image Editor (рис. 21).
12
Динамическая смена времени суток. Создание леса...
Рисунок 21
Далее экспортируем шаблон в формат .fbx и загрузим
его в новую сцену UE4. В результате в проект должны
быть добавлены геометрия почвы и стандартная тек-
стура. Переименуем данную текстуру в Ground Texture
(рис. 22).
Рисунок 22
13
Урок 4
Рисунок 23
Данный сет содержит всевозможные элементы окру-
жения (деревья, кустарники, камни и т.д.) и текстуры, из
которых можно легко составить локацию, минуя этап мо-
делирования (рис. 24).
Давайте рассмотрим более сложный способ тексту-
рирования поверхностей и разберем, как смешивать не-
сколько текстур на одном объекте.
Чтобы воспользоваться этим методом, необходимо
создать новый образец материала, который будет со-
держать сборную информацию об используемых тек-
стурах. Назовем его Ground и применим к плоскости
(рис. 25).
14
Динамическая смена времени суток. Создание леса...
Рисунок 24
Рисунок 25
15
Урок 4
Рисунок 26
Давайте смешаем текстуры травы и листьев. Прежде
всего подключим соответствующие текстуры из сета: T_
Ground_Grass_D и T_GDC_Tiling_LeafPath_D_R, где D —
значение Diffuse Color (рис. 27–28).
16
Динамическая смена времени суток. Создание леса...
Рисунок 27
Рисунок 28
Аналогичные действия производим с картами нор-
малей, подключив в ноды Texture Sample материалы T_
Ground_Grass_N и T_GDC_Tiling_LeafPath_N. N — обо-
значение Normal Map (рис. 29–30).
Рисунок 29
17
Урок 4
Рисунок 30
Чтобы смешать две текстуры, воспользуемся допол-
нительной нодой Linearinterpolate. Попарно подключим
цветовые карты и нормали в слоты А и В (рис. 31).
Рисунок 31
Чтобы программа поняла, какие участки поверхности
должны быть покрыты одной текстурой, а какие другой,
добавим еще одну ноду Vertex Color. Данный блок позво-
лит рисовать непосредственно по текстуре. Подключим
его в строки Alpha микшеров Lerp (рис. 32).
18
Динамическая смена времени суток. Создание леса...
Рисунок 32
Рисунок 33
19
Урок 4
Рисунок 34
После этого нажимаем Apply и выходим из редактора.
Так как текстура была заранее применена к объекту,
во вьюпорте отобразится плоскость, покрытая травой
(рис. 35).
20
Динамическая смена времени суток. Создание леса...
Рисунок 35
Чтобы начать прорисовку листьев, откроем блок
Modes — вкладка Paint и выберем кисть Colors. По сути,
это особый мод, который позволяет изменять цвет вер-
шин (Vertex Color) (рис. 36).
Рисунок 36
21
Урок 4
Рисунок 37
Также важно следить за значениями Paint Color и Erase
Color. Именно эти пункты отвечают за прорисовку и сти-
рание текстуры. Paint Color должен быть обязательно бе-
лым, а Erase Color — черным (рис. 38).
Рисунок 38
Теперь приступим к раскрашиванию локации. Убе-
димся, что нужный объект выделен во вьюпорте и про-
рисуем листья в устье реки. Если необходимо вытереть
листья с какого-то участка, зажимаем Shift, чтобы акти-
вировать ластик (рис. 39).
22
Динамическая смена времени суток. Создание леса...
Рисунок 39
Чтобы создать максимально реалистичную локацию,
недостаточно прорисовать текстуру травы. Давайте до-
бавим в сцену несколько камней. Для этого обратимся
в папку Rocks из скачанного сета.
Чтобы добавить какой-либо объект, просто перетя-
гиваем Static Mesh во вьюпорт (рис. 40).
Рисунок 40
23
Урок 4
Рисунок 41
Рисунок 42
К примеру, если сделать какой-нибудь камень очень
большим, можно создать скалу, нависающую над речкой.
Также реалистичности помогут добиться сухие коряги
24
Динамическая смена времени суток. Создание леса...
Рисунок 43
Последний этап — добавить функцию смены дня
и ночи. После этого нажимаем Play, чтобы посмотреть
результат работы.
Чтобы оценить, какие крутые локации можно со-
здать на движке Unreal Engine 4, рассмотрим несколько
видеопримеров:
■■ Lighthouse. Speed Level Design;
■■ Speed Level Design — Mountain Road;
■■ Speed Level Art — Fantasy Scene.
25
Урок 4
Динамическая смена времени суток.
Создание леса и настройка света