Вы находитесь на странице: 1из 26

Game

Development

Unreal Engine

MIDDLE
Урок 4
Динамическая смена
времени суток.
Создание леса
и настройка света

Материалы урока прикреплены к данному PDF-файлу. Для досту-


па к материалам, урок необходимо открыть в программе Adobe
Acrobat Reader.

2
Динамическая смена времени суток. Создание леса...

Динамическая смена
времени суток. Создание леса
и настройка света
Современные игры становятся все реалистичней.
Улучшается графика и внешний вид персонажей, а также
физика окружающей среды. Игровые миры становятся
больше, и каждый элемент приобретает свойства реаль-
ных аналогов. К примеру, вода может промочить одежду
персонажа, а на снегу или песке остаются следы.
Одной из самых приятных фишек в играх является
смена времени суток. Она не нова, однако подобное при-
родное явление делает игры более интересными. Нередко
функция смены дня и ночи вплетается в сюжет. Напри-
мер, персонажам разрешено исполнять определенные
действия только ночью (рис. 1) или с наступлением утра.

Рисунок 1

3
Урок 4

Данное природное явление очень легко реализовать


на движке Unreal Engine 4. Давайте создадим новую сцену.
Чтобы реализовать смену дня и ночи, нужно добавить
в проект специальный компонент Light Source, который
имитирует солнечный свет. В шаблонную сцену от треть-
его лица этот объект добавлен по умолчанию (рис. 2).

Рисунок 2
Выделим данный объект, найдем вкладку Transform
и поменяем режим Mobility (Мобильность) на Movable
(Движимый). Именно этот параметр позволит солнцу
передвигаться по небу (рис. 3).

Рисунок 3

4
Динамическая смена времени суток. Создание леса...

Теперь откроем меню Blueprints => Open Level Blue­


print, и перенесем переменную Light Source в окно Event
Graph (рис. 4–5).

Рисунок 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. Данное действие создаст зависимость


скорости от посекундной анимации.

Рисунок 11
Также добавим в скрипт ноду MakeRotator и подклю-
чим ее в стоке Y (Pitch). В результате солнце будет пере-
мещаться исключительно по оси Y (рис. 12).

Рисунок 12
Чтобы определить нужную координату вращения,
сверяемся с маркером координат в левом нижнем углу
вьюпорта (рис. 13).
Следующий этап — подключить LightSource с помо-
щью функции AddActorLocalRotation, которая генериру-
ет сам поворот (рис. 14).
А SkySphereBlueprint — с помощью Update Sun Direc­
tion. Эта нода отвечает за динамическую смену неба днем
и ночью (рис. 15).

8
Динамическая смена времени суток. Создание леса...

Рисунок 13

Рисунок 14

Рисунок 15

9
Урок 4

Последний шаг — соединить Event Tick и Add­Actor­


Local­Rotation (рис. 16).

Рисунок 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

Далее найдем в маркетплейсе Epic Games любой под-


ходящий сет природы, например, Open World Demo Col­
lec­tion, и добавим его в проект (рис. 23).

Рисунок 23
Данный сет содержит всевозможные элементы окру-
жения (деревья, кустарники, камни и т.д.) и текстуры, из
которых можно легко составить локацию, минуя этап мо-
делирования (рис. 24).
Давайте рассмотрим более сложный способ тексту-
рирования поверхностей и разберем, как смешивать не-
сколько текстур на одном объекте.
Чтобы воспользоваться этим методом, необходимо
создать новый образец материала, который будет со-
держать сборную информацию об используемых тек-
стурах. Назовем его Ground и применим к плоскости
(рис. 25).

14
Динамическая смена времени суток. Создание леса...

Рисунок 24

Рисунок 25

15
Урок 4

Далее переходим в редактор материала.


Создадим 4 одинаковых ноды Texture Sample. Две бу-
дут использоваться для окрашивания поверхности (Dif­
fu­se Maps), а другие две — для имитации объема (Normal
Maps) (рис. 26).

Рисунок 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

Последний шаг — подключить сами микшеры Lerp


в соответствующие пункты материала Ground (Base Color
и Normal). Готовая ветка показана на рисунке 33.
Чтобы повысить реалистичность текстуры, подключим
дополнительную ноду Constunt со значением 0 в Metallic
и Specular. В результате материал потеряет излишний
блеск, не свойственный траве и камню. Сдублируем дан-
ную ноду, выставим значение 1 и подключим ее в строку
Roughness, чтобы увеличить эффект шероховатости по-
верхности (рис. 34).

Рисунок 34
После этого нажимаем Apply и выходим из редактора.
Так как текстура была заранее применена к объекту,
во вьюпорте отобразится плоскость, покрытая травой
(рис. 35).

20
Динамическая смена времени суток. Создание леса...

Рисунок 35
Чтобы начать прорисовку листьев, откроем блок
Modes — вкладка Paint и выберем кисть Colors. По сути,
это особый мод, который позволяет изменять цвет вер-
шин (Vertex Color) (рис. 36).

Рисунок 36

21
Урок 4

Инструмент Colors обладает рядом настроек. Значе-


ние Radius отвечает за диаметр кисти, Strength — за силу
нажатия, а Falloff — за размытие края (рис. 37).

Рисунок 37
Также важно следить за значениями Paint Color и Erase
Color. Именно эти пункты отвечают за прорисовку и сти-
рание текстуры. Paint Color должен быть обязательно бе-
лым, а Erase Color — черным (рис. 38).

Рисунок 38
Теперь приступим к раскрашиванию локации. Убе-
димся, что нужный объект выделен во вьюпорте и про-
рисуем листья в устье реки. Если необходимо вытереть
листья с какого-то участка, зажимаем Shift, чтобы акти-
вировать ластик (рис. 39).

22
Динамическая смена времени суток. Создание леса...

Рисунок 39
Чтобы создать максимально реалистичную локацию,
недостаточно прорисовать текстуру травы. Давайте до-
бавим в сцену несколько камней. Для этого обратимся
в папку Rocks из скачанного сета.
Чтобы добавить какой-либо объект, просто перетя-
гиваем Static Mesh во вьюпорт (рис. 40).

Рисунок 40

23
Урок 4

Любой объект можно свободно масштабировать (хот­


кей R), поворачивать (хоткей E) и перемещать (хоткей W).
Таким образом, используя всего один вид камня можно
создать интересный ландшафт (рис. 41).

Рисунок 41

Рисунок 42
К примеру, если сделать какой-нибудь камень очень
большим, можно создать скалу, нависающую над речкой.
Также реалистичности помогут добиться сухие коряги

24
Динамическая смена времени суток. Создание леса...

и листья, разбросанные по берегу (рис. 42). Эти объекты


можно найти в папках Trees и Leaves.
Далее необходимо добавить растения. Для этого вос-
пользуемся папками Foliage, Flowers и Grass. Добавим
в сцену травы, цветов и папоротников. Замаскировав
мелкой растительностью стыки камня и земли, можно
создать более реалистичную сцену (рис. 43).
Таким же способом добавим деревья из папки Trees.
Не забываем, что чем больше объектов, тем больше ло-
кация будет походить на настоящий лес.

Рисунок 43
Последний этап — добавить функцию смены дня
и ночи. После этого нажимаем Play, чтобы посмотреть
результат работы.
Чтобы оценить, какие крутые локации можно со-
здать на движке Unreal Engine 4, рассмотрим несколько
видеопримеров:
■■ Lighthouse. Speed Level Design;
■■ Speed Level Design — Mountain Road;
■■ Speed Level Art — Fantasy Scene.

25
Урок 4
Динамическая смена времени суток.
Создание леса и настройка света

© Компьютерная Академия «Шаг»


www.itstep.org

Все права на охраняемые авторским правом фото-, аудио- и видеопро-


изведения, фрагменты которых использованы в материале, принадле-
жат их законным владельцам. Фрагменты произведений используются в
иллюстративных целях в объёме, оправданном поставленной задачей, в
рамках учебного процесса и в учебных целях, в соответствии со ст. 1274
ч. 4 ГК РФ и ст. 21 и 23 Закона Украины «Про авторське право і суміжні
права». Объём и способ цитируемых произведений соответствует
принятым нормам, не наносит ущерба нормальному использованию
объектов авторского права и не ущемляет законные интересы автора
и правообладателей. Цитируемые фрагменты произведений на момент
использования не могут быть заменены альтернативными, не охраня-
емыми авторским правом аналогами, и как таковые соответствуют
критериям добросовестного использования и честного использования.
Все права защищены. Полное или частичное копирование материалов
запрещено. Согласование использования произведений или их фраг-
ментов производится с авторами и правообладателями. Согласованное
использование материалов возможно только при указании источника.
Ответственность за несанкционированное копирование и коммерческое
использование материалов определяется действующим законодатель-
ством Украины.

Вам также может понравиться