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

Автор: Ханин Владимир

1
Оглавление

Работа с проектами 11

Редактор Unreal Engine 4 14

Редактор Уровня 14

Стандартный интерфейс 14

Панель вкладок 15

Toolbar 15

Вьюпорт 16

Название объекта 16

Поиск параметров 16

Значения по умолчанию 17

Состояние 17

Заблокированные параметры 17

Категории 18

Дополнительные параметры 18

Scene Outliner 18

Объекты и геометрия 19

Основные типы объектов 19

Манипуляция объектами 25

Интерактивная манипуляция 26

Виджет перемещения 26

Виджет вращения 27

Виджет масштабирования 28

Якорная точка объекта 28

Режимы трансформации мира и окружающей среды 29

Привязка 30

Привязка перемещения, вращения и масштабирования 30

Свойства привязки 30

Автор: Ханин Владимир

2
Шаг, заданный пользователем 31

FBX 33

Content Browser 33

Основы материалов 34

Математические выражения и сети 34

Текстуры 35

Параметры и свойства 35

Применение материалов на поверхности 35

Меши (модели) 35

Свойства материалов 36

Base Color 37

Roughness 38

Emissive Color 38

Normal 39

World Displacement и Tessellation Multiplier 41

Clear Coat 43

Блупринты (Blueprint) 44

Введение в Блупринты 44

Как работают Блупринты 44

Основные типы Блупринтов 44

Level Blueprint 44

Class Blueprint 44

Что ещё могут делать Blueprint’ы? 45

Создавать игрового персонажа 45

Создавать интерфейс 45

Редактор Блупринтов 45

Типы Блупринтов 46

Class Blueprint 46

Level Blueprint 46

Блупринты с Данными (Data-Only) 46

Автор: Ханин Владимир

3
Blueprint Interface 46

Blueprint Macro Library 47

Анатомия Блупринтов 47

Компоненты 47

График (EventGraph) 48

Функции (Functions) 48

Переменные(Variables) 48

Родительские классы 49

Стандартный Level Blueprint 51

Открытие Level Blueprint 51

Отсылка на объекты 52

Добавление событий 53

Blueprint Interface 59

Редактирование Blueprint Interface 59

Добавление Функций 60

Редактирование функции 60

Дополнительно 61

Прямые коммуникации 61

Использование прямых коммуникаций в функциях 63

Исправление проблем 64

Типы переменных 65

Переменные на панеле My Blueprint 66

Создание переменных 67

Переименование переменных 68

Параметры переменных 69

Установка и получение значений переменных 69

Получение 70

Установка 70

Контроль последовательности 83

Блок Switch (переключатели) 83

Автор: Ханин Владимир

4
Редактирование переключателей 84

Branch 86

Do N 86

DoOnce 87

FlipFlop 87

For Loop 88

For Loop With Break 88

Gate 89

Multi Gate 89

Sequence 90

Unreal Motion Graphics 91

Работа с UMG 91

Редактор Виджетов 92

График 92

Типы элементов 94

Список элементов Виджета 94

Common 94

Input 95

Panel 96

Primitive 97

Якоря UMG 97

Как работают якоря 98

Заготовки положения якорей 100

Установка якорей вручную 102

Шрифты 106

Ассеты шрифтов 106

Создание и импортирование шрифтов 106

Создание ассета шрифта 106

Импорт шрифтов 107

Редактор шрифта 108

Автор: Ханин Владимир

5
Шрифты в UMG 110

Стилизация виджетов 112

Состояния 112

Настройка изображения состояния 113

Изображения на основе текстур 113

Изображения на основе материала 114

Динамические материалы 114

Оттенок\отступ 115

Padding 115

Звуки 115

Отображение трансформации 116

Освещение 116

Источники освещения 117

Типы источников света 117

Подвижность источников освещения 117

Возможности статического и стационарного освещения. 117

Отражение света 117

Освещение динамики 119

Ambient Occlusion 120

Настройки AO 120

Тени от Masked материалов 121

Возможности Статичных источников освещения 121

Объемные источники 121

Тени от прозрачных материалов 122

Жесткость теней 123

Создание качественного освещения 125

Выделяющийся свет 125

Настройка освещения 127

Улучшение качества освещения 127

Предустановка качества просчета 128

Автор: Ханин Владимир

6
Ускорение процесса просчета 128

Настройка просчета освещения 128

lightmass Importance Volume 128

Настройки сцены 130

Настройки источников света 132

Настройки материала 132

Быстрая настройка 133

Глянцевая непрямая зеркальность 133

Формы захвата отражений 135

Форма сферы 135

Форма коробки 136

Редактирование 136

Визуализация 136

Настройка уровня для использования отражений окрущающей среды 137

Вопросы производительности 138

Ограничения 138

Тени 139

Static Lights 139

Прямое освещение каскадными картами теней(затенение всей сцены) 139

Тени Стационарных источников света 139

Динамические тени 140

Превью теней 140

Всё вместе 141

Постобработка 142

Color Grading 144

Тональная компрессия (Tone Mapping) 144

Коррекция цвета 145

Создание LUT-текстур 146

Depth of Field 146

Типы глубины резкости 147

Автор: Ханин Владимир

7
По Гауссу (Gaussian DoF) 147

Боке (Bokeh DoF) 147

Радиальный (Circle DoF) 147

Реализация 147

Адаптивная глубина резкости (Adaptive DoF) 156

Адаптация глаз (Exposure) 157

Гистограмма 158

Материалы постобработки 160

График постобработки (Post Processing Graph) 160

Использование материалов постобработки 160

Пример материала постобработки 161

Важные настройки 161

Смешивание различных типов материалов 162

Блок материала «SceneTexture» 162

Использование параметров G-буфера 163

CustomDepth 164

Временное сглаживание или Почему G-буфер «дрожит» 165

Известные проблемы 166

Blendables 166

Blendable 167

Контейнер Blendables 168

Blendable в пакете: как часть объекта (к примеру, волюма)/динамически созданные в


блупринте 169

Блупринт 169

Scene Fringe 171

Vignette 172

Аудио и звуки 173

Звуки 173

Обзор аудиосистемы 173

Импорт звуковых файлов 173

Типы звуковых ассетов 174


Автор: Ханин Владимир

8
Sound Cue 174

Sound Attenuation 175

Реверберация 175

Sound Class 175

Sound Mix 177

Dialogue Voice & Dialogue Wave 177

Общий объем, руководство 178

Volume Ducking 179

Оптимизация использования памяти 179

Аудио файлы 179

Импорт одного файла 180

Импорт мультиканального файла 180

Редактор звукового сигнала 181

Sound Wave 181

Импорт звуков 181

Создание звукового сигнала 182

Открытие редактора звукового сигнала 182

Audio Node Graph 182

Behavior Tree(Искуственный интелект) 185

Создание ассетов Behavior Tree 186

Cоздание Behavior Tree 186

Создание Blackboard 187

Создание задачи (Blueprint) 188

Создание Decorator (Blueprint) 188

Создание Service (Blueprint) 188

Редактирование Blackboard 188

Добавление ключей 189

Удаление ключей 189

Переименование ключей 189

Объектые ключи 189

Автор: Ханин Владимир

9
Редактирование Behavior Tree 189

Настройка Blackboard ассета для использования 190

Добавление выражения (composites and tasks) 190

Удаление выражения 190

Соединение выражений 190

Отсоединение выражений 191

Изменение свойств выражения 191

Добавление Decorates и Services к выражениям 191

Удаление Decorators и Services из выражений 192

Редактирование Decorators и Services 192

Особенности Composite Decorator 192

Изменение задачи (Blueprint) 193

Редактирование Service (Blueprint) 193

Редактирование Decorator (Blueprint) 193

Система частиц в UE 4 194

Введение 194

Шаг 1. Подготовка 194

Шаг 2: Добавляем случайности 196

Шаг 3 источника и назначения 197

Настройка исходного и целевого параметра луча 199

Автор: Ханин Владимир

10
Работа с проектами

При первом запуске у вас отобразится «Project Browser».


Project Browser является основным хранилищем ваших проектов. В нем вы можете создать
новый проект, так и открыть уже существующий проект с вашего компьютера. Так же имеется
поддержка проектов «Примеров», в которых можно оценить возможности и работу
Unreal_Engine_4.
Открытие проектов

Здесь будет показан весь список ваших проектов, когда хоть один будет создан. Изначально,
тут будет приведен список всех проектов в папке установки.
Двойной клик по иконке открывает проект.
Иконка проекта состоит из .png картинки размером 192х192 пикселей, которая находится в
папке с проектом. Есть возможность назначить горячую клавишу на обновление иконки, что бы
быстро снять скриншот и поставить его на место иконки. Если же вы вручную не предоставите
иконку, то она будет автоматически снята со скриншота, который создается каждый раз, когда вы
выходите из редактора или из проекта.
Что бы найти проект, вы можете ввести текст в поле Filter Projects. Будут показаны все
проекты, содержащие введенное имя.
Так же вы можете нажать Browse и выбрать проект на вашем компьютере. Вам нужно
выбрать .uproject файл.
Автор: Ханин Владимир

11
В Project Tab вы так же можете поставить галочку на Always load last project on startup, что
позволит пропусить окно Project Browser’а и запускать сразу выбранный вами проект.
Что бы вручную задать эту настройку, войдите в настройки редактоа, найдите вкладку
«General» > «Load & Saving» и установите настройку «Load the Most Recently Loaded Project at
Startup».
Создание новых проектов

Вкладка New Project позволяет вам создать новый проект из существующих заготовок. Blank
создает полностью пустой проект.
Всего имеется два типа заготовок: C++ и Blueprint. C++ означают, что логику вашего проекта
вы будете писать на C++. Другой типо означает, что для логики вам будет предоставлен
визуальный скриптовый язык — Blueprint. В процессе разработки можно совмещать два типа.
● Blank — чистый проект без какой-либо логики
● FirstPerson — заготовка под шутеры от первого лица
● Flying — Заготовка под простые «леталки»
● Puzzle — Заготовка для логической игры
● Rolling — Заготовка с катающимся мячиком
● (2D)Side Scroller — Платформер. 2D создает заготовку для 2х-мерного
платформера.
● Third Person — Заготовка с видом от третьего лица
● Top Down — Вид сверху и управлением мышью
● Twin Stick — Заготовка с аркадой видом сверху
● Vehicle — Заготовка для создания авто-симуляторов. Заготовка Vehicle
Advanced создает автомобиль с улучшенной системой подвески
Что бы создать новый проект:
1. Выберете заготовку из списка
2. Установите настройки проекта.
3. Введите название вашего проекта и путь к нему.
4. Нажмите Create
После создания, откроется редактор и запустится стандартный уровень.
Так же проект можно создать через выпадающеее меню во вкладке File > New Project…
Настройки проекта
При создании проекта, у вас имеется возможность установить его начальные настройки
графики и контента. После создания проекта, эти настройки можно изменить в настройках
проекта.

Автор: Ханин Владимир

12
Проект будет оптимизирован для ПК или консолей

Оптимизирует проект для запуска на Мобильных платформах

Данная опция позволяет создать проект с высокими настройками


графики. Используйте, если создаете проект для ПК или консолей

Данная опция позволяет создать проект с низкими настройками


графики. Используйте, если создаете проект для мобильных платформ

Включает в ваш проект стартовый контент. Не рекомендуется


включать, если вы создаете мобильную игру, так как данный контент
очень сильно влияет на размер.

Не включает в проект стартовый контент.

Автор: Ханин Владимир

13
Редактор Unreal Engine 4
В основу редактора Unreal Engine 4 входит редактор уровня. Данный режим доступен по
умолчанию и отображается в качестве самого главного редактора, поэтому изучение его является
неотемлемой частью изучение движка.
Редактор Уровня

Редактор уровней предоставляет весь основной функционал для проектирования и


создания уровней в проекте. В данном редакторе вы можете просмотривать, редактировать и
создавать уровни располагая на нем объекты, а так же манипулируя ими и изменяя их свойства.
Все сцены, которые вы создаете в Unreal Engine 4, интерпритируются как Уровни. Под
данным словом вы можете представлять себе 3х мерное окружение, в котором игрок существует
и взаимодействует с данным миром. Всё, что помещено на Уровень, будь то модель, персонаж,
источник света, называются Объект (Actor). Техническим языком, Объектом определяется всё в
движке, что имеет позицию, поворот и маштаб.
Процесс создания уровней состоит, в основном, из расположения различных объектов на
сцену. Это могут быть обычные декорации из Мешей, источников света и так далее. Так же на
уровне могут располагаться игроки, автомобили, частицы и все, что можно увидеть глазами.
Стандартный интерфейс

Поскольку интерфейс редактора очень гибок и позволяет изменять количество и


расположение панелей, внизу можно
найти список панелей по умолчанию.
1.Панель вкладок и Меню
2.Тулбар
3.Modes
4.Контент Браузер
5.Вьюпорты(По умолчанию
развернут режим перспективы)
6.Scene Outliner
7.Details
Панель вкладок

Автор: Ханин Владимир

14
Панель вкладок находится вверху основного окна и отображает единственную вкладку с
названием открытого уровня. Вкладки остальных окон могут быть помещены на данную панель
для более удобной навигации между разными редакторами. Панель имеет сходство с панелью
вкладок в веб браузере.
Имя вкладок отображают название открытого уровня или редактируемого ассета, в случае,
если вкладка принадлежит другому окну.
Справа на панеле вкладок отображается название проекта, в котором производится работа
в текущий момент.
Toolbar

Toolbar, как и в многих программах — это меню с быстрым доступом к наиболее


используемым функциям редактора Unreal Engine 4.

Сохраняет уровень. Сохраняет только уровень без остального контента.

Открывает Content Browser.

Открывает Магазин, где можно скачать примеры работ или купить


контент.

Открывает меню Quick Settings, которое предоставляет доступ к самым


важным настройкам редактора уровней.

Открывает настройки уровня в окне Details.

Предоставляет быстрый доступ к функциям создания и редактирования


Blueprint’ов

Позволяет создать или отредактировать существующую Matinee


последовательность

Производит операции пред-просчета. Данная операция просчитывает все


самые сложные аспекты уровня, например, такие как статическое освещение.

Компилирует и перезагружает код С++. Данная кнопка доступна лишь


если вы работаете над С++ проектом и у вас установлена Visual Studio 2015.

Запускает режим симуляции уровня.

Автор: Ханин Владимир

15
Запускает режим игры в нормальном состоянии. Нажав на стрелочку
рядом, можно установить дополнительные настройки.

Запускает уровень на любом из поддерживаемых устройств. Список


устройств можно увидеть, раскрыв меню кликом по стрелочке справа.

Вьюпорт

Вьюпорт — панель, где вы просматривайте и


редактируете ваш уровнь напрямую.
Панель содержит в себе несколько вьюпортов, которые
могут быть скрыты или раскрыты, в случае, если вам нужны
будут ортографические виды, для манипулирования
объектами.
Подробная информация о вьюпортах
Панель Details содержит информацию, утилиты и
функции специфичные для выбранного объекта во вьюпорте.
Также содержит ячейки для указания данных для:
перемещения, вращения и масштабирования выбранных объектов, также обеспечивает быстрый
доступ к дополнительным параметрам в зависимости от типа выбранного объекта. К примеру,
выбранный объект можно экспортировать в формате FBX и конвертировать в другой совместимый
формат. Также панель Details позволяет вам просмотреть используемый на объекте материал,
если такой имеется, и быстро открыть его для редактирования.
Название объекта
Объекты могут иметь понятные названия устанавливаемые непосредственно в редакторе.
Имена можно использовать чтобы вызвать эти объекты или найти их используя поисковую строку
на панели World Outliner.
Чтобы изменить имя объекта, просто введите его название в текстовую строку сверху на
панели Details.

Поиск параметров
Параметры отображаемые на панели Details можно отфильтровать используя поисковую
строку. Одновременно с тем, как вы вводите текст, параметры объекта автоматически
фильтруются в соответствии с вашим
текстом.

Чтобы сбросить фильтр нажмите на


крестик   в поисковой строке.
Поскольку эта строка скрывает любые
детали, которые не соответствуют критериям

Автор: Ханин Владимир

16
поиска, проверьте, чтобы
убедиться, что он чист, если вы не видите свойство, которое вы ищете.

Значения по умолчанию
Когда свойство изменяется на значение, отличное от значения по умолчанию —
отображается индикатор.
Все настройки могут быть легко сброшены в свои значения по умолчанию путём нажатия по
значку

 и выбрав для сброса значения из меню.


Значения настроек сброшено в дефолтное значение, как показано в меню, и больше не
отображается.

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

Заблокированные параметры
Свойства объявленные как EditConst, которые не могут быть изменены в редакторе,
отображают свои значения и освещены серым для отображения того, что их нельзя изменить.

Категории
Свойства на панели Display отображаются в категориях. Как правило, это категории —
Rendering, Lighting, Collision и т.д — они определяют как свойство определяются в коде, и
используется в качестве средства организации связанных с ним свойств на группы. Другие

Автор: Ханин Владимир

17
категории, которые вы видите на панели Details - Transform, Static Mesh, Materials, Actor, Code
View, Layers — настраиваемые виджеты разработаны, чтобы выставить определенные свойства
или функциональные возможности на видном месте, что упрощает их нахождение и
использование.
Дополнительные параметры
Некоторые свойства объявлены как расширенные и убраны по умолчанию с панели Details.
Категории, которые содержат дополнительные свойства имеют кнопку
. Нажатие на которую отобразит дополнительные свойства.
Scene Outliner

Scene Outliner отображает список всех объектов на вашем уровне в древовидной


системе(Для групп). Объекты могут быть вызваны через данную панель. Вы также можете
использовать выпадающее меню Info, что бы отобразить дополнительные колонки информации
об объектах.

Автор: Ханин Владимир

18
Объекты и геометрия

Независимо от того, как тип объекта(Ориг. название: Actor) вы используете на своем уровне


— источник света, СтатикМеш, систему частиц (Particle System Emitter) или что-то другое, — вам
нужно знать основы и способы создания и управления ими в ваших сценах.
Эти знания помогут решить следующие задачи: размещение объекта на сцене,
расположение их в пространстве, выбор нужного объекта, изменение параметров. Другими
словами, при создании уровней или сцен, объекты размещаются на карте, перемещаются для
создания среды, и их параметры и свойства изменяются для нужного вам внешного вида и
поведения.
Основные типы объектов
Ниже представлены типы объектов, которые вы будете наиболее часто использовать или
встречать при разработке уровней и сцен на UE4.
Объекты и геометрия
СтатикМеш — это простой тип объекта, который отображает 3х
мерную модель на сцене. Название вовсе не значит, что объект не
может перемещаться — под «статичным» понимается статическая
StaticMesh
геометрия объекта. Данный объект может перемещаться или
Actor
изменяться любыми способами в процессе. Эти объекты в основном
используются как объекты окружающего мира или декорации при
создании сцены. Подробней см. Static Mesh объекты.
Тип объектов, отображающий анимированный объект со
скелетом, чья геометрия может быть деформирована — в основном
через использование анимационных последовательностей, созданных и
импортированных из других программ для создания 3д-анимации. Эти
SkeletalMes
объекты зачастую используются для создания персонажей или других
h Actor
подвижных существ, а так же для комплексной механники и всего, что
должно менять форму или отображать другое комплексное движение.
Так же может использоваться в связке с Matinee для создания
анимаций.
Объекты игрового процесса
Trigger Триггеры — объекты, используемые для создания событий,
происходящих при взаимодействии каких-либо объектов в уровне.
Другими словами, они запускают события, отвечающие за определенное
действие в уровне. Все триггеры по умолчанию одинаковы и различаются

Автор: Ханин Владимир

19
лишь формой зоны воздействия триггера на активирующие его объекты —
коробка, капсула, сфера.

Box Trigger

Sphere Trigger Capsule Trigger


Объекты, доступные вам для задания анимации свойств объектов во
времени посредством анимационного редактора Matinee, и для создания
как динамических моментов игрового процесса, так и анимированных
сцен, «вшитых» в уровень. Система основана на использовании
Matinee специализированных анимационных дорожек, в которые вы можете
разместить ключевые кадры для задания значений определенных свойств
объектов уровня. Редактор Matinee близок к нелинейным
видеоредакторам, что делает его понятным для профессионалов в области
видео.
Источники освещения
Работает очень подобно обычной электрической лампочке,
Point распространяя свет во всех направлениях. Однако, для экономии ресурсов,
Light процесс упрощен до освещения во всех направлениях только из одной
точки пространства.
Распространяет свет из одной точки в форме конуса. Пользователю
досутпен один из двух конусов для освещения — конус с внутренним углом
и конус с внешним углом. В пределах конуса внутреннего угла свет
Spot достигает полной яркости. Как только вы выходите за пределы внутреннего
Light радиуса, вы попадаете в конус внешнего угла, освещение ослабевает,
создавая полутень, или смегчение освещения вокруг светового пятна.
Радиус освещения разделяет конусы. Проще говоря, это работает как
фонарь.
Симулирует свет, распространяемый источником, который находится
Directio бесконечно далеко. Это означает, что все тени, отбрасываемые этим
nal Light источником будут параллельны, что идеально при создании солнечного
света. Может иметь один из трех видов подвижности при размещении.
Эффекты и звуки
Объект, который используется для создания таких эффектов, как дым,
огонь, искры и др., путем создания частиц в форме спрайтов(лицом к
Particle
камере) или объектов. Данное поведение частиц определяется и
Emitter
контролируется специальной системой — Particle System, которая
создаются в Content Browser и изменяется в редакторе Cascade.
Автор: Ханин Владимир

20
Используются для воспроизведения звуков в пространстве. Эти звуки
Ambient могут быть зацикленны либо нет, иметь распространение в пространстве и
Sound усиление/затухание. Все это должно быть задано в звуковом сигнале и не
доступно в самом звуковом объекте.
Декаль — специальный объект, который проецирует материал на
другую поверхность без необходимости использования геометрии. Её
Декали можно использовать, например, для нанесения различных подтеков,
трещин, вмятин или грязи на геометрию, что бы сделать поверхность более
реалистичной и менее повторяющиеся
Прочее
Камера используется для того, что бы отображать сцену на экран. Она
Camera может существовать отдельно и использоваться вместе с инструментом
Actor Matinee, а так же может существовать в качестве компонента внутри других
объектов, например внутри персонажа.
Volume — специальная зона, в которой действуют какие-либо
постоянные правила. Эти правила могут быть как и для игрового процесса
Volume (например нанесение урона персонажу или изменение его типа
перемещения), так и для редактора (обозначать, где просчитывается свет
или навигация для ИИ).

Автор: Ханин Владимир

21
Размещение объектов

Каждая карта начинается с пустого ландшафта. Чтобы создать желаемую среду или
заполнить ее, нужно расположить объекты на карте. Это можно сделать двумя разными
способами, оба они с применением Content Browser’а. Результатом обоих способов, создание
объекта определенного класса вызовет так называемый Инстанс объекта. Данный Инстанс
копирует все свойства вызываемого объекта, однако эти свойства могут быть изменены по ходу
игры. Так же данный объект можно будет перемещать после того, как он был вызван.
Добавление объекта в ваш уровень, помимо прочего, автоматически добавляет его в список
Scene Outliner, находящийся на панели по умолчанию расположенной в левом верхнем углу
редактора.
Размещение объектов через Modes
Можно размещать объекты перетаскивая их из окна Modes. Для этого нужно зажать на
нужном объекте и вытащить его прямо во Вьюпорт в то место, где вы хотите разместить объект.

Размещение объектов через контекстное меню


Второй способ добавить объект в вашу сцену — выбрать его в Content Browser’е, а затем
используя контекстное меню разместить его на уровне.
● Выберите предмет в Content Browser

Автор: Ханин Владимир

22
● Правым кликом во вьюпорте откройте контекстное меню

● Выберете нужный предмет во вкладке Place Actor


У вас так же есть возможность добавлять различные виды предметов, когда какой-то
определённый тип уже выбран в Content Browser. Вы можете увидеть виды предметов, которые
можно добавить, если откроете всплывающее меню во вкладке Place Actor контекстного меню.

Если у вас выбран один или более объект во Вьюпорте, в так же и в Content Browser’е
выбран предмет, вы можете заменять выбранные объекты с нужным предметом вкладкой
Replace Selected Actors with в контекстном меню.
Размещение объектов через Drag&Drop
Вдобавок к вышеизложенному способу, вы так же можете размещать предметы на вашу
карту, перетаскивая их из Content Browser’а на экран уровня в том месте, где вам нужно его
расположить. При этом вид курсора меняется, чтобы вы знали, можно ли этот предмет поместить
на карте.
Если вы перетаскиваете объект в экран 3d-перспективы, там появляется тот самый объект на
месте курсора. Это облегчает размещение предмета
там, где нужно вам.
Виды предметов наиболее часто размещаемые
на карте с помощью Content Browser:
● Blueprints
● Частицы
● СтатикМеши
● Скелетал Меши

Автор: Ханин Владимир

23
● Звуки
Простое выделение
Наиболее простой способ выделить объект — нажать на него левой кнопкой мыши во
Вьюпорте. Нажатие на объект отменит ранее выделенные объекты и выделит текущий. Если
зажать Ctrl при нажатии на объект, он будет удален из выделенной группы.
Что бы выделить несколько объектов, нужно зажать Shift и начать выделять.
Этот способ хорош для выделения малого количество объектов или нескольких отдельных,
разбросанных по карте, но он может быть медленным или вовсе бесполезным при выделении
больших количеств объектов.

Когда вы выделяете несколько объектов, вы можете как перемещать их по карте группой,


так и менять свойства всей выделенной группы одновременно в панели Details.
Когда у вас выделено два или более объекта, вы можете создать из них Группу для более
простой и удобной манипуляции ими.
Выделение через Outliner
Scene Outliner это панель редактора, включающая в себя список всех объектов,
размещенных на карте. Вы можете выделить или отменить выделение отдельного объекта в
списке тем же самым способом, что и во Вьюпорте. Вдобавок, вы можете выбрать список
объектов, нажав на один объект в начале, зажав Shift, и нажав другой объект в конце списка, тем
самым выделив все, находящиеся между ними по списку в Outliner’е.
Выделение объекта в Scene Outliner так же выделяет его во Вьюпорте.
Прямоугольное выделение

Автор: Ханин Владимир

24
Прямоугольное выделение — быстрый способ выделить или отменить выделение
нескольких объектов на ортографическом экране уровня. Он требует зажатия определенных
клавиш и движения мышкой для создания «коробки». Все объекты, находящиеся в этой
«коробке» будут выделены или наоборот, в зависимости от комбинации нажатых клавиш, сняты с
выделения.
Левая кнопка Выделяет объекты в переделах «коробки». При этом выделение
мыши (далее — ЛКМ) на других объектах снимается.
Shift + ЛКМ Добавляет объекты в «коробке» к уже выделенным объектам.
Снимает выделение с объектов в «коробке». Выделенные
Ctrl + ALT + ЛКМ
объекты вне «коробки» остаются выделенными.
Манипуляция объектами

Под манипуляцией объектами понимается перемещение, вращение или масштабирование,


что является неотъемлемой частью процесса создания уровней. Есть два основных способа
манипулировать объектами в редакторе Unreal Engine 4.
Ручная манипуляция
Секция Transform на панели Details позволяет вам видеть информацию и манипулировать
выбранным объектом — Location (размещение в пространстве), Rotation (вращение), и Scale
(масштабирование). Так же это включает настройки мобильности объекта.

Каждая из опций манипуляции имеет поля численных значений для осей X, Y и Z. Вы можете
вводить нужные значения непосредственно в эти поля, чтобы настроить выделенные объекты.

Автор: Ханин Владимир

25
Когда выделено более одного объекта, и значения свойств различаются, поля будут отображать
совмещенные значения. В таких случаях ввод значения будет отражаться на всех выделенных
объектах.
Поля параметра Rotation (вращение) имеют уникальную возможность использоваться как
слайдеры. Нажимая и перемещая мышь, вы можете как бы крутить значение, увеличивая или
уменьшая его в зависимости от движения мыши.
Поля параметра Scale (масштабирование) могут быть закреплены нажатием на значок  .
При закреплении соотношение значений масштаба привязываются друг к другу, что позволяет
менять масштаб и размеры всего объекта пропорционально.
Интерактивная манипуляция
Второй метод манипуляции объектов включает использование визуального
инструмента(Виджета трансформации), отображающегося во Вьюпорте. Пользуясь этим
инструментом вы можете перемещать, вращать и масштабировать объект непосредственно в во
вьюпорте мышью. Этот метод имеет свои плюсы и минусы перед ручной трансформацией.
Несмотря на его максимальную наглядность, он может быть далек от точности, а точность порой
необходима. Сетка перемещения, сетка вращения и сетка масштабирования могут помочь вам
увеличить точность. Возможность привязки к определенным значениям или задание
определенного шага дадут вам более точный контроль над трансформацией.
В основном, виджет трансформации собран из нескольких частей, с определенным
цветовым кодом для каждой из осей.
● красный — ось Х; зеленый — ось Y; синий — ось Z
Виджет может выглядеть по-разному, в зависимости от того, какой тип манипуляции вы
используете. Выбрать вы можете, нажимая соответствующие иконки в панели инструментов в
правом верхнем углу экрана уровня.

»Вы можете переключаться между разными видами трансформационных виджетов


нажатием пробела на клавиатуре»
Виджет перемещения

Виджет перемещения состоит из набора стрелок с определенными цветами, отображающих


положительные значения каждой из осей пространства. Каждая из этих стрелок по сути является
ручкой, которую можно тянуть для перемещения объекта в пространстве по направлению
соответствующей оси. Когда курсор мыши перемещается на одну из этих «ручек», она выделяется
желтым цветом, сообщая, что объект будет перемещен по указанной оси.
Так же вы видите линии, выходящие из каждой ручки, пересекающиеся между собой,
создавая квадрат. Эти линии задают границы трех плоскостей (XY, XZ, YZ). Наведение курсора так
же выделит плоскость и обе относящиеся к ней стрелки желтым. Перетаскивание переместит
эктор по данной плоскости, состоящей из двух осей координат.

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

Автор: Ханин Владимир

26
потенциально меняя значения по всем трем осям сразу.

Виджет вращения

Виджет вращения это набор трех разноцветных дуг, каждая из которых относится к
соответстующей оси координат. Когда вы тащите одну из дуг, выбранный объект(ы) вращается
вокруг этой оси. По сути каждая из дуг лежит в плоскости создаваемой двумя из осей ,
следовательно ось перпендикулярны плоскости дуг. Т.е. дуга, лежащая в плоскости XY будет
вращать ваш эктор вокруг оси Z.
Тут так же, при наведении курсора, дуга выделяется желтым.

Когда вы начинаете вращать объект по дуге, вид виджета меняется, показывая лишь одну
активныю дугу в форме окружности, по которой и вращается объект. Угл поворота отображается в
реальном времени.

Виджет масштабирования

Автор: Ханин Владимир

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

Вы так же можете масштабировать эктор по всем трем осям, сохраняя тем самым его
оригинальные пропорции. Для этого нужно навести курсор на находящийся в центре куб виджета
и переместить мышь.

Якорная точка объекта


Меняя форму Actors, вы делаете это с заранее заданной центральной осью. В определенных
случаях вам может понадобиться изменить эту самую ось.

Нажатием СКМ и перетаскиванием мышью из центральной точки виджета перемещения, вы


временно смещаете центральную ось. Затем вы можете переключаться между различными
инструментами трансформации с помощью пробела на клавиатуре.

Теперь вы можете менять форму эктора, исходя из новой центральной оси.

Автор: Ханин Владимир

28
Как только вы кликните на любом объекте, центральная ось вернется в свое положение по
умолчанию.
Режимы трансформации мира и окружающей среды
При использовании интерактивного метода трансформации, вы можете выбрать отсылку
системы координат, которая вам нужна для трансформации. Это значит, что вы можете изменять
Actor в пространстве всего игрового мира, по его осям, либо изменят эктор по локальным осям
осям его окружающей среды. Это дает вам гораздо большую гибкость изменений и практически
невозможно при задании значений трансформации вручную, как минимум без огромного
комплекса вычислений.

По умолчанию все изменения происходят по осям мира. Чтобы переключиться между этими
двумя системами координат, нажмите иконку глобуса в панели инструментов в правом верхнем
углу. Глобус изменится на куб, что означает, что изменения привязаны только к окружающей
среде.
Чтобы переключиться обратно, нажмите на иконку куба.

Привязка
Каждый из трех инструментов трансформации имеет возможность привязки к числовым
шагам. Это полезно для точного размещения объектов вашего уровня. Привязка может быть
осуществлена 4-мя разными способами:
● сетка перемещения
● сетка вращения
● сетка масштаба
● привязка верщин

Автор: Ханин Владимир

29
Привязка перемещения, вращения и масштабирования

Сетка перемещения позволяет привязаться к трехмерной незаметной сетке внутри сцены.


Сетка вращения предусматривает возрастающую привязку вращения. Сетка масштаба позволяет
виджету масштабирования привязаться к дополнительным значения шага, но так же может быть
задано в процентном значении в настройках привязки.
Каждая из сеток для привязки активируется нажатием на соответствующую иконку все в той же
панели инструментов. Иконка активной привязки будет выделена подсветкой. Шаг каждой сетки
может быть изменен перетаскиванием иконки активации вправо.
Свойства привязки
Настройки каждой из сеток привязки могут быть заданны в панели Editor Preferences, вместе
с некоторыми другими свойствами привязки. Выберете Edit > Editor Preferences > Viewports, затем
прокрутите меню вниз до пункта Snap.

Шаг, заданный пользователем

Используя одну из сеток привязки, вы можете задать свое значение шага в колонке «user
defined increments»

Автор: Ханин Владимир

30
Автор: Ханин Владимир

31
Стандарты контента Unreal Engine 4
В приведенном ниже списке рассмотрены стандарты контента для Unreal Engine.
Хотя ваши личные проекты могут использовать любой стандарт, который вам нравится, любое
содержание, которое вы хотите распространять другим пользователями вручную или через
специализированные магазины (нп. Marketplace) должно следовать этим стандартам.
Static Mesh (3D модели) стандарты
● Формат файла: FBX.
● Масштаб: 1 Unreal юнит = 1 сантиметр.
● Якорная точка (pivot): Должен быть расположен в месте удобном для размещения, как
правило в нижней центральной части объекта.
● Ориентация: Все модели должны быть ориентированны передом в сторону
положительного направления оси X.
● UV (текстурные координаты): Меши могут использовать перекрывающиеся UV части для
максимального использования текстур.
Тем не менее, они также должны иметь отдельный UV-канал, для карт теней, в которых все UV-
части равномерно выстроены без какого-либо дублирования.
UV развертки для карты теней могут быть сгенерированы в пределах Static Mesh редактора, хотя
их создание в 3D-пакете обеспечит дополнительное редактируемость.
● Материалы: Все меши должны иметь материал применяемый к ним.
● Нормали: Если визуальное качество требует использования групп сглаживания, убедитесь
что вы включили их при экспорте из 3D пакета и при импорте в UE4.
● Максимальное число вершин: Для мобильных устройств вы ограничены числом вершин в
65535. На других же платформах таких как ПК, вы ограничены самой платформой и должны
провести соответствующие тесты.
● Коллизии: Везде где это возможно меши должны иметь свои коллизии. Желательно
использование только примитивных моделей коллизий ради оптимизации.
Skeletal Mesh (меши со скелетной анимацией) стандарты
● Формат файла: FBX.
● Скелет: Скелетал меши должны иметь соответствующий им скелет.
● Масштаб: 1 Unreal юнит = 1 сантиметр.
● Якорная точка (pivot): Должен быть расположен в месте удобном для размещения. Для
скелетал мешей как правило прямо между ног.
● Ориентация: Все модели должны быть ориентированны передом в сторону
положительного направления оси X.
● UV (текстурные координаты): Меши могут использовать перекрывающиеся UV части для
максимального использования текстур.
● Материалы: Все меши должны иметь материал применяемый к ним.
● Нормали: Если визуальное качество требует использования групп сглаживания, убедитесь
что вы включили их при экспорте из 3D пакета и при импорте в UE4.
● Максимальное число вершин: Для мобильных устройств вы ограничены числом вершин в
65535. На других же платформах таких как ПК, вы ограничены самой платформой и должны
провести соответствующие тесты.
● Коллизии: Все скелетал меши должны иметь соответствующую им коллизию.
Текстуры
● Форматы:
o .bmp
o .float
o .pcx
o .png
o .psd
o .tga
o .jpg
Автор: Ханин Владимир

32
o .exr
o .dds — Кубмап текстура (32бита/Канал, 8.8.8.8 ARGB 32 bpp, без знака).
o .hdr
● Разрешение:
o Все текстуры должны иметь разрешение кратное двум (32, 64, 1024, 2048 и т.д.). Текстура
не обязательно должна быть квадратной формы, однако размеры все равно должны быть ^2
(например 512х1024).
o Если вы желаете использовать мипмап уровни ваша текстура не должна превышать
разрешение 4096px (4К).
o Имейте ввиду что некоторые графические карты имеют пределы разрешения до 8192px
(8К).
o Epic Games наиболее часто использует текстуры разрешением 2048px.
● Совет:
o Часто бывает полезным хранение маски для ваших текстур в альфа канале.
FBX
FBX это формат файлов разработанный и принадлежащий Autodesk. Он используется для
обеспечения взаимодействия между цифровыми приложения создания контента, таких как
Autodesk MotionBuilder, Autodesk Maya, и Autodesk 3ds Max. Программное обеспечение Autodesk
MotionBuilder поддерживает FBX изначально, в то время как Autodesk Maya и Autodesk 3ds Max
включает FBX плагины.
Unreal Engine имеет поддержку FBX, который позволяет обеспечивать импорт с любого
приложения для создания контента, поддерживающих данный формат.
Content Browser
Content Browser(Контент Браузер) — панель, где хранятся все Ассеты (контент) вашего
проекта, где можно импортировать новые, организовывать, просматривать, открывать и
модифицировать существующие. Так же Контент Браузер позволяет распределять контент по
папкам, для того, что бы удобно работать с ним в процессе создания проекта. Так же позволяет
копировать или перемещать Ассеты между папками.

Автор: Ханин Владимир

33
Основы материалов
Материалы — это, пожалуй, один из самых критических аспектов того, как выглядят ваши
объекты на сцене. Этот документ дает возможность быстро понять, как начать создавать ваши
собственные материалы.
Математические выражения и сети
Первая и самая важная вещь, которую нужно знать о материалах это то, что они
сконструированы не через код, а через сеть визуального скриптинга или нодов в Material
Editor (Редакторе материалов). Каждая нода содержит HLSL код для выполнения специфических
задач. Это значит, что создавая материал, вы создаете код путем визуального скрипта.

На данной картинке мы имеем очень простую систему, определяющую материал грубого


деревянный пола. Однако, схемы не обязательно должны быть простыми. Часто различные
материалы имеют большое количество различных нодов. Вы можете найти документацию для
всех доступных выражений в соответствующем разделе.
Как вы наверное знаете, цвет в терминах цифрового изображения это совокупность четырех
основных каналов.
R — Red; G — Green; B — Blue; A — Alpha
Так, для всех цифровых изображений, для каждого пикселя, общее количество каждого из
этих каналов может быть представлено как число. Большая часть работы с материалом это
простая манипуляция с этими числами, основанная на условиях среды и математических
выражеениях.
Материалы используют число с плавающей точкой для данных, которые отвечают за цвет. В
основном это значит, что эти числа для каждого канала варьируются от 0.0 до 1.0 вместо 0 до 255,
как это происходит в других программах для работы с цифровым изображением. Важно
подметить, что вы всегда можете увеличивать ваши значения, что в некоторых случаях может
привести к различным последствиям или даже нужным эффектам. К примеру, посылая цвет в
свойство «Emissive» в настройках материала, которое вызывает внутреннее свечение, при
значениях выше 1.0 увеличивается яркость этого свечения.
Задумываясь о материалах в движке Unreal Engine 4, имейте ввиду, что множество расчетов
выполняется независимо от каждого цветового канала. Например, нода Add (Добавить) имеет два
imput (ввода) и каждая из них приходится на канал. Если вы смешаете таким образом два RGB
цвета, тогда на выходе цвет будет:
Red 1 + Red 2 = Red 3
Green 1 + Green 2 = Green 3
Blue 1 + Blue 2 = Blue 3
Ноды, которые выполняют поканальные операции обычно требуют входы (imputs), которые
имеют такое же число каналов. Например, вы можете добавить цвет RGB к другому RGB, но вы не
можете добавить RGBA ( 4- канальныйвектор) в RGB ( 3 канала), поскольку цвет RGB не имеет
альфа — канала. Это приводит к ошибке — материал не будет компилироваться. Исключением из
Автор: Ханин Владимир

34
этого правила является тот случай, когда одним из input является одноканальным (скалярный). В
этом случае скалярное значение просто применяется ко всем другим каналам.Например:
Если добавить RGB к скалярному значению 1.0, результат будет выглядеть так:
0.35 + 1.0 = 1.35
0.28 + 1.0 = 1.28
0.77 + 1.0 = 1.77
Текстуры
В случае материалов, текстуры просто представляют вид данных, состоящий из пикселей.
Эти данные могут быть цветом обьекта, то как он блестит, его прозрачность и другое.
Существует способ олдскульного создания Материалов через текстуры, когда применяется цвет к
игровым моделям. Создание текстур таким способом все еще сложно и в настоящее время —
нужно задумываться о том, что текстура, это компонент материала, и то, что конечный результат
вашей текстуры не сопадает с таковым для материала.
Один материал может использоваться для различных текстур, каждая из которых может
быть применена для различных целей. К примеру, простой материал может иметь Base Color
texture, Specular texture, и Карту Нормалей. В добавок это может быть карта свечения или
карта Roughness в альфа канале одной или более этих текстур.
Вы также можете заметить, что один и те же текстуры, использующиеся для различных
целей, различаются только цветом.
Однажды созданная и добавленная в Unreal Editor, тестура преваращается в материал при
помощи нод Material Expression таких как Texture Sample. Вы можете их видеть на картинке выше,
там где показана система материала для грубого деревянного пола. Эти ноды делают ссылку на
текстуру , которая находится за пределами материал редактора, которую можно найти отдельно
в Content Browser . В отличие от других 3Dприложений, здесь нет другого способа хранить
текстуры для материала, кроме вышеуказанного.
Для получения дополнительной информации о текстурах и их создании, пожалуйста
обратитесь к документации Текстур.
Параметры и свойства
Многое из того, что вы можете сделать с материалами, управляется различнымисвойствами,
установленными в самом материале. И, прежде чем вы сможете понастоящему раскрыть
потенциал системы материалов Unreal Engine, полезно просмотреть на
доступные свойства и параметры этой системы. Они представлены ниже
Применение материалов на поверхности
То, каким образом применяются материалы зависит и от типа поверхности.
Меши (модели)
Применение Материала к Мешам (статических, динамических, или скелетных) может
совершаться различными способами. Просто используйте слот «Materials element»,
расположенный в свойства хMesh. Он может быть найден в панели Details, когда вы добавляете
ваш Mesh на уровень, или, щелкнув правой кнопкой мыши на Mesh, выберите Свойства из
контекстного меню. Вы также найдете их в различных редакторах, таких как Static Mesh Editor или
редактор Personal Skeletal Mesh.

Автор: Ханин Владимир

35
1. Выберете Mesh, для которого вы хотите применить Материал.

2. На панели Details щелкните стрелку на выпадающем окне Material Element. Это


покажет все доступные Материалы в Вашем проекте, и панель поиска.

3. Кроме того, вы можете выбрать нужный материал в Content Browser, а затем


нажмите кнопку со стрелкой, чтобы применить его.

Если вы хотите, чтобы материал устанавливался по умолчанию для данного объекта,


обязательно установите материал в свойствах, либо щелкнув правой кнопкой мыши и выбрав
Свойства изнутри Content Browser или двойным щелчком на Mesh в Content Browser и установите
материал с помощью редактора (например, Static Mesh Editor или Personal ).
Помните, что если вы измените Материал из редактора или Content Browser, изменение
затрагивает ваш asset. Если вы измените его , используя информацию из Mesh уже помещенные в
сцене, то это влияет только на копию Меша.
Свойства материалов

Автор: Ханин Владимир

36
Свойства материала нужны для визуализации материала и его отдельных свойств, например
способность отражать окружающую среду или рельеф материала.
Не все свойства обязательно применять и вносить в них изменения, так как они имеют
значения по умолчанию. Например, когда вы создаете светящийся материал, вам может
понадобится только Emissive Color, так как другие свойства не будут иметь значения или будут
недоступны, в зависимости от Shading Model параметра. Из-за этого важно понимать, как должен
выглядеть ваш материал в итоге. Всего существует три самых важных параметра:
Blend Mode — Определяет, как материал смешивается с пикселями позади.
Shading Model — Определяет, как поверхность материала влияет на свет.
Material Domain — Определяет, как будет использоваться материал.
Редактор материалов автоматически отключает неиспользуемые свойства в зависимости от
параметров.
Подробнее о параметрах материалов.
Base Color

Base Color определяет цвет материала.


Metallic

Данное свойство определяет, насколько материал металезированный. Неметалические


материалы должны иметь Metallic на нуле, в то время как металические — на еденицу. Для чистых

Автор: Ханин Владимир

37
поверхностей, рекомендуется использовать значение 0 ИЛИ 1. Для грязных, ржавых и т.п
поверхностей возможно потребуется использовать значение между 0 и 1.
Specular

Данное свойство влияет на то, насколько блестящий неметаллический материал. На


металлический материал данное свойство влиять никак не будет.
На практике, данное свойство должно оставаться без изменений(по умолчанию — 0.5) в
большинстве случаях.
Roughness

Шерховатость материала. При увелечении данного свойства, материал будет сильнее


рассеивать свет. Благодаря чему, нулевое значение будет означать полностью гладкий и
отражающий материал, а значение 1 будет полностью рассеивать свет.
Emissive Color

Определяет, какая часть(при использовании маски) материала будет светится.


Значения больше 1 позволят создать HDR эффект и эффект свечения.

Автор: Ханин Владимир

38
Opacity

Данное свойство определяет прозрачность материала и доступно только при Translucent


Blend Mode.
0 — Полностью прозрачный
1 — Полностью видимый
 
 
Opacity Mask

Аналогично Opacity, однако используется с Masked Blend Mode. Так же отличается от Opacity
тем, что имеет лишь два состояния: Полностью прозрачный или полностью видимый.
Можете использовать Opacity Mask Clip Value для того, что бы отрезать маску для
использования с данным свойством.
Normal

Автор: Ханин Владимир

39
Данное свойство использует карту нормалей, которая служит для того, что бы создать
рельеф(Эффект, не реальное выдавливание) для поверхности.
World Position Offset

Данное свойство позволяет манипулировать вертексами объекта с помощью материала. Это


полезно для того, что бы менять форму статичного объекта.
При использовании WPO для того, что бы изменить границы объекта, учтите, что рендер все
равно будет использовать оригинальную геометрию, поэтому могут быть артефакты в тенях.
 

Автор: Ханин Владимир

40
World Displacement и Tessellation Multiplier

World Displacement работает примерно как и WPO, однако использует тесселляцию вместо
обычных вертексов(как WPO). Для использования данного свойства, опция Tessellation должна
быть включена в параметрах материала.
Tessellation Multiplier определяет силу тесселляции и используется для того, что бы добавить
делатей там, где нужно. При использовании с World Displacement значение нужно выставить
больше нуля.
При использовании World Displacement для того, что бы изменить границы объекта, учтите,
что рендер все равно будет использовать оригинальную геометрию, поэтому могут быть
артефакты в тенях. 
Subsurface Color

Определяет цвет света, который проходит свозь поверхность. Например для материала
людской кожи, цвет Subsurface должен быть красным, что бы симулировать влияние крови на
свет, проходящий сквось поверхность.
Данное свойство доступно только при Translucent Blend Mode.

Автор: Ханин Владимир

41
Ambient Occlusion

Данное свойство отвечает за само-затенение, которое часто зависит от неровности объекта


или рельефа поверхности. Обычно соеденяется с АО картой, которая генеруется сторонней
программой(пр: 3Ds Max или Zbrush).
Refraction

Свойство, отвечающее за приломляемость поверхности. Полезно для таких поверхностей,


как стекло или вода, которые приломляют свет, проходящий свозь материал.
Коэффиценты приломления для некоторых материалов:
Воздух — 1.00
Вода — 1.33
Лед — 1.31
Стекло — 1.52
Алмаз — 2.42
 

Автор: Ханин Владимир

42
Clear Coat

Данный эффект хорошо симулирует двуслойный материал, который имеет прозрачный слой
поверх. Например деревянная поверхность покрытая стеклянной плитой для гладгости.
Используется с Clear Coat Shading Model параметром.
Данная модель имеет два свойства:
Clear Coat: сила эффекта. 0 — обычный материал, 1 — Материал м Clear Coat слоем.
Полезно для использования маски.
Clear Coat Roughness: Шерховитость Clear Coat слоя.

Автор: Ханин Владимир

43
Блупринты (Blueprint)
Блупринты — это скриптовая система в Unreal Engine 4, которая представляет собой
визуальный интерфейс для создания элементов геймплея. Система очень гибкая и очень мощная,
и позволяет дизайнерам использовать концепцию и почти полный потанциал программирования.
С помощью Блупринтов, разработчики могут создавать такие вещи, как:
● Игровые режимы — Устанавливать правила игры, изменять поведение игры в общем
плане
● Игроки — Назначать игроков, придавать им особые черт и вид.
● Камеры — Создавать виды для обзора и изменять свойства камер в реальном времени
● Управление — Назначать кнопки, для управления персонажем, автомобилем, или
внешнем уровнем
● Вещи — Оружие, подбираемые предметы и прочее
● Окружение — Созание случайно генерированного окружения
Введение в Блупринты
Блупринты являются типом ассетов, которые предоставляют пользователям интуитивную
систему для создания специальных типов объектов, которые вследствие можно поставить на
сцену. Так же Блупринты используются для создания игровой логики уровня или логики уровня,
при этом не написав ни строчки кода, что облегчит написание логики не только программистам,
но и дизайнерам, кто не силен в программировании.
В качестве облегчения перевода и узнаваемости, все типы, кнопки, блоки, переменные и так
далее, будут написаны на Английском языке.
Как работают Блупринты
Блупринты используют встроенную в редактор систему для визуального построения
логических последовательностей. Соединяя блоки, события, функции и переменные, возможно
создать достаточно сложные логические элементы, которые будут создавать геймплей вашей
игры.
Основные типы Блупринтов
Два самых используемых типов блупринтов — Level Blueprint и Class Blueprint.
Level Blueprint

Level Blueprint исполняет такую же роль, как и Kismet в UDK, и имеет почти теже
возможности. Каждый уровень имеет свой Блупринт уровня. Сам Level Blueprint используется для
манипулирования объектами на сцене в процессе игры, так же контролировать Matinee, стриминг
уровней, чекпоинты и остальные системы, которые относятся к уровням. Level Blueprint’ы так же
могут взаимодействовать с Class блупринтами, которые имеются на сцене.
Class Blueprint

Class Blueprint позволяют создать сложные объекты для последующего размещения на


сцене, такие как открывающиеся двери, ящики с предметами, кнопки и т.п. На изображении
сверху напольная кнопка и дверь являются разными блупринтами и содержат определенный
Автор: Ханин Владимир

44
скрипт для взаимодействия с игроком, проигрывания анимации и звука, открытии дверей и так
далее.
В данном случае, нажатие кнопки активирует событие внутри Блупринта дверей, открывая
их. С тем же успехом можно сделать взаимодействие любых блупринтов, а так же срабатывания
событий не только на игрока, но и на другие объекты или на Level Blueprint. Class Blueprint могут
быть полностью индивидуальными, а значит, для их работы не обязательно воздействовать из вне
и они могут работать и производить какие-либо действия сами по себе.
Что ещё могут делать Blueprint’ы?
Создавать игрового персонажа

Игровые персонажи тоже являются Классовыми Блупринтами, с помощью которых вы


можете создавать все нужные вам элементы и логику вашего будущего персонажа. Вы можете
устанавливать параметры камеры, устанавливать управление персонажем, включая мышь и даже
сенсорные экраны и создавать вещи, на которые ваш персонаж способен.
При создании Блупринта Персонажа(Character Blueprint), у вас будут уже заготовленные
настраевымые свойства для передвижения, прижка, плаванья и падения. Все, что нужно, это
добавить управление и определить, как ваш персонаж будет вести себя.
Создавать интерфейс

Интерфейс создается так же с помощью блупринта, похожего на классовый, однако он


привязывается к геймплею, что не требует размещения его на уровне.
Вы можете установить Блупринт интерфейса так, что бы он читал переменные из других
Блупринтов и отображал с помощью этой информации какие либо вещи, например очки,
показатель жизней персонажа, количество имеющихся патронов в запасе и так далее. С помощью
HUD(интерфейс) блупринта можно так же создавать кнопки, что бы создавать различного рода
меню.
Редактор Блупринтов

Автор: Ханин Владимир

45
Создавая любую логику с помощью Блупринтов, вы будете работать с Редактором
Блупринтов. Редакторы бывают различных типов, в зависимости от редактируемого Блупринта.
Основной функционал редактора остается везде(Графики, переменные и т.д.), однако некоторые
Блупринты, в особенности Level Blueprint не имеют своих свойств или компонентов.
Типы Блупринтов
Class Blueprint
Классовый блупринт — ассет, позволяющий создавать функциональные объекты для
вашей сцены, которые могут состоять из какой либо логики или просто набора
объектов(СтатикМеш, источник света, текст, деколь и т.п). Можно так же комбинировать,
создавая сложные объекты, с которыми может взаимодействовать игрок. Данный тип Блупринтов
предназначен для помещения на сцене, как и обычные объекты.
Level Blueprint

Level Blueprint — специальный тип блупринтов, который выполняется на всей сцене


целиком. С помощью данного типа, можно производить манипулиции над
отдельными объектами или классовыми блупринтами в зависимости от каких либо событий.
Данный тип схож с системой Kismet, которая была создана для таких же целей в UDK (Unreal
Engine 3).
Level Blueprint так же предоставляют контроль над подгрузкой уровней и сценами Matinee.
Блупринты с Данными (Data-Only)

Данный тип наследует код, переменные и компоненты от своего родителя. Это


позволяет модифицировать какие либо свойства того родителя, при этом не
добавляя новых элементов.
Дата блупринты редактируются в компактном редакторе свойств, однако могут быть
конвертированы в полноценные Блупринты, путем добавления кода, переменных и компонентов
в полном редакторе Блупринтов.
Blueprint Interface

Blueprint Interface — коллекция функций, которая может быть добавлена в другие


Blueprint’ы. Любой Блупринт, в который добавлен Blueprint Interface, будет иметь те
функции. Создать функциональность данных функций можно внутри каждого Блупринта, куда
добавлен Интерфейс.
Работа в Blueprint Interface может быть примерно такой же, что и в остальных типах, однако
они имеют некоторые ограничения, которые не позволяют:
● Добавлять компоненты
● Редактировать или создавать какую либо логику.
Автор: Ханин Владимир

46
Придание какой либо логики функциям из Blueprint Interface возможны только внутри
конкретных Блупринтов, где добавлен BI.
Blueprint Macro Library
Blueprint Macro Library — Специальный тип булпринтов, который не несет в себе никакой
посредственной полезности на игру. Данный тип используется для создания
математических последовательностей, которые в последующей работе над
обычными Блупринтами могут быть использованы для ускорения работы. Обратите
внимание, что в Макро нельзя создавать исполняемые последовательности (Например Установить
цвет лампочки), а только операции над переменными.
Макро Блупринты не требуют компиляции. Изменения в Макро Блупринте повлечет
изменения за собой во всех блупринтах, где используется блок данного Макро.
Анатомия Блупринтов
Вся функциональность Блупринтов использует различного рода элементы, которые и
составляют окончательный вариант вашего Блупринта.
Компоненты

Компоненты — объекты, которые могут быть добавлены в Блупринт. Этим объектами могут
быть СтатикМеши, источники света, СкелеталМеши и т.п. Компоненты можно добавть через меню
Components во вкладке с таким же именем. Использовать компоненты в логике блупринта можно
с момощью панели переменных.
Construction Script

Construction Script представляет собой систему скриптов, использующихся исключительно в


целях настойки Блупринта. Данный элемент не играет никакой роли на игровой процесс и служит
лишь для изменения параметров или взаимодействия с блупринтом из редактора. Вся логика
Construction Script’а активна только в самом редакторе. Данная система может быть невероятно
полезна при настойке блупринта, уже находящегося на уровне. К примеру у вас есть блупринт, в
компонентах которого есть источник освещения. Construction Script позволяет ещё на стадии
проектирования уровня выставить цвет данного источника света в конкретной копии данного
блупринта на сцене.
Автор: Ханин Владимир

47
График (EventGraph)

EventGraph — Самый главный элемент редактора Блупринтов. Это место, где вы строите
логику вашего Блупринта, используя события и функции, соеденяя это все в последовательность
действий.
Функции (Functions)

Функции могут принадлежать только конкретному Блупринту и используются подобно


Макро функциям, однако различие в том, что в функции позволяют создавать внутри себя
логические последовательности, состоящие из исполняемых блоков.
Переменные(Variables)

Переменные — Специальный тип данных, который хранит в себе какое либо


значение(Текстовое, числовое, векторное и т.д), а так же может ссылаться на какой либо объект.
Переменные используются для назначения значений и последующего доступа в Блупринтах.
Классовый Блупринт
 Классовый Блупринт (Class Blueprint), или просто Блупринт — Ассет, который позволяет
хранить в себе набор объектов, а так же логическую последовательности, которая будет
выполняться внутри данного Блупринта в процессе игры. Блупринты создаются в специальном
редакторе, а логика пишется на визуальной основе, вместо написания кода вручную. После

Автор: Ханин Владимир

48
создания Блупринта и написания всей логики внутри него, Блупринт может быть помещен на
сцене как объект.
Родительские классы
Существует несколько типов классовых Блупринтов, которые можно создать. Эти типы
определяют родительские классы (Parent Class). При создании Блупринта с родительским классом,
он автоматически будет наследовать функциональность своего родителя.
Основные родительские классы:
Actor Блупринт, который может быть помещен на сцену как объект.
Pawn Блупринт, в который можно «вселиться» и управлять им.
Блупринт, который соддержит в себе функциональность готового
Character
персонажа. Так же является Pawn’ом
PlayerControll
Блупринт, который отвечает за управление Pawn классом.
er
Блупринт, который отвечает за игру, её правила, очки, а так же остальные
Game Mode
главные классы (Pawn, HUD, Controller).
Несмотря на то, что существует основные родительские классы, существует ещё множество
классов, которые используются менее активно, однако так же могут пригодиться в работе.
Существует возможность создавать Блупринты, которые будут наследоваться от созданных
вами Блупринтов. Таким образом, вы можете создать свой Блупринт с определенным
функционалом, а потом использовать его как родительский класс для придания этой
функциональности другим блупринтам.
Например, вы создаете классовый Блупринт под названием Animals (животные) и создаете в
нем определенную логику, например голод, жажда, энергия и так далее. Создаете
последовательность и функции, которые будет контролировать эти показатели. После чего вы
можете создать Блупринт Dog(собака) с родительским классом Animals, и можете создать
Блупринт Cat (кошка), который так же будет наследоваться от Animals. Таким образом, оба ваших
Блупринта (Cat и Dog) будут иметь общую логику и функциональность, среди которых будут
жажда, голод, энергия и так далее. При этом не нужно будет создавать эту функциональность ещё
раз, она сразу же будет работать за счет родительского класса Animals.

Автор: Ханин Владимир

49
Иногда немного трудно решить, какой тип Блупринта выбрать, особенно когда дело
касается Макро библиотеки или Классовых Блупринтов(Class Blueprint). В таком случае стоит
задать себе вопрос:
Могут ли существовать копии(Instances) этого Блупринта на сцене?
Если возможно создание копий(Например телевизор, который может быть включенным или
выключенным, или который можно расстрелять), то, вероятно, наилучшим решением будет
создать Class Blueprint. Если же вы просто хотите создать какую либо функцию, которая поможет
вам сократить время написания скрипта, то лучше использовать Macro Блупринт.
Создание через Content Browser
Что бы создать Блупринт через Content Browser(CB), Вам нужнно:

1. В Контент Браузере кликнуть на кнопку   или нажмите ПКМ на


свободном месте в Content Browser окне
2. Выбрать Blueprint в разделе Assets
3. Выбрать родительский класс:

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


Ввести имя Блупринта
После создания Блупринта, в углу его иконки в CB будет звезда, означающая, что ваш
Блупринт не сохранен.
● Что бы сохранить Блупринт, нажмите на него Правой клавишей мыши и выберете Save.
Либо нажмите кнопочку Save вверху CB
● Что бы открыть редактор Блупринта, нажмите на Блупринт два раза левой кнопкой
мыши.меню (ПКМ в Контент Браузере).
Создание через Class Viewer
Что бы создать Блупринт через Class Viewer:
1. В меню Class Viewer’а кликнете на Filters
2. В открывшимся меню выберете Blueprint Bases Only
Как только вы отфильтруете список классов, найдите тип Блупринта, который вы хотите
создать.
● Кликнете по стрелочке справа от нужного вам типа.
● В открывшимся меню выберете Create Blueprint.
● Откроется форма создания Блупринта. Введите имя и выберете папку, где вы хотите
создать ваш Блупринт.
● Нажмите на кнопку Creare [путь]/[имя] вверху формы создания и ваш Блупринт будет
создан и открыт редактор этого Блупринта.
● Что бы закончить процесс создания, нажмите кнопку Save на тулбаре редактора
Блупринтов, что бы сохранить ваш Блупринт.
Создание через выбранный объект
1. Выберете объект(СтатикМеш, камера и т.д.).
Автор: Ханин Владимир

50
2. В панеле Details нажмите Blueprint/Add Script
3. Выберете путь, где вы хотите сохранить объект, в открывшимся окне.
4. Ваш блупринт теперь появится в Контент Браузере. Нажмите кнопку Save, что бы
сохранить его и завершить создание.
Блупринты, созданные этим способом автоматически будут создаваться с именем. Нажмите
правой клавишей мыши на нем и выберете Rename, что бы переименовать Блупринт.
Каждая карта имеет свой собственный Level Blueprint.
Стандартный Level Blueprint
Каждая игра может может иметь стандартный Level Blueprint для уровней, который можно
назначить в DefaultGame.ini файле конфигурации. Все Блупринты уровней будут созданы,
используя этот класс, позволяя дополнять функционал уровней.
Открытие Level Blueprint
Что бы открыть Блупринт уровня, кликните на Blueprints в Тулбаре уровня, затем выберете
Open Level Blueprint.

Это откроет Блупринт текущего уровня в редакторе Блупринтов.

При редактировании Блупринта уровней, доступен лишь график для редактирования,


однако через Window меню можно открыть Blueprint Defaults.

Автор: Ханин Владимир

51
Отсылка на объекты
В работе над уровневым Блупринтом, часто приходится ссылаться на объекты,
расположенные на сцене. Что бы сослаться на какой либо объект, нужно:
1. Выбрать объект на сцене

2. Открыть Блупринт уровня


3. Кликнуть правой клавишей по графику в месте, где хотите добавить отсылку
4. Выбрать Add Reference to [название объекта] в появившимся контектном меню

Альтернативно:
Для данного способа нужно так расположить окно редактора, что бы был виден при этом и
сам редактор, так и Scene Outliner. Данный способ не очень хорошо подойдет для узких экранов.

Автор: Ханин Владимир

52
1. Перетащите из Scene Outliner нужный объект прямо на график Блупринта уровня.

2. На графике создастся ссылающийся блок для соеденения с другими.

Добавление событий
Существует два способа добавления событий, относящихся к объектам.
1. Выбрать объект на сцене
2. Открыть Редактор Блупринта уровня и кликнуть правой клавишей мыши в месте,
где хотите поместить событие

3. В появившимся контекстном меню выберете нужное событие в разделе Add Event


for [название объекта]

Автор: Ханин Владимир

53
Макро функции
Blueprint Macros, или Macros, это тоже самое, что и свёрнутый график нодов. Они имеют
контакт входа и выхода, соединённые внутренними блоками. Каждая макро функция может иметь
любое количество контактов выполнения или данных, которые видны на макро нодах при
использовании в других блупринтах и графах.
Создание Макро функции
Макросы могут быть созданы в классовых Блупринтах или Блупринтах уровня, тем же
способом, что и функции. Они также могут быть организованы в макробиблиотеки.
Для создания Blueprint Macro внутри классового или уровневого блупринта:
1. На панели My Blueprint кликните по кнопки +   в разделе 
2. Введите имя вашего макроса.

Ваша новая макро функция будет открыта в новой вкладке графика.


Вы также можете создать макрос нажатием правой кнопки мышки на My Blueprint панели и
выбрать Macro из выпадающего списка.

Автор: Ханин Владимир

54
Редактирование макро функции
Когда вы впервые создаёте макрос, новый граф будет содержать лишь входной и выходной
блоки.

На панели Details вашего блупринт макроса вы можете добавить входяшие и исходящие


контакты, а так же другие данные. Вы также можете указать описание, категорию и цвет вашего
макро функции, с которым будет отображаться макрос на основном графике.

Для добавление входящих или исходящих контактов:


1. Кликните по кнопке New в разделе Inputs (Вход) или Outputs (Выход) на
панели Details.
2. Назовите новый контакт и укажите используемый тип в выпадающем меню. Для
примера ниже показано, контакт типа Integer на входе с названием Score, входящий исполняемый
контакт с названием Test, и 2 исходящих контакта с названиями Win и Lose.

Автор: Ханин Владимир

55
Входной и выходной блок в графе макроса автоматически обновятся с добавленными
контактами.

3. Вы также можете указать значение по умолчанию, развернув параметры контакта.

Для изменения позиции контакта, используйте стрелки вверх и вниз в подробностях


контакта на панели Details.
Для того, что бы придать вашему макросу функицональность, соедините входные и
выходные контакты нужной вам логикой. При вызове макроса в основном графике, вся внутрняя
логика будет вызвана с учетом всех контактов.

Пример на изображении выше, макро функция проверяет счет, на предмет того, достаточен
ли он для победы.

Автор: Ханин Владимир

56
В отличие от функций, макросы могут иметь более одного исполняемого контакта (exec), так
что вы можете иметь последовательность выполнения как этот, где различные контакты
исходящего исполнение активируется в зависимости от результатов логики макро функции. Кроме
этого,вы можете иметь макрос без контактов исполнения, а только манипулировать данными, при
условии, что блоки в пределах макроса не являются блоками исполнения (грязными функциями).

Реализация макроса
Есть несколько способов добавить макро функцию в другой график блупринта. Как блоки
функция или пользовательские события, можно добавить несколько копий ноды Макроса на
график логической последовательности вашего класса.
Для того, чтобы добавить макрос, нажмите правой кнопкой мышки на свободном месте на
графике и выберите ваш макрос в появившемся контекстном меню.

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

Ещё вариант — просто перетащите макрос с панели My Blueprints на график.

Автор: Ханин Владимир

57
После того, как макро функция была добавлена на график блупринта, она ведет себя как и
любой другой блок, а значит входные и исходящие контакты могут быть соединены
соответствующим образом. Двойной щелчок по блоку макроса откроет график с логикой самой
функции.

Автор: Ханин Владимир

58
Blueprint Interface

Использование Блупринт Интерфейсов позволяет совершенно разным типам Объектов


использовать какую либо общую функциональность. Например, можно иметь совершенно разные
типы объектов, такие как деревья, машины, мебель, однако все они будут наследовать какую-
либо определенную возможность, например всех их можно расстрелять и разрушить. При
создании Блупринт Интерфейса с функцией OnTakeWeaponFire, функция может быть вызвана и
использована, если в Блупринты(Машина, дерево и т.д.) внедрен данный Интерфейс.
Создание Blueprint Interface
Blueprint Interface можно создать через Content Browser, кликнув на кнопку New, либо через
контекстное меню. Данный тип Блупринта находится в подменю Blueprints, там же, где и Macro
Library.

После создания, нужно открыть Интерфейс с Блупринт редакторе и настроить функции.

Редактирование Blueprint Interface


Блупринт Интерфейсы редактируются в специальной версии Блупринт редактора. Поскольку
вы не можете создавать свои переменные, графики или компоненты, процесс редактирования
Интерфейсов сильно отличается от редактирования обычных Блупринтов.
Автор: Ханин Владимир

59
После создания, Blueprint Interface не будет иметь никаких функций и окно редактора будет
выглядеть примерно так:

Обратите внимание на отсутствие графика из-за отсутствия созданных функций.


Добавление Функций
Функции — главный элемент Блупринт Интерфейсов и не имеют реализации сами по себе.
Они существуют лишь с набором входных и выходных контактов. Это может быть использовано
для передачи информации через Интерфейс, а так же для изменения значений в Блупринтах, в
которые внедрен Интерфейс.
Что бы добавить функцию, нажмите на кнопку   на категории
функций  , после чего введите имя новой функции.

Создастся новый график вместе с функцией. Обратите внимание, что график не активный и не
имеет никаких контактов. Всю функциональность функции вы будете добавлять в конкретных
объектах, к которым будет применен

Редактирование функции
Поскольку на данном этапе, функция не имеет никакой функциональности и реализации,
все, что можно сделать, это создать входные и выходные контакты.

Автор: Ханин Владимир

60
1. В панели Details, в разделе Input(вход) или Output(выход) нажать кнопку  .

2. Ввести название параметра и установить тип. Вы так же можете раскрыть параметр


кнопкой, что бы установить стандартное значение. Оно будет использоваться, если к контакту
ничего не присоединено.

Дополнительно
● На каждом контакте можно нажать  , что бы удалить контакт.
● Вы можете изменять положение контактов на блоке функции с помощью кнопок   и  ,
которые можно найти, если раскрыть дополнительные параметры контакта
Прямые коммуникации

Прямые коммуникации являются наиболее распространенным методом взаимодействия


блупринтов и отлично подходят тогда, когда у вас есть два блупринта, и вы знаете что им
необходимо обменяться некой информацией.
В этом типе связи, всегда один блупринт обращается к другому. Самый простой способ
использования этого метода, получение ссылки на другой блупринт, через название класса, и
указания какой экземпляр этого блупринта необходимо использовать.
Основы работы
Первое, что вам нужно сделать для того, чтобы использовать прямую коммуникаию,
заключается в определении взаимодействующих блупринтов.

Автор: Ханин Владимир

61
Здесь мы имеем персонажа и потолочный светильник, и хотим что бы персонаж мог его
отключить.
В этом случае рабочий блупринт это наш персонаж, а целю является блупринт светильника.
Используя прямые взаимодействия можно сказать, что, когда игрок нажимает кнопку, блупринт
потолочного светильника должен выключить свет.
Для этого нам нужно создать открытую переменную внутри нашего блупринта персонажа.

Мы создали переменную типа блупринта потолочного светильника.


Будьте осторожны изменяя данные в других блупринтах, ибо они в свою очередь так же
могут ссылаться на что либо, следует это учитывать.
Теперь, выбрав нашего персонажа на уровне, мы можем увидеть, на панели Details новое
поле для установки значения нашей переменной.

Автор: Ханин Владимир

62
По умолчанию переменная установлена как None. Чтобы определить, какой экземпляр
светильника вы хотите изменять, вы должны нажать на кнопку пипетки и выбрать этот объект на
уровне.

Теперь благодаря этой переменной мы точно знаем к какому объекту мы хотим получить
доступ через блупринт.
Использование прямых коммуникаций в функциях
Когда вы работаете с функциями в блупринтах, вы все еще можете использовать прямые
взаимодействия, указав тип целевого блупринта в качестве параметра для этой функции.

При использовании функции, вам нужно будет еще указать, экземпляр объекта к которому
вы хотите обратиться. Это может быть сделано как и выше, с помощью публичной переменной, но
уже подключаемой к специально созданному вами входу функции.

Автор: Ханин Владимир

63
Исправление проблем
Наиболее часто ошибка возникает, когда экземпляр объекта не указан вообще в
переменной. Если у вас возникли проблемы при получении доступа к нужному объекту,
убедитесь,
что вы указали, какой именно экземпляр этого объекта вы хотите использовать.

Если вместо этого вы установите переменную из результата вызова функции, вы должны


увидеть предупреждение в журнале, что переменная имеет «Access None» исключение. Если у вас
открыто окно «Message Log», оно отобразит ссылку на узел вызывающий проблему.

Автор: Ханин Владимир

64
Выше вы видите «Access None» исключение. Исключение указывает на ноду, которая
вызывает проблемы. При нажатии откроется блупринт, в котором используется данная нода
Переменные

Переменные — это параметры, которые хранят в себе какое-либо значение, или же


содержат в себе отсылку к объекту. Данные параметры могут быть доступны как внутри
Блупринта, так и из внешней среды для того, что бы разработчик мог контролировать копию
Блупринта, которая была помещена на сцену.
Переменные отображаются ввиде закругленных прямоугольников, которые отображают
цвет типа переменной и её имя.
Типы переменных
Переменные могут быть созданы с разным типом, включая типы с данным, такие как
Булевые, целые числы или текст, и типы отсылки к объектам. Так же могут быть созданы Массивы
для каждого типа переменных.
Пример Тип Цвет Использование

Булевая переменная. Хранит в себе


Boolean Красный
значения «Правда» или «Ложь»

Переменная, которая хранит в себе


Integer Голубой
целые числа, такие как 0, 13, 280, -42

Переменная, которая хранит в себе


Float Зеленый
дробные числа. Например 0.0, 4.34, -89.3452

Автор: Ханин Владимир

65
Строчная переменная для хранения
String Пурпурный
небольших буквенных данных

Текстовая переменная для хранения


Text Розовый
локализированного текста.

Переменная, которая сожержит


Vector Золотой векторные данные с 3мя элементами: X, Y и Z.
Может так же подходить как RGB вектор.

Переменная с данными, которые


Rotator Фиолетовый
определяют ориентацию в пространстве

Переменная, включающая в себя


Transfor
Оранжевый векторное значение(тип Vector), поворот(тип
m
Rotator) и размер(тип Vector)

Переменная, хранящая в себе отсылку к


определенному объекту. Например
Object Синий
источнике света, объекте на сцене, камере
или звуке
Переменные на панеле My Blueprint

Панель My Blueprint содержит список всех переменных, добавленных в блупринт, а так же


список компонентов, для отсылки к ним. Через данную панель можно так же добавить
переменные.
Создание переменных
Новые переменные могут быть добавлены нажатием на кноку +  . После
создания, вы сможете сразу переименовать переменную, а так же изменить дополнительные
параметры на панеле Details.
Чтобы добавить переменную:
1. Нажмите на кнопку

Автор: Ханин Владимир

66
2. Введите имя переменной

3. Выберете тип переменной на панеле Details


Некоторые типы находятся в подменю. Для облегчения поиска используйте Search строку

Что бы вызвать переменную:


Есть возможность вызвать переменную из контакта блоков.

Автор: Ханин Владимир

67
1. Правый клик по контакту на блоке и выбрать Promote to Variable

2. Создастся переменная с таким же типом, что и контакт. Введите имя переменной.


3. В графике создасться переменная, присоедененная к контакту, от которого она
была вызвана.

Переименование переменных
Что бы переименовать переменную:
1. Правый клик по переменной и выбрать Rename в контекстном меню

2. Ввести новое имя переменной и нажать Enter для сохранения имени

Параметры переменных

Автор: Ханин Владимир

68
Вы можете установить нужные параметры переменной на панеле Details. Некоторые
переменные могут иметь больше параметров.
Variable
Тип переменной, а так же выбор, будет ли переменная массивом или нет
Type
Возможность изменить значение по умолчанию в режиме Defaults или на
Editable
панеле Details в редакторе уровней
Tooltip Добавляет подсказку при наведении
Устанавливает, будет ли переменная приватной и недоступной в наследуемых
Private
блупринтах
Устанавливает категорию, в которой находится переменная. При введении уже
существующей категории, переменная будет помещена под неё. При введении
Category
другого имени, будет создана новая категория. Установка переменной определяет,
где будет расположена переменная на панелях My Blueprint, Defaults и Details
Replicatio
Должна ли переменная реплицироваться между клиентами в сети или нет.
n
Установка и получение значений переменных

Переменные так же могут быть изменены по ходу выполнения последовательности. Самый


легкий способ установить переменную или получить её в графике, это перетащить переменную
напрямую с панели My Blueprint на график. Откроется небольшое меню, предлагающее, хотите ли
вы получить переменную или установить её.
Получение

Блок Get позволяет получить значение переменной в графике. После создания, переменная будет


иметь выход для соеденения с другими функциями или блоками.
Установка

Блок Set устанавливает переменную на входящее или введенное значение. Обратите внимание,


что во вход можно присоеденить лишь один контакт, когда из Get можно вытягивать соеденения в
множество блоков.
Горячие клавиши
Ctrl + Создает
перетянуть Get блок
Автор: Ханин Владимир

69
Alt + Создает
перетянуть Set блок

Автор: Ханин Владимир

70
Компоненты

Панель Components позволяет добавлять различные компоненты в Блупринт. Под


компонентами подрузомевается добавление СтатикМешей, колизий, СкелеталМешей, камеры,
источники освещения и остальное. Компоненты могут быть добавлены через панель Components,
который так же предоставляет список уже добавленных.
Добавление компонентов
Чтобы добавить компонент, вы можете использовать выпадающее меню сверху
нанели Components. Откроется список всех возможных компонентов для добавления.

После создания будет предложено назвать компонент.

Автор: Ханин Владимир

71
Что бы добавить компонент напрямую через Content Browser, можно перетянуть напрямую
нужный контент на панель Components и отпустить. Вы можете добавить Статик и Скелетал мешы,
звуковые композиции и частицы.

Удаление компонентов
Что бы удалить компонент, нажмите правой клавишей мыши по компоненту и выберете
«Detele«.

Манипулирование компонентами
Изначально, все компоненты становятся в положение по умолчанию. Однако они могут быть
перемещены, повернуты и отмаштабированы через панель Details или во Вьюпорте.
Выбирать компоненты можно как через список, так и в самом Вьюпорте.
Автор: Ханин Владимир

72
При перемещении, повороте или маштабировании вы можете включить привязку к
координатам или процентам, нажав Shift. Для работы привязки, необходимо, что бы она была
включена в редакторе уровня. Настройки привязки так же будут те, что и в редакторе уровня.
Вы так же можете манипулировать вашим компонентов вручную через панель Details.

Манипуляция объектом будет так же влиять на все компоненты, родителем которых является
выбранный компонент.
Корневой (ROOT) (компонент не может быть подвергнут манипуляцией, так как он является
основой. Все остальные компаненты могут быть перемещены, повернуты или отмаштабированы.
Ассеты
Что бы назначить ассет на компонент, вам нужно выбрать нужный в Контент Браузере, а так
же выбрать нужный компонент на панеле Components. Откроются детали на панеле Details

Нажмите стрелочку в разделе *Тип Ассета*, что бы привязать выбранный ассет на нужный
компонент.

Вы так же можете назначить ассет через выпадающее меню прямо в разделе назначения.

Автор: Ханин Владимир

73
Что бы снять ассет с компонента, откройте выпадающее меню рядом с выбранным ассетом на
панеле Details. Затем нажмите Clear в открывшемся меню.

После того, как ассет будет снят, на иконке ассета будет надпись «None».

Автор: Ханин Владимир

74
Когда ассет назначен на компонент, вы можете быстро найти его в Контент Браузере нажав
на кнопку  . Окно Content Browser автоматически откроет папку с выбранным ассетом.

Переименование Компонентов
При создании компонента, он будет автоматически назван в зависимости от его типа.
Однако в целях организации, советуется переименовывть компоненты для того, что бы потом не
запутаться в них.
Для переименования компонента выберете его на панеле Components List. На
панеле Details откроются параметры компонента, и в разделе Variable вы сможете поменять имя
компонента(Variable Name)

События компонентов и функций


В зависимости от типа компонента, вы можете добавлять события или функции в график,
присутствующие только выбранному типу. Например компонент Box может иметь
событие BeginOverlap, которое будет вызвано когда другой объект пересечется с данным
компонентом. Так же компонент Point Light имеет функцию Set Light Color, которое изменяет цвет
источника освещения.
Содание событий или функций:

Автор: Ханин Владимир

75
1. Выберете компонент на панеле Components, для которого нужно создать событие.

2. В графике Блупринта, нажмите Правой Клавишей мыши для открытия контектного


меню. Все функции и события, ассоциируемые с выбранным компонентом, находятся сверху всего
меню. Обратите внимание, что опция Context Sensitive должна быть активна.

Вы так же можете создать событие через панель Details при выбранном компоненте.


События находятся в разделе Events.

Автор: Ханин Владимир

76
Таким образом вы создадите событие или функцию, которая будет оперировать с выбранным
ранее компонентом.

Не все компоненты имеют события. Так компонент типа Point Light имеет только функции
События(Events)
Events —События, которые определяют начало конкретной логической последовательности.
Они позволяют Блупринту исполнять какие либо действия при выполнении события, например,
при старте игры, при рестарте уровня или получении урона. Events могут быть доступны в
блупринте через Контекстное меню. В одном Блупринте может быть любое количество событий,
однако по одному каждого типа.
Каждое событие может вызывать только одну последовательность. Если вам нужно вызвать
сразу несколько, используйте соответствующие блоки контроля последовательности.
Event Level Reset
Событие Level Reset срабатывает при перезапуске уровня.
● Данное событие доступно только в Level Blueprint
● Событие выполняется на стороне сервера. В одиночных играх клиент является сервером.
Event Actor Begin Overlap
Событие Actor Begin Overlap срабатывает, когда какой либо объект пересекается с данным
блупринтом или объектом, в случае с объектным событием(Чаще используется в Level Blueprint).

Автор: Ханин Владимир

77
Для срабатывания данного события, оба объекта должны иметь тип Overlap, а так же
пересекающийся объект иметь активированную опцию Generate Overlap Events .
Когда нужный объект(Player Actor) пересекается с данным блупринтом, к переменной
Counter прибавляется 1.
Коннекторы
Other
Объект, который пересекается с Блупринтом.
Actor
Event Actor End Overlap
Событие Actor End Overlap срабатывает, когда какой либо объект прекращает пересекается с
данным блупринтом или объектом, в случае с объектным событием(Чаще используется в Level
Blueprint).
Для срабатывания данного события, оба объекта должны иметь тип Overlap, а так же
пересекающийся объект иметь активированную опцию Generate Overlap Events.
Когда нужный объект(Player Actor) перестал пересекается с данным блупринтом, этот
объект удаляется
Коннекторы
Other
Объект, который закончил пересекаться с Блупринтом.
Actor
Event Hit
Событие срабатывает, когда какой либо объект ударяет Блупринт.
Для срабатывания данного события, оба объекта должны иметь иметь активированную
опцию Simulation Generates Hit Events.
Коннекторы
My Comp Компонент в исполняемом(текущем) Блупринте, который был ударен
Other Объект, который учавствовал в ударе
Other Comp Компонент в другом Блупринте, который был ударен.
Self Moved —
Hit Location Положение удара в пространстве
Hit Normal Направление удара
Normal Impulse Сила удара
Вся вышеописанная информация. Используйте блок Break, что бы
Hit
разделить на отдельные составляющие.
Event Any Damage
Событие срабатывает, когда приченяется какой-либо урон.
Событие выполняется на стороне сервера. В одиночных играх клиент является сервером.
Коннекторы
Damage Количество получаемого урона
Damage Type Содержит объект с дополнительной информацией об уроне
Объект, ответственный за причиняемый урон. Это может быть Объект,
Instigated By
который выстрелил или который кинул гранату.
Damage Causer Объект, который нанес урон. Например пуля или граната.
Event Point Damage
Событие срабатывает, когда причиняется точечный урон(От пули, удара холодным оружием
и т.д.)
Коннекторы
Damage Количество получаемого урона
Damage Type Содержит объект с дополнительной информацией об уроне
Hit Location Положение удара в пространстве
Hit Normal Направление удара
Hit Component Компонент в исполняемом(текущем) Блупринте, который был ударен
Bone Name Название кости, которая получила урон
Автор: Ханин Владимир

78
Shot from
Направление, откуда пришелся урон
Direction
Объект, ответственный за причиняемый урон. Это может быть Объект,
Instigated By
который выстрелил или который кинул гранату.
Damage
Объект, который нанес урон. Например пуля или граната.
Causer
Event Radial Damage
Событие срабатывает, когда получаемый урон идет от иточника, причиняемого радиальный
урон. Может быть применяно в случае, к примеру, взрыва бомбы.
Коннекторы
Damage
Количество получаемого урона
Received
Damage Type Содержит объект с дополнительной информацией об уроне
Origin Содержит информацию о том, где расположен Урон в пространстве
Instigated By Контроллер(ИИ или игрок), ответственный за причиняемый урон.
Damage
Объект, который нанес урон. Например ракета или граната.
Causer
Вся информация об ударе. Используйте блок Break, что бы разделить на
Hit Info
отдельные составляющие.
Event Actor Begin Cursor Over
Данное событие срабатывает, когда курсор(когда он активен) находится поверх Объекта.
В примере, при наведении курсора, меняется параметр Highlight Инстанса Материала
Dynamic Material Instance на 1
Event Actor End Cursor Over
Данное событие срабатывает, когда курсор(когда он активен) прекращает находиться
поверх Объекта.
Event Begin Play
Событие срабатывает при старте уровня. Так же срабатывает внутри вызанного на сцену
Блупринта. Например при спауне персонажа, внутри Блупринта персонажа вызывается данное
событие.
Event End Play
Событие вызывается, когда объект прекращает существование на сцене.
Коннекторы
End Play Причина, по которой вызванно
Reason событие
Event Tick
Событие вызывается каждый кадр процесса игры.
Коннекторы
Delta Количество времени между
Seconds кадрами
Event Receive Draw HUD
Событие вызывает прорисовку всех элементов интерфейса. Блоки интерфейса(HUD) требуют
наличие этого события в последовательности.
Size X Ширина окна, в котором рендерится картинка
Size Y Высота окна, в котором рендерится картинка
Custom Event
Пользовательское событие, служащее для создания своего события, которое будет
вызываться из другой последовательности или же из другого Блупринта.
Пользовательские события

Автор: Ханин Владимир

79
Как и обычные события(Events), пользовательские события имеют выходной исполняемый
коннектор, а так же набор информационных контактов, которые можно добавить, в случае
необходимости. Пользовательские события можно создавать в любых количествах и помещать на
груфик Блупринта. Они так же как и остальные события, определяют начало последовательности,
выполняя последующие функции. Данные события созданы для того, что бы можно было
вызывать их при каких либо обстоятельствах в других последовательностей с помощью вызова
произвольного события (Custom Event Call) или через консольные команды CE или RE.
Пользовательские события предоставляют возможность начать определенную
последовательность с какими-либо свойствами в любом месте вашего графика. Дополнительные
контакты используются для вызова события с нужными параметрами, которые устанавливаются
либо стандартными значениям, либо при вызове события в другой последовательности. Обычно
Пользовательские События используются для взаимодействия одной части Блупринта с другой,
однако они могут быть вызваны даже из совершенно других блупринтов.
Создание Custom Events
1. Кликнуть правой клавишей мыши по графику и выбрать Custom Event в разделе
Events. Или найти через поиск.

2. Назвать новое событие

Автор: Ханин Владимир

80
3. На панеле Details можно определить, будет ли событие относиться ко всем
клиентам при запуске на сервере или нет.

Так же можно добавить нужные входные параметры


1. Нажать кнопку New в разделе Inputs на панеле Details.

2. Назвать новый параметр и установить его тип.

3. При необходимости установить значение по умолчанию.

Переместить параметр в нужное место с помощью кнопок перемещения.

Автор: Ханин Владимир

81
Как и обычные события, созданные самостоятельно будут вызывать последовательность
при срабатывании.

Вызов Custom Events


В отличии от обычных событий, которые срабатывают автоматически, пользовательские
события нужно вызвать вручную. Найти событие можно в контекстном меню в разделе Call
Function, или же через поиск.

Все параметры, которые были установлены, будут сразу доступны ввиде входных контактов,
которые будут переданы на блок события, при вызове.

Решение проблем
Если у вас высвечивается сообщение Warning на собитии, а в логах написано «Unable to find
function with name [название]», вам нужно скомпилировать Блуприинт.

Если вы меняете количество параметров в событии, то все они будут показывать сообщение об
ошибке при компиляции Блупринта.

Автор: Ханин Владимир

82
Вы должны перезагрузить все измененные события. Это можно сделать через контекстное меню,
вызываемого правой клавишей мыши по блоку, выбором пункта Refresh Nodes.

Что бы перезагрузить все блоки в графике Блупринта, нажмите File > Refresh All Nodes в меню окна
редактора Блупринтов.

Контроль последовательности
Блоки управления логическими последовательностями позволяют контролировать то, в
какой последовательности вызываются функции. Данные блоки могут делать разветления,
выполнять последовательности определенное количество раз, определять, какие
последовательности будут исполняться раньше других и так далее. Данные блоки можно найти в
разделе Utilities > Flow Control.
Блок Switch (переключатели)

Блок Switch считывает входящие данные, и на их основе выполняет соответствующую


последовательность. Такие переключатели доступны 4-х видов: Int, String, Name и Enum.
В основном, переключатели имеют исполняемый вход и контакт для данных, на основе
которых он будет выполнять одно из последовательностей. На выходе имеются только

Автор: Ханин Владимир

83
исполняемые контакты. Переключатели Enum автоматически генерируют выходные контакты, в то
время как Int, String и Name имеют настраевымые контакты.
Блоки Switch доступны в разделе Utilities > Flow Control > Switches в списке всех
блоков(например контекстное меню графика).
Редактирование переключателей
Как только переключатель добавлен в Блупринт, единственный контакт на выходе —
Default. Данный контакт сработает в том случае, если данные на входе не совпадают ни с одним
вариантом в переключателе. Его можно удалить, нажав правой кнопкой на нем и выбрав Remove
Execution Pin, или отключив опцию Has Default Pin на панеле Defaults.
Int Switch
1. Выставите Switch блок на график для настройки
2. Измените Start Index на самое низкое значение, с которого вы хотите вести
сравнение

3. Нажмите Add Pin на блоке что бы добавить выходной исполняемый контакт. Число
введенное в Start Index отвечает за первый контакт. Все остальные за следующие по порядку

Что бы удалить контакт, нажмите правой клавишей мыши по контакту и выберете Remove
Execution Pin. Учтите, что удаление контакта в Switch on Int блоке, придаст всем следующим
блокам по списку знаечение на 1 меньше.
Name или String Switch
1. Нажмите на кнопку + на панеле Defaults что бы добавить параметр для сравнения

Автор: Ханин Владимир

84
2. Введите желаемое значение для сравнение в поле.

Повторяйте процес, добавляя нужное количество сравнений для данных. Выходные


контакты будут созданы автоматически и соответствуют указаным параметрам.

Автор: Ханин Владимир

85
Branch

Branch блок предоставляет стандартное TrueFalse разветление. Как только блок вызван, он
считывает булевый параметр на входе и в зависимости от значения, вызывает True(если правда)
или False(если ложь).
Входные конекторы
Без
Вызывает срабатывание блока
названия
Булевое значение(Правда/Ложь), которое влияет на то, какой выход будет
Condition
использован для продолжения последовательности
Выходные конекторы
True Срабатывает, если значение на входе — True(Правда)
False Срабатывает, если значение на входе — False(Ложь)
Do N

Блок Do N позволяет вызвать последующую последовательность только Определенное


количество раз. Как только достигнут лимит, последовательность будет прерываться на блоке Do
N. Вызовете блок через контакт Reset, что бы обнулить счетчик и возобновить срабатывание
последовательностей.
Входные конекторы
Enter Вызывает срабатывание блока
Числовое значение Int, обозначающее количество раз, которое DoN блок
N
продолжит последовательность.
При срабатывании, сбрасывает блок, что позволит заново продолжать
Reset
последовательность
Выходные конекторы
Exit Выход на последовательность, срабатывающая нужное количество раз.

Автор: Ханин Владимир

86
DoOnce

Блок DoOnce вызовет следующую последовательность только один раз. После того, как блок
один раз пропустил последовательность, он блокируется и продолжить последовательность
можно только вызвав Reset. Блок является эквивалентом Do N блока со значением 1.
Вход
Без
Вызывает блок
названия
Reset Перезапускает блок, позволяя снова пропустить последовательность
Выход
Продолжает следующую последовательность, если блок не был вызван
Completed
ранее или не был сброшен
FlipFlop

Вызывает выходящие события по очереди. Первый раз, когда вызван блок, вызывается
последовательность А, второй раз — В. Потом A, потом В и так по очереди. Блок так же имеет
булевый контакт, который предоставляет информацию о том, какая последовательность вызвана.
Вход
Без
названи Вызывает блок
я
Выход
А Вызывается каждый нечетный раз при срабатывании блока
В Вызывается каждый четный раз при срабатывании блока
Предоставляет булевое значение, которое указывает, какая последовательность
Is A
была продолжена. А — Правда, В — Ложь.

Автор: Ханин Владимир

87
For Loop

Блок ForLoop вызывает последовательность определенное количество раз повторно. После


того, как последовательность была вызвана нужное количество раз, вызывается
последовательность Completed.
Данный блок выполняет последовательность между кадрами, так что большое количество
повторов, а так же комплексные последовательности могут отразиться на производительности.
Вход
Без
Вызывает блок
названия
First Index Числовое значение, с которого начнется отсчет повторов
Числое значение, до которого будет произведен отсчет повторов. Количество
Last Index
повторов = Last Index — Fist Index
Выход
Loop Body Последовательность, которое нужно вызвать нужное количество раз
Index Номер текущего повтора
Completed Последовательность, которая будет вызвана после окончания повторов
For Loop With Break

Работат по тому же принципу, что и ForLoop, однако может быть прерван.


Вход
Без
Вызывает блок
названия
First Index Числовое значение, с которого начнется отсчет повторов
Числое значение, до которого будет произведен отсчет повторов. Количество
Last Index
повторов = Last Index — Fist Index
Break Прерывает повтор последовательностей
Выход
Loop Body Последовательность, которое нужно вызвать нужное количество раз
Index Номер текущего повтора
Completed Последовательность, которая будет вызвана после окончания повторов
Gate

Автор: Ханин Владимир

88
Блок Gate используется для прерывания или продолжения последовательности в
зависимости от того, что было вызвано. Булевый контакт определяет, будет ли прервана
последовательность изначально или нет.
Вход
Enter Вход для последовательности, которая может быть продолжена или нет.
Open Открывает блок для продолжения последовательности
Close Закрывает блок
Переводит блок в другое состояние при срабатывании. От закрытого к
Toggle
открытому или наоборот.
Start
Булевое значение, определяющее, будет ли блок открыт изначально или нет
Closed
Выход
Exit Вызывает последовательность в том случае, если блок открыт.
Multi Gate

Блок Multy Gate вызывает соответствующую последовательность по очереди в зависимости


от заданных значений. Так же может вызывать последовательности в случайном порядке.
Вход
Без
Вызывает блок
названия
Reset Сбросить блок, тем самым установить отсчет на 0
Is random Если правда, последовательности будут вызваны в случайном порядке
Зацикливает вызов последовотельностей. В ином случае вызов
Loop
последовательностей прекратится после всех вызванных событий один раз.
Start Устанавливает номер начальной последовательности. Значениебудет
Index означать, что будет вызвана последовательность по умолчанию.
Выход
Out # Выход для последовательности.
Add pin Добавить выход для езё одной последовательности. Удалить созданные

Автор: Ханин Владимир

89
выходы можно нажав по одному правой клавишей мыши и выбрав Remove Pin.
Sequence

Sequence блок позволяет выполнить любое количество последовательностей по очереди.


Последовательности вызываются без какой либо заддержки, так что можно считать, что
последовательности выполняются одновременно.
Вход
Без
Вызывает срабатывание блока
названия
Выход
Then # Вызывает последовательность в свою очередь.
Добавить контакт для присоеденения дополнительной
Add Pin
последовательности.
While Loop

Блок WhileLoop циклично вызывает последовательность до тех пор, пока условие — Правда.
Вход
Без
Вызывает срабатывание блока
названия
Булевое значение, определяющее, зацикливается ли
Condition
последовательность.
Выход
Вызывает последовательность до тех пор, пока условие
Loop Body
положительно.
Completed Вызывает следующую последовательность, когда цикл закончится.

Unreal Motion Graphics


UMG (Unreal Mothin Graphics UI Designer) — это визуальный инструмент для создания
элементов пользовательского интерфейса, таких как меню, HUD или остальной интерфейс,
который отрисовывается поверх всего остального изображения. В основу UMG входят
виджеты(Widget), которые представляют собой набор готовых функций (кнопки, чекбоксы,
слайдеры и т.д.), которые могут быть использованы для создания интерфейса. Эти виджеты
редактируются в специальном редакторе под названием «Widget Buleprint», который имеет два
освновных режима: Дизайнер(Designer), через который вы устанавливаете визуальную
составляющую вашего интерфейса и график(Graph), в котором производится создание логики, по
которой ваш Виджет будет работать
Работа с UMG
Что бы начать работу с UMG, вам нужно создать виджет.
Автор: Ханин Владимир

90
1. Нажмите Create копку на Контент Браузере, под вкладкой User Interface выберее
Widget Blueprint

2. Будет создан Виджет в текущей папке, который вы сможете переименовать позже

3. Двойным кликом откройте Виджет для входа в редактор

Редактор Виджетов

Автор: Ханин Владимир

91
По умолчанию при редактировании Виджетов будет открыт редактор в режиме
Desiger(Дизайнер). Данный режим отвечает за создание визуальной составляющей вашего
виджета, который в последствии будет отображен на экране пользователя.
Нажмите на картинку справа, что бы увидеть числовую разметку.
1. Visual Окно, в котором происходит настройка вашего виджета в графическом
Designer режиме.
Список заготовленных элементов виджета, которые могут быть пересены и
2. Pallete
установлены в редакторе посредством перетаскивания
3. Hierarchy Отображает древовидную струкруру компонентов вашего виджета
4. Sequencer Панель для создания анимаций компонентов вашего виджета
5. Details Отображает настройке выбранного компонента или виджета в целом.
График

UMG редактор так же поддерживает создание логики вашего виджета. Вся эта логика
создается по системе Blueprint в режиме Graph, в который можно войти, переключив режим на
Тулбаре редактора.
Создание и вызов виджета
После того, как вы создали и настроили оболочку и логику вашего Виджета, вам нужно
вызвать и показать его из нужного Блупринта для того, что ваш виджет появился на экране.

В примере выше вы можете видеть простую последовательность, которая создает виджет,


записывает его в переменную(для последующего доступа) и добавляет на экран пользователя.

Автор: Ханин Владимир

92
Создание виджета происходит путем вызова блока Create Widget, в котором устанавливается
класс виджета(какий именно виджет) и «владелец» виджета(Player Controller), а на выходе в
Return Value получаете созданный виджет. После создания, виджет нужно отобразить на экране,
что можно сделать вызовом блока Add to Viewport.
Что бы убрать виджет с экрана, воспользуйтесь блоком Remove from Parent

Добавление виджетов в виджеты


Вместо того, что бы использовать Add to Viewport и каждый раз добавлять виджеты на
экран, вы можете добавить виджеты в другой виджет постредством блока Add Child

В примере выше показано, как виджет с Scroll Box добавляется к созданному виджету Main
Menu, используя ноду Add Child.
Add Child блок делает родителем виджета, который был присоеденен, поэтому при вызове
Add to Viewport родительского виджета, наследуемые виджеты (Дети) автоматически будут
показаны на экране. Для того, что бы убрать виджет из другого, воспользуйтесь блоком Remove
Child.
Типы элементов
Внутри редактора виджетов у вас есть доступ к различным элементам, из которых вы
собираете ваш виджет. Все они расположены на Pallete панели и сортированы по категориям. Все
эти элементы можно перенести на окно дизайнера посредством Драг&Дроп’а.
В данной документации данные элементы будут называться элементами однако их
официальное название — Widget.
Список элементов Виджета

Автор: Ханин Владимир

93
Common

Элементы в данной категории используются чаще всего.


Данный элемент представляет собой блок, который может содержать только
Border
один дочерний элемент. Так же поддерживает установку фона
Кнопка с понятным фукнкционалом нажатия. Поддерживает один дочерний
Button элемент, в который вы можете поместить дополнительный элемент, что бы придать
кнопке особый вид.
Check
Чекбокс, который позволяет пользователю включать/выключать что либо.
Box
Элемент, который позволяет отобразить Slate Bruch, текстуру или материал на
Image
интерфейсе пользователя.
Named
Слот, который позволяет расположить в себе другой, ранее созданный виджет.
Slot
Progress Полоса прогресса (сленг: Прогресс бар), который показывает процент чего либо.
Bar Подходит для жизней, опыта и так далее.
Slider Простой слайдер, который можно перетаскивать, устанавливая значение от 0 до 1.
Простой текст, который можно разместить на пользовательском интерфейсе.
Text Может использоваться как для однострочных названий, так и для многострочных
текстов.
Данный элемент позволяет пользователю ввести текст. Поддерживает только
Text Box
однострочный текст.
 
 

Автор: Ханин Владимир

94
Input

Данные элементы предназначены для ввода какой-либо информации пользователем.


Combo Box Данный элемент позволяет создать выпадающее меню с различными
(String) опциями для выбора.
Блок для ввода цифрового значения. Так же поддерживает изменение
Spin Box
значение путем заддержки кнопки мыши и перетаскивании.
Text Box Данный элемент позволяет пользователю ввести текст. Поддерживает
(Multi-Line) многострочный текст
 
 
 
 
 
 
Panel

Автор: Ханин Владимир

95
Элементы для организации других по определенным правилам, например в табличном
виде или друг за другом
Панель для свободного размещения элементов внутри себя. Так же
Canvas
поддерживает якоря, для выравнивания элементов и Z-Order, который позволяет
Panel
установить, какие элементы будут поверх других.
Таблица с возможностю установки неравномерного размера ячеек. Схоже с
Grid Panel
тегом < Table > в html.
Horizontal
Упорядочивает элементы в горизонтальном порядке
Box
Элемент, который служит для установки одного элемента на другой или
Overlay
просто для организации порядка элементов
Панель, которая маштабирует дочерний контент равномерно, не изменяя
Scale Box
его пропорций.
Панель с возможностью прокрутки внутренних элементов. Полезно, когда
Scroll Box
кол-во дочерних элементов достигает большого количества.
Uniform Таблица с равномерным размером ячеек, которая так же поддерживает
Grid Panel отступы между ячейками.
Vertical Box Упорядочивает элементы в вертикальном порядке.
Widget
Панель, которая позволяет переключать видимость дочерних элементов.
Switcher
Панель, упорядочивающая элементы справа налево. Все эелменты, которые
Wrap Box
не помещаются, автоматически переносятся на следующую строку.
Primitive

Circular Прокручивает установленные картинки по кругу. Подойдет для


Throbber создании загрузочной анимации.
Поле для ввода текста без фона. Поддерживает только однострочный
Editable Text
текст.
Editable Text
Поле для ввода текста без фона. Поддерживает многострочный текст.
(Multi-Line)
Menu Anchor Элемент, который позволяет установить якорь и положение для
Автор: Ханин Владимир

96
открытия контекстного меню
Native Widget
Панель, для установки Slate виджета.
Host
Панель для того, что бы устанавливать отступы между виджетами. Не
Spacer
имеет визуального представления и невидима в игре.
Анимированный элемент для отображения нескольких картинок,
Throbber
которые увеличиваются и уменьшаются с течением времени.
Якоря UMG
Якоря используются для определения местоположения требуемого виджета UI на Canvas
Panel и сохранении свей позиции на экранах различых размеров. Якоря нормализованны, что
означает, что их позиция рассчитывается не в пикселях от угла экрана, а в процентном
соотношении между0;0(верхний левый угол) и 1;1 (правый нижний угол).
Если у вас есть Canvas Panel и необходимо к ней добавить UI Widgets, то вы можете выбрать
позицию якоря из готовых пресетов или вручную указать в настройках Min/Max. Учитывайте, что
если элемент вашего виджета находится не внутри Canvas Panel, то якоря или позицию вы
установить не сможете, так как эта возможность свойственна только дочерним элементам Канвас
панели.
Как работают якоря
Внутри нижепоказанной жёлтой рамки находится якорь на Canvas панели.

На изображении ниже у нас имеется кнопка расположенная на canvas панели и якорь


находящийся в положении по умолчанию (левый верхний угол).

Вертикальная жёлтая линия указывает кнопке, на сколько необходимо передвинутся по оси


Y основываясь на размер и положение Canvas панели, начиная с левого верхнего угла вьюпорта.
Горизонтальная жёлтая линия указывает кнопке, на сколько необходимо передвинутся по оси X,
начиная с левого верхнего угла вьюпорта. В левом нижнем углу окна (внутри жёлтой рамки)
указан размер canvas области с которой вы работаете.
Кликните по Screen Size кнопке, чтобы измениить текущее разрешение. Эта функция нужна
для проверки того как будет выгледть ваш виджет на мониторах с разными разрешениями и
соотношениями сторон.
При запуске игры, в зависимости от размеров экрана, мы могли бы видеть что-то вроде
нижепредставленнорго, где желтая рамка представляет собой якорь.
Автор: Ханин Владимир

97
Основываясь на размере вьюпорта, кнопка смещается по экрану.
Если мы переместим якорь в правый нижний угол …

И запустим режим игры с тем же разрешением экрана …

Кнопка сдвигается, что бы не выйти за пределы экрана, из-за положения якоря в правом
нижнем углу (жёлтая рамка).
Данный пример показывает, как вы можете указать местоположение якоря и как это
скажется на отображении виджета на экране. Вы также можете разделить якорь для указания
того, как он должен отображатся на разных разрешениях.

Автор: Ханин Владимир

98
Заготовки положения якорей
Для расположения виджета на Canvas Panel, вы можете выбрать ранее заготовленные якоря
с Details панели виджета.

Это, возможно, наиболее основные и частые способы указания местонахождения якоря в


вашем виджете, и должны подходить вам в большинстве случаев. Серебрянная рамка показывает
местонахождение якоря и переместит его туда как только вы выберите эту позицию. Для примера,
если вам нужно удерживать что-то по центру экрана всё время, вы можете разместить ваш виджет
по центру canvas panel, после чего выбрать опцию с центральным якорем.

Это полезно, когда вы хотите растянуть что-то вдоль экрана (показано ниже).
Здесь мы выделили место для якоря вдоль нижней части canvas.

Автор: Ханин Владимир

99
Растяжение отражается и на самой иконке якоря, теперь вместо одной целой — две
половинки.
Вы можете разбить якорь на части , потянув за одном из краёв.
Если мы захотим сейчас поиграть в нашу игру, то Progress Bar будет выглядеть примерно так
(нормально):

И будет выглядеть так, при разных разрешениях экрана:

Или даже так:

Автор: Ханин Владимир

100
Установка якорей вручную
В дополнении к существующим заготовкам, вы можете вручную указать местоположение
якоря. Это удобно в тех случаях, если нужно расположить один виджет относительно другого;
ниже продемонтрирован пример.

На картинке выше у нас имееться виджет картинки и Progress Barа внутри canvas панели,
который в свою очередь находится внутри другой canvas панели. Canvas панель содержит в себе
Image элемент и Progress Bar, закреплённые в левом верхнем углу экрана. Это может быть
использовано, к примеру, чтобы показать картинку персонажа игрока и его полоску здоровья.
Ниже Progress Bar (а также картинка, хотя это не показано) закреплены к верхнему левому
углу canvas панели в которой они находятся.

Допустим, мы хотим, что бы Progress Bar растягивался, но оставался фиксированным с


правой стороны. Мы можем это сделать разделив якорь, потянув за левую центральную часть, как
показано ниже.

Автор: Ханин Владимир

101
Теперь вы можете видеть на изображении ниже, как мы растягиваем правую сторону canvas
панели, Progress Bar растягивается, но расстояние от правой стороны остается прежним.

Теперь проблема состоит в том, что когда мы изменили размер canvas панели с нашим
виджетом в ней, виджет картинки не остался на прежней позиции, а съехал немного в сторону.
Вместо того, что бы якорь переместился в левый верхний угол, он остался на своей позиции,
мы можем вручную его переместить.

Выше, мы закрепили якорь в левом верхнем углу вместе с Progress Bar. Теперь мы изменим
размер canvas панели содержащей 2 виджета…

Автор: Ханин Владимир

102
Виджет картинки остался на фиксированном расстоянии от Progress Bar’а. Теперь другая
проблема, если мы сожмем нашу панель Canvas с виджетами внутри…

Картинка обрезается, так как мы не установили дистанцию для картинки, для того чтобы
исправить это для левой стороны, мы разделим якорь.

Выше мы установили наш якорь и теперь изменяя размер Canvas панели, картинка вместе с
Progress Bar’ом изменяют свой размер и не вылезают за границу.

Пространство слева/справа от картинки остается неизменным, но как насчёт сверху/снизу?


Так как мы растянули canvas панель вниз, то картинка больше не центрирована с Progress Bar’ом.

Автор: Ханин Владимир

103
Ещё одно изменение якоря может исправить это. Тут мы указали, на сколько мы хотим,
чтобы картинка была отодвинута от верха и низа по отношению к Progress Bar’у.

И теперь, когда мы изменяем размер canvas панели в любом направлении, картинка


изменяется в размере и остаётся на позиции по отношении к Progress Bar’у, который также
растягивается.

Автор: Ханин Владимир

104
Шрифты

Данная страница расскажет, как импортировать свои шрифты используя Font Editor, и


использовать их в Unreal Motion Graphics (UMG) UI Designer.
Ассеты шрифтов
Шрифты в UE4 классифицируются как ассеты шрифтов использующие 2 методы
кеширования: Runtime - который находится в форме составного шрифта; Offline - старый метод
предрасчитанного шрифтового атласа. Вы можете переключится между двумя этими методами,
открыв ассет шрифта в редакторе шрифтов (это простейший способ сконвертировать
существующий шрифт старого формата в новый, без его замены).
Создание и импортирование шрифтов
Данный раздел показывает, как создать новый ассет шрифта или
импортировать TTF или OTF файлы для создания ассета шрифта.
Создание ассета шрифта
Для создания ассета шрифта следуйте шагам:
1. Кликните по кнопке Add New внутри Content Browser, после чего, в разделе User
Interface выберите опцию Font.

Автор: Ханин Владимир

105
2. Новый композитный ассет шрифта создан, дайте ему имя.

3. После ввода имени вы заметите звёздочку на иконке ассета — это означает, что
ассет не сохранён. Кликните по кнопке Save All для сохранения вашего ассета, после чего
подтвердите сохранение в появившся окошке, для окончательного сохранения.

Вместо того, чтобы каждый раз нажимать кнопку Add New, вы можете кликнуть ПКМ на
пустом месте в контент браузере и в выпавшем меню найти User Interface -> Font для создания
ассета шрифта. Не забывайте сохранять ваши ассеты!
Когда вы создали новый ассет шрифта в редакторе, создался пустой композитный ассет
шрифта в котором вы можете настроить его параметры используя редактор шрифтов. Когда вы
импортируете TTF или OTF файлы, новый композитный ассет шрифта генерируется из
предоставленного образца шрифта (в любой момент вы можете задать дополнительные
параметры через редактор шрифта).
Импорт шрифтов
Вы можете импортировать TTF или OTF файлы в редактор, и сделать это несколькими
путями.
Первый метод — кликните по кнопке Import в контент браузере.

В появившемся диалоговом окне найдите и выберите ваш файл и нажмите Open.

Автор: Ханин Владимир

106
Файл будет добавлен в контент браузер как композитный ассет шрифта, используя файл
который вы выбрали.

Вы можете перетащить TTF или OTF файл в контент браузер, после чего создастся
композитный ассет шрифта.

Когда используете метод перетаскивания, то композитный ассет шрифта автоматически


создаётся на основе того шрифта, который был выделен.
Редактор шрифта
Когда вы 2 раза кликните по ассету шрифта в контент браузере, то откроется окно редактора
шрифта.

Автор: Ханин Владимир

107
Обзор окна редактора шрифта представлен ниже:
1. Toolbar Menu — Из этого меню вы можете сохранить файл после внесения в него
каких либо изменений; найти файл в контент браузере; изменить цвет Background/Foreground в
превью окошке (4). Также есть опции для обновления или экспорта внесённых изменений, однако
эти опции доступны лишь при использовании Offline метода кеширования.
2. Default Font Family — В этом окошке вы можете назначить семейство шрифта
используемый ассетом шрифта по умолчанию. Вы также можете добавить различные версии для
стиля (к примеру — Нормальный, Жирный, Наклонный, Подчёркнутый, и тд.), или назначить
набор различных стилей шрифта как один композитный шрифт. Если вы создали пустой ассет
шрифта, вы можете назначить шрифт внутри этого окошка. После того как шрифт был добавлен,
вы также можете добавить подсказывающий алгоритм используемый со шрифтом.
3. Sub-Font Family — В этом окошке вы можете назначить семейство под-шрифта
используемое ассетом шрифта. Тут вы можете назначить диапазон символов, и если символ
находится в пределах диапазона вы можете назначить различные стили шрифта используемые
вместо стандартного (это удобно, когда вы хотите использовать различные шрифты для разных
языков).
4. Preview - Это окошко даёт вам предпросмотр вашего шрифта и имеет поле ввода
для набора текстового примера.
5. Details - В этом окне вы можете сменить метод кеширования , а также сменить
размер шрифта и его имя (для Runtime).
Если вы используете старый метод, вы всё ещё можете сменить пераметры вашего шрифта.
Вы также можете сконвертировать ассеты шрифта из Offline в Runtime без замены онного.
Пример ассета шрифта представлен ниже.

Автор: Ханин Владимир

108
Композитный шрифт всегда по умолчанию содержит семейство шрифтов, а также может
содержать любое количество семейств под-шрифтов которе должно быть использовано с данным
количеством символов.Каждое семейство шрифтов содержит любое количество шрифтов,
которые могут быть названы в зависимости от их стиля. Во время выполнения наиболее
подходящий шрифт использовать для каждого символа на основе шрифтов доступных в семействе
шрифтов для используемого диапазона символов.
Как видно на примере выше, японский текст находится в пределах диапазона символов
японского семейства шрифтов, и отрисовывается в помощью Source Han Sans, а не с помощью
стандартногоартного семейства шрифтов Roboto. Шрифты в семействе под-шрифтов
преимущественно выбираются посредством сходства имени, как и в случае с Regular, Bold, и Light,
однако также может быть сравнение по аттрибутам дефолтного шрифта, как в случае с Bold Italic
(был автоматически выбран жирный японский шрифт, так как шрифт содержит аттритуб Bold, что
было лучшим сходством).
Шрифты в UMG
После того, как вы создали Widget Blueprint и разместили виджет содержащий текст (такой
как Text Box или Text Widget), кликните по нему, и во вкладке Appearance на панели Detailsвы
увидите опции шрифта.

По умолчанию движок использует Roboto шрифт, но если вы кликните по выпадающему


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

Автор: Ханин Владимир

109
Вы также можете выбрать создание композитного шрифта из этого меню и указать, куда
следует его сохранить (по умолчанию он будет пустой, поэтому вам нужно будет его заполнить).
После того, как вы выберите ваш композитный шрифт, второе выпадающее меню даст вам
выбрать шрифт используемый из Default Font Family.

Вы также можете настроить размер шрифта в поле ввода.

На данный момент UMG поддерживает лишь Runtime кешированные ассеты шрифта.


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

Автор: Ханин Владимир

110
Стилизация виджетов

Когда наступает время создания разметки пользовательского интерфейса в UMG, то


расстановка элементов, это всего лишь начало. Для каждой вашей кнопки, ползунка, текста, и т.д.,
есть несколько опций стиля которые могут быть применены напрямую в UMG из панели Details,
которые влияют на то, как они появляются.
Каждый из виджетов ниже использует опцию Style, однако их индивидуальный стиль может
отличаться:
● Button
● Check Box
● Editable Text Box
● Multi Line Editable Text Box
● Progress Bar
● Size Box
● Slider
● Spin Box
● Text Block
● Combo Box (String)
● Editable Text
● Multi Line Editable Text
Состояния
Это могут быть инстансы, в частности с интерактивными виджетами, которым вы хотите
придать различные виды для вашего виджета, основываясь на том, как он взаимодействует с/или
в каком состоянии находится. К примеру, скажем, у вас есть кнопка на экране которая находится в
нормальном состоянии и когда её перекрывает курсор она меняет цвет или мигает, а при нажатии
делает что-то другое. States - наиболее основные виды стиля дающие вам возможность указывать
то, как виджет будет реагировать в зависимости от своего текущего состояния.

Выше, кнопка виджета меняет в зависимости от своего состояния (нормальное, нажатое,


перекрываемое, или неиспользуемая). Большинство виджетов используют нормальное, нажатое,
Автор: Ханин Владимир

111
перекрываемое, неиспользуемое состояние, однако могут быть дополнительные варианты, в
зависимости от типа виджета, который вы используете.
Настройка изображения состояния
Для каждого состояния, вы можете установить изображение (либо текстуру/материал) для
используемого виджета. Размер изображения зависит от размера ресурса в Slate Units и
опции Draw As, которая использует 9 ячеек масштаба, дающие вам возможность настроить то, как
изображение будет отрисовываться в форме Box, Border, или как Image.
Пример для каждого случая ниже:

1. Box - отрисовывает ячейку размером 3х3, где стороны и центральная линия


(оранжевые стрелочки) основываются на отступах (пунктирные синии линии).
Зелёные стрелочки показывают значение константы основанной на отступе и размере
изображения.
2. Border - отрисовывает границу 3х3, где стороны Тайла (оранжевые стрелочки)
основываются на отступах (пунктирные синии линии).
Середина не отрисовывается при использовании границы.
Зелёные стрелочки показывают значение константы основанной на отступе и размере
изображения.
3. Image - отрисовывает изображение и будет растягиваться (оранжевые стрелочки) и
отступ будет игнорироваться.
Изображения на основе текстур
Вы можете назначить текстуры как ваш ассет изображения, но тут есть несколько галочек
которые стоит проставить, если вы конечно хотите, чтобы ваша текстура показывалась на любом
устройстве, без искажений и артефактов.Внутри редактора текстур, под вкладкой Level Of Detail,
установите Mip Gen Settings в значение NoMipmaps, а также установите LOD Group в значение UI.
В Compression, параметр Compression Setting переключите в значение TC Editor Icon.

Автор: Ханин Владимир

112
Изображения на основе материала
Материалы также могут быть назначены как ассет изображения для вашего изображения
состояния, но вам нужно будет сменить несколько параметров.Внутри материала, на
панели Details в разделе Usage отметьте галочкой Used with UI. Это скомпилирует шейдер
специально под Slate. Также необходимо оставить только Emissive Color на выходе.

Динамические материалы

Автор: Ханин Владимир

113
При необходимости изменения параметров материала, вам нужен Dynamic Material
Instance. Виджет изображения может это сделать с завидной лёгкость, если у него есть Slate
Brush с материалом, вы можете задать изображение (создаётся 1 раз, а затем кешируется).

Оттенок\отступ
Также, в каждом состоянии можно задать оттенок изображения прикреплённого к данному
состоянию. Также есть опция Margin, которая задаёт размер отступа для режимов
отрисовки Box и Border (в режиме Image отступ игнорируется).
Padding
Padding - опция стриля создающая границы вокруг виджета.

К примеру, на картинке выше, для кнопки Box, Normal Padding расчитывается для границы


задней картинки кнопки. Когда это применяется, содержание кнопки будет появляться на одном
уровне с границей кнопки.Pressed Padding это тоже самое, что и Normal Padding, однако
применяется только когда кнопка нажата.
В зависимости от типа используемого виджета, доступны различные виды Padding’а.
Звуки
Звуки могут быть назначены для вашего виджета основываясь на положении виджета.

Автор: Ханин Владимир

114
Большинство виджетов допускающие применение звуков, используют звуковые события
при перекрытии или нажатии, что в итоге выливается в воспроизведение звука при перекрытии
или клику по виджету. На картинке, выше для виджета чексбоксика присутствуют параметры для
звуковых событий, таких как «выбрано», «невыбрано», «перекрыто».
Для различных видов виджетов доступны различные виды звуковых опций.
Отображение трансформации

Дополнительные опции стиля которые могут использованы для изменения вида вашего
виджета, находятся они в разделе Render Transform на панели Details вашего виджета. С
помощью этих настроек вы можете переместить, масштабировать, обрезать, повернуть ваш
виджет по отношению к пивоту.
Пример отображения трансформации проиллюстрирован ниже.

Каждая из настроек может быть расставлена в ключи, что даст вам возможность
анимировать их, и даже отредактировать через блупринт во время игры на основе действий
произведённых игроком.Отображение трансформации относительно к разметке транформации и
не обрезается родителем (к примеру, если у вас есть Scroll Box полный кнопок, изменение
перемещения в настройках отображения трансформации может сдвинуть кнопки из него

Автор: Ханин Владимир

115
Освещение
Для того, что бы ваша сцена выглядела привлекательно, вам может понадобиться
правильно работать с освещением. Unreal Engine 4 предоставляет широкий набор инструментов
для работы со светом. От простых источников света, которые являются основой создания
освещения на сцене, до просчета статичного света и теней, благодаря чему можно получить
наивысшее качество освещенности вашей карты или уровня.
Источники освещения
Освещение на вашей сцене создается благодаря расставлению в ней источников света там,
где вам нужен свет. Благодаря этим источникам, UE4 понимает, какие участки осветлять, а какие
затемнять. А так же в зависимости от источников определять, какое качество освещения должно
быть, каким оно должно быть, какой тип теней использовать и так далее.
Типы источников света
В Unreal Engine 4 имеется четыре типа источников света:
Directional (Направленный), в основном, используется для уличного света, идущий
издалека, например, солнца.
Point (Точечный источник света) – обычная «лампочка». Испускает свет во все стороны из
одной точки.
Spot (Прожекторный) также испускает свет из одной точки, но в одну сторону, подобно
фонарику.
Sky (Небесный) источник света берет фон вашей сцены и применяет его как общее
освещение для мешей на вашем уровне. Иногда называют Эмбиент освещением.
Подвижность источников освещения
Для каждого источника света на вкладке «Transform» вы найдете свойство, называющееся
«Mobility» («Подвижность»).

Всего существует три параметра: статичный, стационарный, подвижный


(Static, Stationary и Movable, соответственно). Каждый из них довольно-таки сильно влияет на
работу источника света, что так же отражается на производительности.
Виды подвижности источников света:
Статичный – Полностью статичный и.с., который просчитывается в отдельном процессе и
почти не тратит ресурсов компьютера в процессе игры.
Стационарный – Источник света, который может изменять свой цвет и свою насыщенность в
реальном времени, но не может перемещаться, вращаться или масштабировать силу света. Так же
просчитывается отдельно, однако может отбрасывать тени от динамических объектов
Подвижный – Полностью динамичный и.с., способный менять все свои характеристики в
реальном времени и создавать полностью динамическое освещение.
Возможности статического и стационарного освещения.
Отражение света
Одним из самых важных эффектов от просчета освещения является отражение света. При
попадании лучей на поверхность, свет отражается от этой поверхности во все направления. При
отражении света используется Base Color свойство вашего материала, которое влияет на яркость и
цвет отражаемого света. Учтите, что данный свет просчитывается во все стороны, из-за чего

Автор: Ханин Владимир

116
позиция вашей камеры не будет иметь никакого значения при отображении вашего освещения на
экране.
Ниже вы можете видеть пример сцены с одним Directional источником освещения и только с
прямым освещением (без отражения света). Некоторые зоны при этом полностью черные, так как
туда не попадает свет.

Далее идет отражения света (можно увидеть результат на скриншоте ниже). Яркость и цвет
отражения зависит от самого источника света, а так же, как описано ранее, от свойства самой
поверхности. Каждый «отскок» света будет темнее предыдущий итерации, так как часть света
поглощается самой поверхностью. Заметьте, что коллонна получила больше освещения внизу от
непрямого освещения, так как она стоит рядом с тем местом, куда попал основной, прямой свет
от солнца (которое эмулируется через Directional Light).

Второй отскок света. Данная итерация гораздо темнее, чем предыдущие, так как почти весь
свет поглотился поверхностями.

На скриншоте ниже вы можете видеть финальный результат с прямым освещением и


непрямым (две итерации). Симуляция подобного освещения даст вам более детальный и
реалистичный вид вашей сцены, чем простое расставление источников освещения там, где нужен
свет.

Автор: Ханин Владимир

117
Если ваша поверхность имеет контрастный и яркий цвет, то это может сильно повлиять на
непрямое освещение. Если эффекта не достаточно, вы можете увеличить параметр DiffuseBoost в
материале или же самом уровне.

Освещение динамики
В процессе просчета освещения оставляются специальные семплеры в 3х мерном
пространстве вашего уровня. Такие семплеры подхватывают непрямое освещение для того, что
бы потом соответствующим цветом подсвечивать динамические объекты, в особенности
персонажей. Это позволяет «слить» динамические объекты со статическим окружением по
освещению. Такой способ называется «Кеширование непрямого освещения».
Кеширование происходит в достаточно низком разрешении для того, что бы не сильно
нагружать систему, но при этом выдавать приемлимый результат. Границы кеша определяет
Lightmass Importance Volume.
На изображениях ниже включена визуализация семплеров. На втором скриншоте так же
включен Lit режим отображения. Обратите внимание на то, как семплеры рядом с красной тканью
подхватили её свет. Если вдруг в том месте появится динамический объект, он будет подсвечен в
соответствующий цвет.

Автор: Ханин Владимир

118
объект должен подсветиться только снизу.
Вы можете визуализировать семплеры через меню Вьюпорта Show > Vizulize > Volume
Lighting Samples.
Ограничения
По умолчанию, создание кеша на больших картах приведет к огромному количеству
подобных семплеров. Это может вызвать проблемы с оптимизацией. Используйте параметр Static
Lighting Level Scale в настройках освещения вашей карты, что бы исправить данную проблему.
Динамические объекты, находящиеся вне Lightmass Importance Volume, будут иметь полностью
черную затененную сторону.
Ambient Occlusion
Процесс просчета освещения просчитывает непрямое освещение на сцене автоматически,
одноко может быть полезным усилить тени от непрямого освещения в труднодоступных местах
для более реалистичного или стилизованного вида.
Ambient Occlusion (AO) — это специальный алгоритм затенения поверхности, который вы
можете увидеть при равномерно яркой атмосфере (например пасмурной погоде). Данный
алгоритм затенияет углы, проемы и остальные «тесные» места при непрямом и прямом
освещении, после чего запекает это вместе с остальным просчетом в текстуры. AO включен по
умолчанию, однако вы можете его выключить в настройках просчета (Lightmass Settings) в World
Settings.
На первом скриншоте сцена без Ambient Occlusion, а второй скриншот уже с ним. Обратите
снимание на затенения поверхности там, где объекты близко друг к другу.

Настройки AO
Параметр Описание
Visualize Помещает в запеченые текстуры только AO, при этом остальное
Ambient освещение не учитывается. Полезно для того, что бы настроить данный
Occlusion эффект и точно видеть, где и как сильно он применяется.
Max
Максимальная дистанция от объекта, на которой он будет отбрасывать
Occlusion
подобную тень на другие поверхности.
Distance
Fully Максимальный процент затенения, выше которого AO будет полностью
Occluded черным.
Автор: Ханин Владимир

119
Samples
Fraction
Occlusion
Контраст
Exponent
Просчет Ambient Occlusion почти ничего не стоит до тех пор, пока Num Indirect Lighting
Bounces выше 0.
Ограничения
Для нормального отображения AO необходимо относительно высокое разрешение текстур
освещения, так как данный эффект обычно имеет значение на малых дистанциях.
Preview качество просчета освещение обычно плохо просчитывает AO. Старайтесь проверять его
на более высоком качестве (например High).
Тени от Masked материалов
Тени от материалов с Masked режимом смешивания так же учитываются при просчете
освещения. Те места на объекте, которые обрезаются маской прозрачностью, не будут
отбрасывать теней, что позволяет делать вам реалистичные тени от различной растительности
или же других тонких объектов, которые используют подобный материал.

Возможности Статичных источников освещения


Объемные источники
При просчете освещения, все источники освещения с режимом мобильности Static имеют
определенный размер (в других случаях свет излучается из точки). Point и Spot источники
используют сферу в качестве формы, в то время как Directional использует диск на краю сцены.
Контролировать радиус сферы у первых двух можно с помощью Light Source Radius параметра. Из-
за того, что источники света имеют определенный размер, тени от объектов имеют свойство
становиться мягче на расстоянии, так же как и в реальном мире появляется полутень.
На первом изображении тень всегда одного размера. На втором скриншоте же можно
увидеть, что тень от Directional Light становится более жесткой рядом с местами, откуда она
начинается. Например от колонны тень на пол падает довольно жесткая, а он стены за пределами
изображения — мягкая.

Автор: Ханин Владимир

120
Радиус Point и Spot Light можно увидеть благодаря желтой сетке сферической формы. Белая
сетка означает радиус влияния источника света. Следите за тем, что бы радиус самого источника
света не пересекал геометрию, иначе такой источник будет излучать свет и с другой стороны и
может так же создать артефакты в конечном результате.

Тени от прозрачных материалов


Свет, который проходит через полупрозрачный материал, будет терять некоторое
количество энергии, засчет чего будут появляться тени.

Автор: Ханин Владимир

121
При проходе через полупрозрачные материалы, свет так же приобретает оттенок самого
материала. На данный момент нету отдельного свойства у материала, который бы помог
настроить цвет света, который проходит сквозь подобный материал, однако цвет сейчас
рассчитывается исходя из свойств самого прозрачного материала по следующим схемам:
Режимы смешивания BLEND_Translucent и BLEND_Additive — Цвет тени = интерполяция
между белым и цветом из BaseColor в зависимости от свойства Opacity.
Режим BLEND_Modulate выдает цвет тени такой же, как и BaseColor свойство материала.
Учитывайте тот факт, что непрямое освещение будет размывать тени от прозрачных
материалов, из-за чего они будут менее насыщенными, чем сам материал.
Жесткость теней
Существует несколько способов контролировать жесткость теней от полупрозрачных
материалов.
На первом изображении был использован источник света с увеличенным радиусом, а на
втором свет излучался из одной точки.

Автор: Ханин Владимир

122
На первом изображении ниже использовался свет из одной точки, как и на втором примере
выше, однако разрешение карт освещения (Lightmap resolution) довольно малое, что бы сохранить
четкость материалов. На втором изображении в материале было установлен параметр Export
Resolution Scale на очень низкий, из-за чего тени хоть и низкого разрешения, но жесткие.

Тени от прозрачных материалов так же влияют на непрямое освещение, то есть будут


создавать отскок света от того места, куда попадают их тени. На изображении ниже показан
пример, где через цветное окно проходит интенсивная тень, после чего свет отскакивает и
немного освещает комнату.

Автор: Ханин Владимир

123
Ограничения
Полупрозрачные (Transclucent) материалы пока не поддерживают рассеивание света,
поэтому такой материал не сможет освещать окружение при попадании света на него.
Первая итерация непрямого освещения пока что не поддерживается полупрозрачнымы
материалами. Это означает, что первый отскок света от поверхности не будет учитывать цвет
материала при проходе.
Искажения и преломления света от Refraction свойства пока не поддерживаются.
Создание качественного освещения
Выделяющийся свет
После того, как свет просчитан, может возникнуть проблема в том, что свет довольно
тусклый или слабо заметный. Существует несколько способов сделать его более выделяющимся.
В время рендеринга на экран, цвет пикселя определяется свойством материала BaseColor
умноженного на цвет света из карты освещения, поэтому цвет самого материала имеет прямое
отношение к тому, насколько будет видно освещение. Высокий контраст или темные материалы
не дают свету быть достаточно заметным во время рендеринга. В то время как не сильно
контрастные или светлые текстуры позволяют увидеть свет гораздо лучше.
На изображениях ниже вы можете сравнить, как на первом видно свет при светлых
материалах, и на втором, где заметны только резкие смены освещения из-за того, что там
использовались в основном темные и «шумные» текстуры.

Автор: Ханин Владимир

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

Настройка освещения
Избегайте равномерного освещения, например освещения от Cubemap’ов, так как такое
освещение уменьшает контрастность в зонах, где работает только непрямое освещение. Из-за
этого может потеряться детализация сцены.
Устанавливайте источники света таким образом, что бы прямо освещенные зоны хорошо
выделялись на фоне непрямого освещения. Такой контраст хорошо поможет выделить тени и
лучше детализирует вашу сцену.
Так же старайтесь избегать слишком ярких источников света, а так же слишком темных теней.
Улучшение качества освещения
При просчета освещения, одним из важных аспектов деталезированных теней является
высокое разрешение карт освещения на объектах, куда эти тени падают, а так же это позволяет
избежать шума и артефактов в непрямом освещении, в целом повысив его качество. С другой

Автор: Ханин Владимир

125
стороны, повышение разрешения «Лайтмапов» заметно увеличит время просчета, а так же будет
требовать большей текстурной памяти во время процесса игры. В идеале, высокое разрешение
должно быть установлено только там, где у вас важная зона с хорошо выделяющимеся тенями.
Предустановка качества просчета
Перед тем, как просчитывать освещение, определитесь, на какой вы стадии. Если у вас
готовая сцена и настроенное освещение, то хорошим решением будет выполнить запекание на
Production качестве (Настройки Lightmass Solver). Это может увеличить время просчета, однако
выдаст наилучшее качество с наименьшим количеством артефактов.
Если же вы ещё на стадии проверки и настройки, то лучше использовать Preview качество
для того, что бы примерно посмотреть, как будет выглядеть ваша сцена в текущем варианте и
сделать соответствующие настройки.
Ускорение процесса просчета
Несколько способов, которые помогут сделать просчет освещения быстрее:
Используйте высокое разрешение карт освещения только в тех местах, где у вас есть
контрастное (сильно меняющиеся) освещение и жесткие тени. Уменьшайте разрешение на тех
моделях, которые не попадают под прямое освещение или тени. Если объект находится в зоне,
где освещение будет непрямым, лучше поставить разрешение поменьше.
Поверхности, которые никогда не увидит игрок должны быть с наименьшим разрешением.
Используйте Lightmass Importance Volume для того, что бы выделить важные зоны для просчета
освещения (например только те, где может находится сам игрок).
Оптимизируйте разрешение карт таким образом, что бы оно было равномерным. Запомните, что
процесс просчета никогда не может быть быстрее, чем самый медленный объект для просчета, не
важно, сколько машин у вас занимается этим процессом. Избегайте больших объектов с очень
высоким разрешением. Лучше поделите их на несколько модульных кусков, в особенности если у
вас несколько ядер или несколько машин, просчитывающих освщение.
Объекты, которые сами себя перекрывают будут просчитываться в разы дольше. Например ковер
с несколькими слоями полигонов, наложенных друг на друга для получения 3х мерного эффекта,
будет просчитываться значительно дольше, нежели просто плоский пол.
Существует очень полезное окно — Lighting Build Info. В нем вы сможете проверить, сколько
заняло времени, что бы просчитать карту для конкретного примера. Вы можете найти это окно
под меню Build > Lighting Info > Lighting StaticMesh Info. Переключите вкладку на Lighting Build Info,
что бы найти нужную информацию.

Настройка просчета освещения


lightmass Importance Volume
Границы многих карт, в особенности открытых, уходят гораздо дальше, чем играбельная
зона. Процесс просчета излучает фотоны в зависимости от размера карты, поэтому фоновые

Автор: Ханин Владимир

126
объекты за границами игровой площадки могут сильно тормозить процесс просчета, так как
увеличивается общее количество фотонов. Lightmass Importance Volume устанавливает, в какой
зоне излучаются и просчитываются фотоны более точно и реалистично. Это позволяет
сфокусировать внимание процесса просчета только там, где там, где будет находится игрок и
видеть результаты освещения вплотную. В пространстве вне Lightmap Importance Volume
просчитывается только один отскок непрямого освещения и более низкого качества.
На первом изображении ниже показана игровая локация сверху с включенным режимом
просмотра Wireframe. Зона, где будет находится игрок и которой нужно более качественное
освещение гораздо меньше. На втором изображении игровая зона приближена. На ней так же
установлен Lightmass Importance Volume (Он выделен). Радиус приорететного просчета
уменьшился с 80 000 юнитов до 10 000, что в 64 раза меньше.

Вы можете добавить Lightmass Importance Volume на уровень, перетащив его с панели


Modes, категории Volumes. После чего нужно установить размер зоны.

Вы так же можете сконвертировать любой BSP Браш. Вам нужно выделить его, нажав на
параметр Convert Actor на панели Details, и выбрать Lightmass Importance Volume из выпадающего
списка.

Если вы установите несколько подобных зон на уровень, тогда большая часть света будет
просчитываться в контейнере, который описывает все Lightmass Importance зоны. Однако
Автор: Ханин Владимир

127
семплеры непрямого освящения будут помещены только внутрь выставленных на сцену
Volume’ов.
Настройки сцены
Настройки просчета освещения можно изменить в настройках сцены — так называемой
World Settings панели. Параметры для освещения находятся под категорией Lightmass.

Вы можете отобразить World Settings панель, кликнув на иконку Settings на Тулбаре и


выбрав в выпадающем списке соответствующий пункт.
Параметр Описание
Отключает статичное освещение на сцене, указывая, что на ней будет
Force No только динамическое освещение, а так же не будет хранится никаких карт
Precomputed освещения в файле. Что бы очистить файл сцены от карт освящения (которые
Lighting могут весить достаточно много), вам нужно включить данный параметр и ещё
раз нажать на Build для просчета и вычещения карт.
Масштаб сцены по сравнению со стандаатной системой в UE4 (1 юнит =
1 см). Это используется для того, что бы определять, насколько детальнее
Static Lighting
должен быть просчет. Учитывайте, что уменьшение данного параметра
Level Scale
приведет к увеличению времени просчета. На больших сценах освещение
может просчитываться в 2 или даже 4 раза дольше.
Количество отскоков непрямого освящения. 0 — только прямое
освещение без отражений от поверхности. параметр 1 и больше включает
Num Indirect непрямое освещение, позволяя фотонам отражаться от поверхности. 1й
Lighting Bounces отскок занимает всегда больше всего времени, но и имеет больше влияния на
само освещение, чем последующие, которые так же гораздо дешевле в
просчете.
Увеличивает качество непрямого освещения. Высокие настройки могут
Indirect Lighting избавить от некоторых артефактов на сцене, такие как шум или грязь. Учтите,
Quality что это не избавит от артефактов, которые возникают из-за UV развертки
модели (швы, неправильные тени и т.п.).
Indirect Lighting Смягчает непрямое освещение, что так же может избавить от шума. С
Smoothness другой стороны тени непрямого освящения или Ambient Occlusion могут
потерять свою детализацию. Иногда полезно уменьшать данный параметр до
0.66 или 0.75, при этом увеличивая параметр Indirect Lighting Quality. Таким
образом можно сохранить детализацию, но при этом избавиться от шумов.
Автор: Ханин Владимир

128
Однако такой прием может повлиять на время просчета освещения в худшую
сторону.
Цвет, который подхватывается в процессе просчета. Данный параметр
Environment
можно визуализировать как сферу вокруг сцены, которая излучает указанный
Color
цвет во все стороны.
Environment
Усиливает параметр Envirement Color.
Intensity
Определяет влияения Diffuse свойства при просчете освещения.
Другими словами, без данного параметра свет будет отражаться от
поверхности со своим цветом, не подхватывая цвет самого материала.
Diffuse Boost
Обратите внимание, что повышая параметр Diffuse Boost, вы не сделаете
непрямое освещение святлее, так как свет ограничен яркостью 1.0, а при
каждом отскоке он становится все слабее.
Use Ambient Определяет, будет ли в процессе просчитываться так называемый
Occlusion Ambient Occlusion и запекаться с основными картами освещения.
Direct
Illumination
Как сильно AO накладывается под прямым освящением.
Occlusion
Fraction
Indirect
Illumination
Как сильно AO накладывается под непрямым освящением.
Occlusion
Fraction
Occlusion
Определяет контраст эффекта AO.
Exponen
Fully Occluded Максимальный процент затенения, выше которого AO будет полностью
Samples Fraction черным.
Max Occlusion Максимальная дистанция от объекта, на которой он будет отбрасывать
Distance подобную тень на другие поверхности.
Заменяет обычное прямое и непрямое освещение цветом,
Visualize соответствующим Diffuse свойством материала. Это полезно для
Material Diffuse удостоверения того, что Diffuse свойство на материалах соответствует тому,
какой цвет будет участвовать в просчете освящения.
Visualize Помещает в запеченые текстуры только AO, при этом остальное
Ambient освещение не учитывается. Полезно для того, что бы настроить данный
Occlusion эффект и точно видеть, где и как сильно он применяется.
Level Lighting
Определяет общее качество просчета освещения и его настройки.
Quality
Настройки источников света

Парамет
Описание
р
Indirect Lighting
Насыщенность непрямого света от источника света.
Saturation
Shadow Контролирует радиус полутени, или другими словами, как быстро тень
Exponent от источника света меняется с полностью темногой до её же отсутствия.
Light Source Определяет угол под которым стоит источник света относительно той
Angle поверхности, куда попадает его свет. Влияет на размер полутеней. Только для
Автор: Ханин Владимир

129
Directional Light.
Настройки материала

Параме
Описание
тр
Cast Shadow У полупрозрачного материала (Translucent) указывает, что тени будут
as Masked отбрасываться как от Masked материала.
Diffuse Boost Определяет вклад Diffuse свойства при просчете статичного освящения.
Export Увеличивает разрешения Diffuse свойство при экспорте в программу
Resolution просчета освящения. Полезно, когда стандартное разрешение не дает нужное
Scale разрешение при непрямом освящении.
Отражения окружающей среды
Отражение окружающей среды обеспечивает эффективное глянцевое отражение в каждом
участке сцены.Многие важные материалы, такие как металлы, имеют отражения во все
направления, что обеспечивает отражения окружающей среды.Отражения должны быстро
работать очень быстро, так как расчитаны на консоли и компьютеры средней конфигурации.Это не
даёт отражений динамических объектов или чётких отражений, поэтому таких результатов
необходим достигать за счёт использования дополнительных методов, таких как отражения
экранного пространства(Screen Space Reflections).

Быстрая настройка
Для того, что бы начать испольвать отражение окружающей среды — настройте освещение
и постройте его.Там (имеет ввиду на сцене) должно присутствовать непрямое диффузное
освещение, что бы отражение окружающей среды могло показыватся.Далее, перетащите
эктор SphereReflectionCapture из вкладки Modes в вашу сцену и убедитесь, что ваши материалы
имеют заметный блеск, и низкую шероховатость.
Используйте режим вихуализации Reflection Override, чтобы увидеть то, что было захвачено.
Глянцевая непрямая зеркальность
В техническом плане, отражения окружающей среды обеспечивает непрямой блеск.Мы
плучаем прямую зеркальность путём аналитического освещения, но это даёт освещение в
нескольких ярких направлениях.Мы также получаем прямые зеркальности от небесного
освещения, но это не даёт локальных отражений, так как кубмапа небесного света бесконечно
Автор: Ханин Владимир

130
далека.Непрямая зеркальность даёт всем элементам сцены способность отражать другие
элементы сцены, это важно для таких материалов как металл, у которых нет диффузной реакции.

только диффуз только отражения

Полное освещение
Отражения окружающей среды работают посредством захвата статической сцены во многих
точках и перепроицировании их на простые формы, как в сферах отражений.Пользователь
выбирает точку захвата размещением эктора ReflectionCapture.Отражения обновляются в режиме
реального времени, для помощи в настройке их положения, но статичны в момент
выпонения.Проецирование захваченных сцены в простые формы даёт приблизительный
параллакс для отражений.Каждый пиксель смешивается между несколькими кубмапами, чтобы
получить конечный результат.Меньшие ReflectionCapture экторы переопределяют крупные,
поэтому вы можете уточнить отражения в областях по мере необходимости. Для например, вы
можете разместить захват в центр комнаты, а затем уточнять его отражения поместив меньшие
захваты в углах помещения.
Материалы с разной глянцевитостью поддерживаются путем создания размытых мипмап из
захваченных кубмап.

Автор: Ханин Владимир

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

отражения на шершавой поверхности без от


затенений ражения с затенениями
Формы захвата отражений
На данный момент существует 2 формы захвата отражений : сфера и коробка.Форма захвата
очень важна, так как она контролирует, какая часть сцены будет захвачена в кубмапу,как форма

Автор: Ханин Владимир

132
сцены будет перепроецирована в отражениях, и кака часть сцены сможет получать отражения из
кубмапы (зоны влияния).
Форма сферы
Форма сферы наиболее используемая.Она никогда не совпадает с формой отражаемой
геометрии, но она не имеет разрывов и углов, следовательно искажение равномерное.

Форма сферы имеет оранжевый радиус влияния который контролирует какие пиксели могут
быть затронуты и захвачены в кубмапу и перепроецированы в сферу.
Точки захвата с меньшим радиусом перезаписывают данные больших по размеру точек
захвата.
Форма коробки
Форма коробки довольно ограниченна в применении, и в основном применяется для
корридоров и прямоугольных комнат.В причина в том, что только пиксели внутри коробки, могут
захватить отражения, и в то же время вся геометрия внутри коробки проецируется по форме этой
самой коробки, создавая значительные артефакты во многих случаях.

Когда коробка выделена, она имеет оранжевую окантовку формы проецирования.Форма


коробки захватывает лишь то, что находится внутри коробки,и с удалением от центра захват
затухает.
Редактирование
Важно отметить, что захват отражение не происходит автоматически.Перезахват отражений
происходит только лишь при загрузке карты,прямом редактировании, перезапечении
освещения.Если вы изменили яркость света или передвинули геометрию в сцене, то вам
необходимо выбрать точку захвата и нажать Update Captures, чтобы обновить данные захвата.
Автор: Ханин Владимир

133
Визуализация
Режим отображения Reflection Override был добавлен, чтобы легче было увидеть, как
настроены отражения.Этот режим перекрывает все нормали сглаживая варшины нормалей, и
делает все поверхности полностью зеркальными и полнстью гладкими (как зеркало).В этот
режиме хорошо видны ограничения и артефакты, поэтому стоит иногда переключатся в этот
режим, чтобы видеть как ведут себя отражения нормальных условиях.

Были добавлены несколько новых полезных флажков для изоляции некоторых компонентов
освещения:
Флажок Описание
Lighting Components >
Отключение диффузного вклада от всех методов освещения.
Diffuse
Lighting Components > Отключение зеркальных вкладов от всех методов
Specular отражений.
Это позволит отключить отражение объектов окружающей
Lighting Features >
среды, но другие свойства отражения по-прежнему будет
ReflectionEnvironment
активной(SSR, analytical specular).
Настройка уровня для использования отражений окрущающей среды
1. Чтобы иметь хорошие отражения, первым делом необходимо создать дифуузное
освещение, включая непрямое освещение, посредством лайтмап.Раздел Lightmassсодержит
больше информации. Основные ошибки Lightmass, неправильные настройки UV
развёрток,отсутствие LightmassImportanceVolume, или Force No Precomputed
Lighting установленные в World Properties.
Диффуз сцены — это то, что будет видно в отражениях окружающей среды.Для лучшего
результата обеспечьте контраст между прямоосвещаемыми и затенёнными участками.Участки с
ярким диффузом будут выглядеть чётче в отражениях, а тёмные участки будут выглядеть более
явно.Используя режим Lit совместно с отключённым флажком Specular, можно увидеть как и
какие отражения были захвачены.
2. Крайне важно,настроить материалы вашей сцены, чтобы они правильно работали с
отражениями окружающей среды.Плоская, зеркальная поверхность позволит выявить неточности
совмещения проекций кубмап на простые формы.Тем не менее, пышные геометрические или
неровные поверхности могут скрыть эти артефакты и обеспечить приемлимые
результаты.Поэтому важно использовать detail normal maps и указать некоторую степень
шероховатости на материалах, которые будутиспользуется в плоских областях.

Автор: Ханин Владимир

134
Сглаженная поверхность, но Шероховатая поверхность, но Сглаженная поверхность и
пышная геометрия — хорошее плоская геомертрия — хорошее плоская геометрия — видно,
качество отражений качество отражений что отражения не совпадают
3. Разместите захват отражений в области, где вы хотите видеть
отражения.Попробуйте разместить сферу захвата так, чтобы часть уровня где вам нужны
отражения, поместилась внутри радиуса, так как сцена будет проецировать эту форму на
сферу.Старайтесь избегать размещения захватов слишком близко к любой геометрии сцены,так
как близконаходящаяся геометрия будет доминировать и блокировать важные детали за ними.
Вопросы производительности
Стоимость отражение окружающей среды зависит только от того, сколько захватов влияет
на пиксель на экране.Это очень похоже на отсроченного освещение.Захваты отражений
ограничены своими радиусами влияния.Зеркальность реализуется через кубмапу мипмапов,
поэтому разница в производительности между резкими и грубыми отражениями невелика.
Ограничения
● Отражения с помощью этого метода, являются приблизительными.В частности, отражение
объекта редко совпадает с фактической формой объекта в сцене из-за проекции его на простые
формы.Это приводит к созданию нескольких видов этого объекта в отражениях, так как много
кубмап смешивается вместе.Плоские, гладкие поверхности, которые дають зеркальные
отражения, более заметно покажут ошибки.Используйте детальные карты нормалей и отражений,
чтобы разбить отражения.
● Захват сцены в кубмапы — медленный процесс, который должен быть выполнен вне
игры.Это значит, что динамические объекты не могут быть отображены в отражениях, но тем не
меннее, они могут получать отражения от статической сцены.
● Для уменьшения ошибки, захватывается лишь диффуз сцены.Чисто зеркальные
поверхности (металлы) будут иметь своё зеркальное применение, как будто бы если это было их
диффузом во время захвата.

Автор: Ханин Владимир

135
● Могуть присутствовать значительные потёки, когда существуют различные условия
освещения по обе стороны стены.Одна сторона может быть настроена на правильные отражения,
но они всегда будут перетекать на другую сторону.
● Из-за аппаратных ограничений DX11,количество кубмап используемые для захвата сцены
лишь 128 с каждой стороны, и мир может иметь не более 341 захвата отражений включеных
одновременно.
Тени
Тени дают объектам ощущения контакта с поверхностью, тем самым позволяя ощутить
глубину и пространство.Статические тени отображаются настолько далеко, насколько идёт
рендеринг, но динамические тени могут сильнее сказатся на производительности.Данный
документ покажет базовые виды теней которые есть в Unreal Engine 4.
Static Lights
Статическое освещение отбрасывает полностью статические тени и свет, это означает, что
такой тип освещения не имеет прямого влияния на динамические объекты (статическое
освещение запечено в кеш непрямого освещения, поэтому оно имеет некоторый эффект), как на
примере ниже.

Персонаж на картинке выше, тот что слева, стоит под статическим светом, свет и тени никак
не взаимодействуют с ним; а тот что справа, стоит под стационарным источником света.
Прямое освещение каскадными картами теней(затенение всей сцены)
Directional Stationary Lights — специальные источники света, т.к. они поддерживают
затенение всей сцены посредством Cascaded Shadow Maps, в момент использования статического
затенения.Это очень удобно на уровнях с множеством анимированной растительности; вы хотите
движущиеся тени вокруг игрока, но не хотите переплачивать за чрезмерное количество каскадов,
для покрытия больших дистанций обзора.С увеличением расстояния, динамические тени
растворяются среди статических теней настолько, что переход практически незаметен.Чтобы
применить данную возможность, просто измените значение Dynamic Shadow Distance
StationaryLight в DirectionalLightStationary, чтобы изменить дистанцию растворения.
Тени Стационарных источников света
Динамические объекты (такие как StaticMeshComponents и SkeletalMeshComponents с
подвижностью установленной в Movable) должны быть интегрированны в мировое статическое
затенение на дистанции полей карт затенения.Это достигается с помощью теней для каждого
объекта.Каждый подвижный объект создаёт 2 динамические тени от стационарного источника
света: одну, для управления статической тени проецируемой на объект и вторую, для управления
тени проецируемую на остальной мир.С такой настройкой, затенение для стационарных
источников света происходит от динамических объектов,которое оно затрагивает.Это означает,
что стоимость может варьироваться от очень маленькой, до огромной, в зависимости от того,
сколько присутствует динамических объектов.При наличии достаточного количества
динамических объектов, более эффективным будет использование Movable освещения. На сцене
Автор: Ханин Владимир

136
ниже, сферы — подвижный объект, и все они получают тени от статического мира и проецируют
собственные тени, которые соединяются с остальными тенями на отдалении.Фруструм Per
Object теней для каждого подвижного объекта также показан.

Per Object тени используются для подвижных компонентов используя теневую карту границ
объекта, поэтому границы должны быть точными. Для скелетал мешей это значит, что они
должны иметь physics asset. Для частиц — любой фиксированный ограничивающий бокс должен
быть настолько велик, чтобы вместить в себя все частицы.
Динамические тени
Подвижные источники света проецируют полностью динамические тени (и освещение) на
всём.Информация об освещении не будет запекатся в лайтмапы.Статик меши, Скелетал меши,
эффекты, прочее — будут получать и проецировать динамические тени от подвижных источников
света.
Динамические тени самые ресурсоёмкие.
Превью теней
Когда редактируете стационарное или статическое освещение, тени могут стать
«незапечёнными», Preview Shadowing показывает вам как будут выглядеть ваши тени после
запекания.
Такие (имеется ввиду незапечённые ) тени показываются в редакторе с наложенным поверх
текстом «Preview«, для распознавания их среди других теней.

Автор: Ханин Владимир

137
Если вы протестируете свою игру в редакторе, до того как перезапечёте освещение, то
превью тени исчезнут, так как они существуют только лишь в режиме редактирования, но никак не
в режиме игры в редакторе.

Для того, чтобы получить тени из превью теней, вам необходимо выбрать опцию Build
Lighting из меню Build.

Вы можете отключить превью теней посредством снятия галочки с Preview Shadows


Indicator во вьюпорте Show/Visualize меню.
Если вы хотите изменить текст материал функции освещения, которая проецирует этот текст,
то вы можете его найти в : Engine/EditorMaterials/PreviewShadowIndicator.
Всё вместе
Когда все тени собраны вместе, каждая из которых привносит свои сильные стороны и
компенсирует слабые стороны других — они впечатляют своим видом.

Автор: Ханин Владимир

138
Постобработка
Использование эффектов постобработки (Post Process Effects) в Unreal Engine позволяет
художникам и дизайнерам изменять общий вид и атмосферу сцены. Примером подобных
эффектов может служить блюм(Эффект свечения), ambient occlusion, и цветокоррекция.
В UE4 существует несколько способов настроить постобработку для вашего проекта.
Настроить можно через камеру (через которую пользователь видит сцену вашего проекта.
Например камера внутри класса персонажа), а так же через специальные зоны постобработки,
именуемыми Post Process Volume. Процесс редактирования настроект ничем не отличается,
однако у Post Process Volum имеется ряд настроект, которые определяют зону смешивания и
активации настроек.
Post Process Volume
Post Process Volume – особый тип объема (Вольюм).
По существу, в Unreal Engine 4 каждый объем постобработки – всего лишь один из типов слоев,
которые могут создаваться с помощью игрового кода (эффект попадания), пользовательского
интерфейса (меню паузы), камеры (виньетка) или матини (matinee; эффект старины). Каждый
отдельный слой имеет свой вес, что позволяет отлично управлять ими, смешивать их.
Смешивание выполняется с использованием линейной интерполяции и только для активных
объемов. К тому же, эффекты в PostProcessVolume проявятся лишь тогда, когда камера окажется в
его пределах (если неактивен параметр «Unbound» (Бесконечный). Подробнее о параметрах
PostProcessVolume можно узнать в следующей таблице:
Значение Описание
Настройки постобработки для объема. Флажки большинства параметров
Settings
определяют, как будут смешиваться одни эффекты с другими.
Определяет порядок, в котором происходит комбинирование нескольких
Priority объемов. Тот, который имеет больший приоритет, превалирует над остальными,
даже если он перекрывают его.
Дистанция в единицах Unreal Engine, начиная с которой будет происходить
Blend
смешивание эффектов пост обработки. Материалы пост обработки будут
Radius
игнорировать этот параметр.
Blend
Влияние волюма. 0 – отсутствие эффектов, 1 – полное влияние.
Weight
Взаимодействует ли волюм с постобработкой или нет. Если да, то его
Enabled
настройки будут использоваться для смешивания.
Определяет область действия волюма. Если у параметра имеется флажок, то
Unbound волюм будет действовать во всем мире, в противном случае, только в своих
пределах.
Настройки постобработки
Anti-Aliasing
Anti-aliasing – Отвечает за сглаживание объектов. Разделяют между собою : FXAA, MSAA,
Temporal AA.
Основной принцип сглаживания — использование возможностей устройства вывода для
показа оттенков цвета, которым нарисована кривая. В этом случае пиксели, соседние с граничным
пикселем изображения, принимают промежуточное значение между цветом изображения и
цветом фона, создавая градиент и размывая границу.
FXAA (Fast approXimate Anti-Aliasing) — метод сглаживания от Nvidia представляющий собой
однопроходный пиксельный шейдер, который обсчитывает результирующий кадр на этапе
постобработки. Является более производительным решением, по сравнению с традиционным
MSAA (Multi-Sampling Anti-Aliasing), что, однако, сказывается на точности работы и качестве
изображения.

Автор: Ханин Владимир

139
Temporal AA (Временной АА) пытается уменьшить или устранить последствия
временного алиасинга. Временное сглаживание обусловлено частотой дискретизации (т.е, кол-во
кадров в секунду) сцены, но её скорость очень мала по сравнению со скоростью обработки
объектов внутри сцены. Из-за этого предметы появляются не на своем месте или прыгают вместо
плавного продвижения к движущемуся объекту. Чтобы избежать артефактов, частота FPS должна
быть вдвое выше, чем самый быстрый движущийся объект. Поведение затвора камеры сильно
влияет на сглаживание, т.к общий вид экспозиции через какое-то время ставит определенное
ограничение по времени, что является важным фактором сглаживания. Временной анти-алиасинг
может быть использован для камеры для достижения лучшего ограничения пропускной
способности. Типичный пример - в фильме появляется колесо автомобиля, которое крутится в
обратном направлении. Это так называемый эффект обратного кручения.
Настройки постобработки содержат всевозможные эффекты, которыми можно управлять.
Все параметры объявляются в классе UScene. Волюм постобработки имеет структуру
FPostProcessSettings и содержит в себе все соответствующие параметры.
Bloom
Bloom – это особое явление, наблюдаемое в реальном мире, которое можно использовать
для придания эффекта свечения ярким участкам изображения. Свечения можно заметить, если
смотреть на яркий и светлый объект, расположенный на гораздо более темном фоне. В этом
случае наблюдаются и другие эффекты, такие как блики, но они не входят в понятие обычного
Блума.
Наши дисплеи (ТВ, TFT и другие) обычно не поддерживают HDR (Высокий Динамический
Диапазон, High Dynamic Range), поэтому мы не можем по-настоящему рендерить крайне яркие
объекты. Вместо этого, мы симулируем сопутствующие эффекты, которые воспринимаются
нашими глазами (подповерхностное рассеивание; subsurface scattering). Эффект, вероятно,
физически не особо правильный, но он помогает передать необходимую яркость объекта и
привнести реализма в LDR-изображение (Низкий Динамический Диапазон; Low Dynamic Range).
Эффект Bloom
Свечение можно реализовать с единичным размытием по Гауссу. Но для лучшего качества,
комбинируются несколько подходов с различным радиусом. А для лучшей производительности –
создается большее размытие при меньшем разрешении. В UE3 у нас имелось 3 размытия по
Гауссу в разрешении ¼, 1/8, 1/16. Теперь же – 5 видов. От Blur1 до Blur5, от ½, до 1/32,
соответственно. Более того, если потребуется, можно добавить Blur0 для исходного разрешения.
Варианты размытия комбинируются несколькими подходами, дабы достичь гибкости и
высокого качества: для лучшей производительности, размытия высокого разрешения (низкие
значения свечения) должны использоваться редко и в малом количестве, а при большом
размытии стоит использовать меньшее разрешение (высокие значения).
Свойств
Описание
о
Масштабирование цвета всего bloom-эффекта (линейно). Возможное
использование: продолжительное исчезновение или появление, затемнение.
Intensit
y

Определяет, как много единиц яркости необходимо цвету для создания


Thresho свечения. В дополнение к порогу (Threshold), существует часть, где цвет частично
ld подвергается воздействию эффекта. Чтобы передать все цвета сцены в свечении,
требуется использовать значение -1.
Tint Модификатор яркости и цвета каждого эффекта bloom.
Size Размер в процентном соотношении от ширины изображения. Если вам
необходим больший размер, используйте меньшее разрешение размытия (большее
Автор: Ханин Владимир

140
значение блюма).

Маска загрязненности блюма (Bloom Dirt Mask)


Bloom Dirt Mask использует текстуру для выделения определенных зон на дисплее. Это
может использоваться для создания дефектов камеры или впечатляющего HDR-эффекта
Свойство Описание
Texture2D используется в качестве маски. Рекомендуется использовать две
текстуры, так как это помогает лучше распределять пространство экрана. Текстура
низкого разрешения подходит для имитации грязи на камере, так как навряд ли она
попадет в фокус и все равно будет размытой. Создать текстуру можно с помощью
Dirt Mask
фильтра Photoshop Lens blur. Хроматическая аберрация может помочь улучшить
эффект, однако, остерегайтесь артефактов сжатия. И, кстати, это свойство не может
участвовать в смешивании. Но не волнуйтесь: мы планируем в скором времени
сделать настройки более гибкими с помощью шейдеров.
Dirt Mask
Это свойство можно использовать для изменения цвета маски, её яркости.
Tint Color
Dirt Mask
Увеличивает контрастность эффекта (линейно).
Intensity
Color Grading
В Unreal Engine, термин Цветокоррекция (Color Grading) включает в себя Тональную
компрессию (Tone Mapping; трансформация HDR в LDR) и Коррекцию цвета (Color Correction;
трансформация из гаммы LDR в гамму монитора).
Тональная компрессия (Tone Mapping)
Цель тональной компрессии в том, чтобы перевести цвета широкого диапазона HDR
(Высокий Динамический Диапазон) в более узкий LDR (Низкий Динамический Диапазон). Это
позволяет монитору правильно отображать цвета. Процесс происходит после обычного
рендеринга в процессе постобработки.
Глобальная тональная компрессия – это функция, имеющая три входа (RGB) и три выхода (RGB).
Локальная, помимо этого, учитывает свойства окружающих пикселей, что, естественно, ведет к
большему количеству вычислений (и падениям производительности). В идеале, тональная
компрессия обязана сохранять цвет пикселя даже в том случае, если он крайне яркий.
Следующий график показывает, как каждый канал в диапазоне от 0 до 5 преобразовывается в
диапазон от 0 до 1:

Автор: Ханин Владимир

141
В данном случае используется функция Код:
Гамма-цвет = ЛинейныйЦвет / (Линейный цвет + 0.187) * 1.035
(GammaColor = LinearColor / (LinearColor + 0.187) * 1.035)
Заметьте, что светлые цвета постепенно становятся светлее, но гораздо медленнее, нежели
темные. Черный остается черным и это наиболее линейная часть кривой, которая несколько
круче, чем должна быть. Это приводит к увеличению контраста, что вполне нормально и
ожидаемо при использовании тональной компрессии. Для получения хорошего результата,
исходное изображения должно иметь больше динамики в яркости (HDR).
Представленная функция уже имеет две константы. Дополнительные переменные могли бы
увеличить гибкость настроек, но выведение хорошей, с точки зрения
качества/гибкости/производительности, функции довольно сложно. По этой причине мы решили
придерживаться простой формулы и изменять уже получившееся LDR-изображение.
Переведя цвета из HDR в ограниченный диапазон, мы получили выразительные темные цвета. Что
касается светлых, то их мы можем изменять по желанию. Этот метод прост для понимания, гибок
в настройке и обладает едва ли не постоянной производительностью.
Свойство Описание
Цвет, являющийся фильтром, применяемым к HDR-сцене.

Scene Color
Tint

Корректирование оттенков темных цветов. Значения в промежутке [0.0, 1.0]

Tonemapper
Toe Factor

Коррекция цвета
Коррекция цвета реализована как таблица поиска (lookup tables; LUTs). Причем, вместо
использования трех 1D-таблиц, у нас применяется всего лишь одна, но 3D-таблица, благодаря
этому становятся возможным более сложные и комплексные трансформации цвета (такие как
обесцвечивание).
Следующее изображение показывает, как таблица нейтрального цвета размером 16x16x16
развернута в текстуру размером 256×16 (схоже с браузером текстур):

Автор: Ханин Владимир

142
Вы можете использовать изображение RGBTable16x1.png с этой страницы, но для этого
загрузите исходный файл, показанный выше. Для этого нажмите на него ПКМ -> Сохранить как.
Измененная текстура может выглядеть так:

Для того, чтобы использовать таблицу поиска (LUT), вам необходимо применить LUT-текстуру к
волюму постобработки.
Свойство Описание
Color Grading
Свойство, регулирующее силу цветокоррекции.
Intensity
LUT-текстура, используемая как таблица при цветокорреции.

Color Grading LUT

Создание LUT-текстур
Инструкция:
1. Сделайте скриншот сцены, вставьте его в документ Photoshop для дальнейшей
настройки.
2. Загрузите в Photoshop нейтральную LUT-текстуру размером 256×16.
3. Взять её можно с этой страницы. Будьте внимательны: загружайте исходный файл,
а не тот, который представлен на странице.
4. Вставьте LUT-текстуру в документ Photoshop со скриншотом («Выбрать все» в LUT-
документе, «Скопировать», переключиться на документ со скриншотом, «Вставить»)
5. Применить манипуляции с цветом (Color Manipulatuins). Лучше всего сделать это
добавлением отдельного слоя, иначе процесс осложнится)
6. Скопируйте «слияние» (Edit/Copy Merged)
7. Вставьте и сохраните получившуюся текстуру размером 256×16 в каком-нибудь
несжатом формате, принимаемым движком.
8. Выполните импорт текстуры в редактор и назначьте ей группу текстур для таблиц
поиска (ColorLookUpTable Texture Group).
Возможны различные изменения цвета. Вот несколько примеров:
● Яркость
● Насыщенность
● Простой контраст (линейный с ограничениями)
● Высококачественный контраст (кривые с крутой линейной частью посередине)
● Выборочные изменения темных, средних и светлых областей изображения.
● Выборочные изменения определенных цветов (лучше всего подходит то цветовое
пространство, в котором яркость выделена в отдельных канал, к примеру, LAB)
● Корректировки могут быть даже выполнены в различных цветовых пространствах (так, в
LAB яркость и цвет независимы друг от друга, что крайне полезно)
Depth of Field
Глубина резкости (DoF) применяет размытие к сцене, основываясь на расстоянии от фокуса.
Так происходит симуляция камеры из реального мира. Эффект применяет для акцентировании
внимания зрителя на определенном предмете или для достижения большего реализма
изображения.
Типы глубины резкости
В Unreal Engine 4 присутствует три реализации глубины резкости: Боке, по Гауссу и
Радиальная

Автор: Ханин Владимир

143
 

По Гауссу (Gaussian DoF)


Глубина резкости по Гауссу (Gaussian DoF): используется обычное размытие по Гауссу. Этот
метод быстр и хорошо подходит для использовании в играх, где производительность критична.
Боке (Bokeh DoF)
Боке — это нечеткость, размытость отдельных областей изображения или фильма, как
правило тех, которые не находятся в фокусе. Глубина резкости Боке (Bokeh DoF) – метод, где
рендеринг каждого пикселя происходит с использованием текстуры, определяющей форму, с
помощью которой можно добиться эффекта, производимого линзами камеры. Нынешняя
реализация требовательна к ресурсам компьютера, поэтому применяется в половинчатом
разрешении.
Еще один способ сохранения производительности – это использование адаптивной глубины
резкости (Adaptive DOF).
Боке больше всего подходит для создания кинематографических роликов ввиду своей яркой
визуальной составляющей (и требовательности к ресурсам).
Радиальный (Circle DoF)
Радиальный DoF является новейшим дополнением глубины резкости, и позволяет создавать
более реалистичную картинку. Вы можете увидеть боке округлой формы с более резким и
качественным содержанием. Очень большое боке является слабостью этого алгоритма, так как из-
за размера появляются шумы и не так мало, как при Боке DOF. Метод имеет хорошую
производительность (гораздо лучше, чем Боке DOF) и хорошее качество, особенно в таких
областях, как переходные зоны.
Значения по умолчанию из Радиального DoF специально уменьшены, чтобы вы могли
настроить их по своему желанию для получения максимального эффекта. Используйте низкую
апертуру для большого Боке, подбреритесь к объекту и измените поле зрения, сыграв с фокусным
расстоянием.
Реализация
Эффект глубины резкости делится на три уровня – Ближний, Дальний, Фокусный регионы
(Near, Far, Focal, соответственно) – каждый из которых обрабатывается отдельно, после чего они
объединяются.
● Объекты в ближнем и дальнем регионах обычно полностью размыты.
● Объекты в фокусном регионе используют неразмытый слой сцены (non-blurred scene
layer).
● Объекты в ближнем или дальнем регионах, но не в переходных, полностью смешиваются
с размытым слоем.
Автор: Ханин Владимир

144
● Объекты в переходном регионе смешиваются линейно с неразмытым слоем сцены и
размытым, основываясь на их собственном положении.
Все уровни могут быть визуализированы. Для этого нужно установить флажок у параметра
«Depth of Field Layers show» («Показывать слои глубины резкости»). Ближний регион – зеленый,
дальний – синий, фокусный – черный.

Улучшенная нами версия этой визуализации также включают в себя много интересного:

При использовании Радиального DOF вы также увидите перекрестие, прикрепленное к


курсору мыши, показывающее вычисленный круг «неразберихи» (BokehSize) вместе с глубиной и
размером пикселя в цифрах. Обратите внимание, что размер круга не может всегда совпадать с
фактическим эффектом, так как реализация не очень хорошо подходит для больших форм боке. В
будущем мы собираемся изменить это.
 Свойств
Описание
о
Method Определяет метод, использующийся для сцены: Боке, по Гауссу или Радиальное.
Depth
Blur Глубина радиуса размытия в пикселях на 1920.
Radius
Focal Дистанция (в единицах Unreal Engine) от камеры, которая является центром региона,
Distance на который будет наведен фокус, и где будет отсутствовать размытие.

Автор: Ханин Владимир

145
Расстояние (в единицах Unreal Engine) за фокусной дистанцией, где также будет
фокус.

Focal
Region

Near Расстояние в единицах Unreal Engine от фокусного региона ближе к камере, где будет
Transitio переход от фокуса к размытию. При использовании глубины резкости по Гауссу.
n Range

Автор: Ханин Владимир

146
Расстояние в единицах Unreal Engine от фокусного региона в сторону от камеры, где
будет переход от фокуса к размытию. При использовании глубины резкости по Гауссу.

Far
Transitio
n Range

Scale Общий коэффициент масштабирования для размытия Боке.

Автор: Ханин Владимир

147
Максимальный размер (в процентах от ширины изображения) для размытия в
эффекте глубины резкости Боке (заметьте: затраты на просчет масштабируются в
соответствии с формулой: «размер*размер»). Примерный вид функции,
используемой для вычисления размеров Боке на любой дистанции, изображен ниже:

Max
Bokeh
Size

Автор: Ханин Владимир

148
Максимальный размер (в процентах от ширины изображения) ближнего размытия для
глубины резкости по Гауссу (заметьте: затраты на просчет растут с размером).

Near Blur
Size

Far Blur Максимальный размер (в процентах от ширины изображения) дальнего размытия для
Size глубины резкости по Гауссу (заметьте: затраты на просчет увеличиваются с размером).

Автор: Ханин Владимир

149
Текстура, определяющая форму Боке при выходе объектов из фокуса (не
Shape
смешивается).
Occlusio Контролирует количество «размытой» геометрии, которая выйдет за пределы своего
n обычного силуэта и непрозрачности. Значение 0.18 обеспечивает хороший результат.
Значение 0.4 может потребоваться для решения проблем с «утечкой» или
пропаданием цветов. Крайне малые значения (менее 0.18) сводят на нет эффект
размытия, хотя отлично работают, когда объекты находятся близко к камере.

Автор: Ханин Владимир

150
Color Граница, за которой адаптивная глубина резкости переключается на использование
Threshol полного разрешения, основываясь на цвете. Малые значения обеспечивают
d обработку большей части сцены в полном разрешении.
Size Граница, за которой адаптивная глубина резкости переключается на использование
Threshol полного разрешения, основываясь на размере. Большие значения обеспечивают
d обработку большей части сцены в полном разрешении.
Искусственное расстояние, на котором небо находится в фокусе (к примеру, 200000).
Sky
Значения <=0 отключают функцию. Применяется только для глубины резкости по
Distance
Гауссу. Может сильно повлиять на производительность.

Автор: Ханин Владимир

151
Адаптивная глубина резкости (Adaptive DoF)
Глубина резкости Боке по умолчанию рендерится в ¼ разрешения (1/2 в каждом
направлении) по причинам производительности. В большинстве случаев, субдискретизация едва
заметна. Однако, она может вызывать артефакты и нежелательные результаты в некоторых
ситуациях.

Вы можете заметить, что размытие у персонажей на заднем фоне имеет дефекты при
использовании одной лишь субдискретизации глубины резкости (downsampled DoF ). Помимо
этого, заметны артефакты вокруг рогов персонажей переднего плана. Устранить эти проблемы
можно с помощью адаптивной глубины резкости, в этом случае персонажи на заднем плане
выглядят лучше.
Адаптивную глубину резкости можно визуализировать, если установить флажок «Adaptive Depth
of Field show» («Отображать адаптивную глубину резкости»). Так можно увидеть, где
использовалась субдискретизация (зеленый цвет), а где – полноэкранный эффект (красный цвет).
Обычный цвет сцены обозначает те области, к которым не применено размытие.

В общем, вы хотите везде использовать зеленый цвет. Ведь, чем больше красного, тем
больше будут затраты на рендеринг.

Автор: Ханин Владимир

152
 

Адаптация глаз (Exposure)


Адаптация глаз, или автоматическая экспозиция, призвана, исходя из названия, реализовать
сам эффект адаптации глаз обычного человека при переходе из темного помещения в светлое и
наоборот.

Свойство Описание
Технология адаптации основывается на значении, полученном из гистограммы
яркости цвета сцены. Оно определяет нижний порог, используемый для вычисления
Low среднего значения освещенности. Лучше всего не ограничивать светлые области
Percent изображения, именно для этого приходится игнорировать некоторые темные части.
К примеру, значение 80 ограничит 80% темных участков. Значение параметра
должны находится в промежутке [0; 100], наиболее приемлемый – от 70 до 80.
Технология адаптации глаз основывается на значении, полученном из гистограммы
яркости цвета сцены. Оно определяет высший порог, используемый для вычисления
High среднего значения освещенности. Мы советуем списать несколько процентов,
Percent поскольку вполне нормально иметь несколько ярких пикселей (для солнца, к
примеру). Значение параметра должно находится в промежутке [0; 100], наиболее
приемлемый – от 80 до 98.
Минимальная яркость, к которой приспосабливается глаз. Значение должно быть
Min
больше 0 и <= EyeAdaptationMaxBrightness. Фактические значения основываются на
Brightness
диапазоне, используемым контентом.

Автор: Ханин Владимир

153
Максимальная яркость, к которой приспосабливается глаз. Значение должно быть
Max
больше 0 и >= EyeAdaptationMinBrightness. Фактические значения основываются на
Brightness
диапазоне, используемым контентом.
Speed Up Скорость адаптации при переходе от темного окружения к светлому.
Speed
Скорость адаптации при переходе из светлого окружения к темному.
Down
Контролирует смещение экспозиции. Логарифмическое значение:
0 — изменений нет
-1 — половина яркости
Auto
-2 — четверть яркости
Exposure
1 — удвоенная яркость
Bias
2 — учетверенная яркостьДробные значения, к примеру, 1,5, или значения, не
приведенные в примере, также работают отлично. При активной адаптации глаз,
они будут добавлены к автоматической экспозиции.
Адаптация глаз – гистограмма, основывающаяся на следующем принципе:
● Скажем, EyeAdaptationLowPercent равно 80%, а EyeAdaptationHighPercent — 95%.
● Теперь осмотрим гистограмму:
o 80% пикселей дисплея темнее, чем значение яркости A;
o 95% пикселей дисплея темнее, нежели значения яркости B;
o Среднее между A и B и есть данная яркость сцены (C).
● Глаз будет адаптироваться к этому значению. Но так как привыкание к темноте обычно
происходит медленнее, мы можем настроить эти значения по-разному: EyeAdaptionSpeedUp и
EyeAdaptionSpeedDown.
● К тому же, глаза не адаптируются идеально, поэтому мы ограничиваем процесс
следующими параметрами: EyeAdaptationMinBrightness и EyeAdaptationMaxBrightness.
Гистограмма
Свойства гистограммы используется автоматической функцией адаптации глаз: технология
изучает её для имитации процесса.
Введя консольную команду ShowFlag.VisualizeHDR 1, можно увидеть гистограмму.

Histogram Определяет нижнее значение яркости при генерации


Log Min гистограммы.
Histogram Определяет высшее значение яркости при генерации
Log Max гистограммы.

Автор: Ханин Владимир

154
Lens Flare

Lens Flare, или эффект линз — технология, симулирующая рассеивание света и бликов от
ярких объектов вследствие несовершенств линз камеры.
Свойство Описание
Tint Оттенок цвета всего эффекта.
Значение, определяющее минимальную яркость пикселя, вызывающую эффект
линз. Большие значения предотвращают размытие слишком темных объектов,
Threshold
что повышает производительность. Ведь затраты на просчет растут линейно
вместе с количеством пикселей, перешедших порог значения.
Увеличивает радиус формы. Возможное использование: улучшение качества
Bokeh Size
эффекта и производительности (2x радиус -> 4x скорость заполнения).
Bokeh Shape Текстура, используемая для определения формы эффекта.
Lens Flare Tints
1/2/3/4/5/6/7 Оттенок цвета каждого отдельного эффекта
/8
Материалы постобработки
График постобработки (Post Processing Graph)
Движок уже имеет полноценную постобработку, основанную на графе узлов постобработки.
Помимо этого можно, в некоторых особых случаях, использоват, материалы постобработки.
В данный момент граф занимается не только процессом постобработки, но и освещением. Со
временем, мы планируем сделать большее количество вещей, изменяемых через редактор
материалов.
Граф создает временные render targets (без смешивания буферов кадров (framebuffer
blending). Это значит, что, если вам необходимо изменить исходный цвет объекта, то придется
пользоваться шейдером.
Использовать материалы постобработки необходимо в малых количествах и лишь в случае
крайней необходимости. Когда бы то ни было, будь то цветокоррекция, блюм, глубина резкости
или что-то подобное, используйте волюм постобработки, который был специально
оптимизирован для этих целей.
Использование материалов постобработки
Посредством настроек постобработки (обычно определяемых в волюмах постобработки или
параметрах камеры) возможно смешивание, так называемых, «смешиваемых» ассетов
(«blendable assets»). Движок уже имеет несколько материалов постобработки, но эта его
особенность позволяет создавать, рендерить и смешивать пользовательские PostProcessing
Material без помощи программистов.
Достаточно применить один или несколько материалов (в качестве смешиваемых) к эктору
волюма постобработки в секции «Misc» («Разное»). Для этого сначала нажмите +, чтобы добавить
новый слот, затем выберите материал в браузере контента и нажмите стрелочку, дабы применить
его. Стоит знать, что неиспользуемые слоты будут просто проигнорированы движком.

Автор: Ханин Владимир

155
Пример материала постобработки
Вы можете посмотреть пример постобработки в этом уроке: «Пример материала
постобработки».
Важные настройки
В первую очередь, для материала постобработки необходимо указать домен материала:

Материал должен использовать только свойство EmissiveColor.


Если у вас несколько зон или настроекс с постобработкой, в особенности те, что используют
материалы, вы можете указать приоретет, для того, что бы самые важные материалы
отображались как нужно.

Blenda
Описание
ble Location
PostProcessInput0 обеспечивает доступ к данным о цвете сцены со всем
Before освещением в HDR. Используйте этот параметр для исправления артефактов,
Tonemapping связанных с временным сглаживанием (temporal antialiasing) и lookups G-буфера,
такими как глубина, нормали и подобное.
Предпочтительное расположение прохода для производительности,
After поскольку цвет представлен в LDR и, естественно, требует меньшей точности и
Tonemapping пропускной способности. Применяется после тональной компрессии и
цветокоррекции.
Обычный вход постобработки находится перед проходом. Поэтому при использовании
PostProcessInput0 цвет может быть применен через SceneTexture. Использование SceneColor в
некоторых случаях не даёт правильного результата.

Автор: Ханин Владимир

156
Смешивание различных типов материалов
С волюмами постобработки крайне просто настроить плавный переход между различными
материалами постобработки. Так мы используем один волюм, помеченный как непривязанный и
имеющий большой радиус смешивания (около 1000):

Для каждого волюма мы определяем различный тип одного и того же материала. Цвет
указывается как параметр, что и позволяет иметь различные настройки для разных типов
материала.
Основываясь на положении камеры, используются настройки одного волюма:

При движении – уже двух.


Все настройки образцов материалов смешиваются, вне зависимости от того, указан ли
соответствующий флажок или нет (свойства передаются от родителей). В этом различие между
настройками постобработки, когда эффект отсутствует при отсутствии флажка.
Это значит, что если вы смешиваете два образца материала, то смешиваются и их параметры.
Блок материала «SceneTexture»
Вы можете добавить блок материала «SceneTexture» к своему материалу и выбрать, какую
текстуру необходимо использовать:

Автор: Ханин Владимир

157
Нода имеет необязательный вход и несколько выходов:

UV-вход определяет, в каком месте вы хотите сделать lookup-текстуру (используется только


для цветового выхода). Выход «Color» состоит из четырех выходов, выделенные (в зависимости от
ID текстуры сцены (Scene Texture)) под отдельные каналы. Выход «Size» – это 2 компонента
вектора: ширина и высота текстуры. Обратную им величину (1/ширина, 1/высота) можно получить
на выходе «InvSize».
Это полезно в подобных случаях:

В примере выше, блок материала просчитывает разницу глубины данного пикселя и


соседнего.
Использование параметров G-буфера
G-буфер состоит из нескольких текстур, которые содержат материалы (к примеру,
подповерхностный/отраженный цвет, шероховатость; subsurface/specular color, roughness) и
атрибуты объекта (нормали, глубина) без данных об освещении и его взаимодействии с
материалом. В различных рендерерах мы сначала рендерим G-буфер, затем просчитываем все
освещение (отложенное) с атрибутами G-буфера. Так как UE4 использует отложенное затенение
(DirectX 11 или последние версии OpenGL), мы получаем доступ к данному буферу в процессе
постобработки.

Автор: Ханин Владимир

158
Но здесь нам несколько мешает сглаживание, поскольку пиксель/тексель G-буфера больше
не относится как 1:1 с итоговым пикселем (смотрите секцию ниже).
CustomDepth
Эта особенность предоставляет возможность скрывать определенный объект путем его
рендера в буфер глубины, называющийся пользовательским буфером глубины (Custom Depth
Buffer). Этот метод увеличивает количество вызовов отрисовки при том же количестве
материалов. Рендеринг получается крайне дешевым, поскольку на выходе лишь глубина.
Функция активируется для мешей («Static Mesh Properties / Render Custom Depth»; Настройки
статичного меша/Рендер пользовательской глубины):

В этой сцене мы активировали пользовательскую глубину для двух объектов, но без


визуализирующего прохода постобработки, её невозможно заметить.

Здесь вы можете посмотреть пользовательскую глубину:

А это материал, который мы использовали для визуализации:

Автор: Ханин Владимир

159
Временное сглаживание или Почему G-буфер «дрожит»
Временное сглаживание – это уникальная особенность UE4, которая отлично влияет на
качество изображения, потребляя при том среднее количество ресурсов.
По умолчанию, материал постобработки вставляется в конец графа (после тоновой компрессии).
Это означает, что вы получаете финальное LDR-изображение после тоновой компрессии,
цветокоррекции и применения временного сглаживания. И это лучший вариант для простых
эффектов постобработки с точки зрения производительности и легкости использования.
Здесь вы можете увидеть, как мы использовали вход пользовательской глубины для визуализации
силуэта определенных объектов:

Заметьте, что на предыдущем изображении края объекта не были сглажены. Но во время


движения вы заметите, что силуэт объекта «дрожит». Это происходит по той причине, что
временное сглаживание перемещает рендеринг все сцены каждый кадр на каждый пиксель. Из
нескольких кадров, скомбинированных вместе, получается финальное сглаженное изображение.
Хотя, мы, конечно, можем переместить материал в более раннее положение в графе
постобработки для исправления подобных артефактов.
Вот результат:

Автор: Ханин Владимир

160
Мы получили стабильное и сглаженное изображение. Правда, как говорилось, в движении
можно наблюдать появление артефактов, связанных с временным сглаживанием. Из-за
использования буфера глубины для перепроецирования старого изображения. В случае
рендеринга краев внутри объекта, все работает хорошо, но как только мы назначаем рендер
краев поверх объекта, появляются артефакты. Для того, чтобы их избежать, требуется настроить
буфер глубины (эта функция пока не реализована полностью и потребляет слишком много
ресурсов).
Заметьте, что TemporalAA (Временное сглаживание) еще в процессе разработки.
Известные проблемы
● Блок материала SceneTexture
o Separate Translucency не работает.
o Отфильтрованные (билинейно) lookups не работают.
o Определенные lookups не работают в некоторых проходах (возможно, не все из них будут
исправлены, ввиду больших затрат ресурсов компьютера).
o MaterialFunction может выдавать ошибку, хотя и продолжать работать с доменом
постобработки.
● Материалы
o UV в PostProcesMaterial не может принимать значения из промежутка от 0 до 1(например,
при уменьшении размеров вьюпорта).
o Миниатюра ассета с материалами постобработки отображается неправильно.
o Альфа-канал в качестве выхода пока не поддерживается (используйте «Opacity»
(Непрозрачность).
o Предпросмотр материала в редакторе материалов отображается неправильно.
o В некоторых случаях изменение материала ни к чему не приводит в постобработке. Для
исправления – перезагрузите редактор.
o Браузер контента должен позволять легко фильтровать материалы постобработки.
o Режим смешивания материалов не работает для материалов постобработки.
● Смешивание
o При смешивании двух волюмов постобработки, возможно проявление неаккуратного
перехода. Это можно избежать, если использовать непривязанный волюм со стандартными
настройками материала.

Автор: Ханин Владимир

161
Blendables
Blendables – ассет, имеющий свойства, позволяющие ему аккуратно смешиваться с другими
такими же. Мы в Epic Games чаще всего используем Blendables для PostProcessMaterials, но эта
система подходит для всего, что зависит от вида (т.е. в основном, для связанного с камерой).
Blendable
Ассеты Blendable уже реализованы в движке, хотя и используются только для
PostprocessMaterils / PostprocessMaterialInstances. Тем не менее, по идее, основная задача
Blendable – предоставить возможность смешивать произвольные данные (как наиболее
подходящие примеры: линейные значения, цвета) для выдачи результатов любой из подсистем.
К примеру, в случае со сплит-скрином вы сможете раздельно реализовывать постобработку
для каждого из экранов.
Blendable – это объект, который имеет IBlendableInterface, в данный момент реализованный
следующими типами ассетов:
● PostprocessMaterials
● PostprocessMaterialInstances
● LightPropagationVolumeBlendable
Контейнер Blendable находится в PostProcessSettings, которые имеются у следующих
объектов:
● PostProcessVolume
● PostProcessComponent
● SceneCaptureActor
● CameraComponent
Ассет LightPropagationVolumeBlendable создан как пример создания нового blendable и
замены существующих PostProcessSettings. Эта система работает хорошо с малым количеством
настроек, в других случаях нужна более сложная система.

Автор: Ханин Владимир

162
Blendable в контент-браузере имеют собственную категорию – «Blendable». Можно
использовать кнопку «Add New» или отфильтровать ассеты по категориям.
Плюсы новой системы:
● Простота расширения и обновления (нет необходимости менять целую единую структуру,
можно просто создать отдельный модуль)
● Гибкие связи между пакетами позволяют работать с контентом без определенного уровня
доступа (СКВ)
● Они же дают возможность использовать один ассет во многих случаях (уменьшение
избыточности, большая гибкость)
● Возможно создание отдельного UI для каждого blendable (гораздо сложнее делать это с
единой структурой)
● Каждый экземпляр blendable имеет свой «вес», как и ассеты (см.
LightPropagationVolumeBlendable), благодаря чему легко определить «вес» каждому свойству
● Разбиение крупной структуры упрощает работу с блупринтами, делая её эффективнее и
лаконичнее.
Контейнер Blendables
Контейнер реализован как массив «весов» и ссылок на lendableInterface.
Открыв параметры PostProcessVolume и посмотрев на массив blendable, вы увидите массив
«весов» с ссылками на ассет blendable. Значения «веса», как правило, располагаются в
промежутке от 0 до 1. А ссылки указывают на ассеты, расположенные в пакете (созданном в
браузере контента) или в объекте, содержащем массив blendables.

Blendables-контейнеры можно найти в настройках пост-обработки. Массив здесь имеет три


элемента: LightPropagationVolumeBlendable (из объекта волюма), пока не используемый элемент
массива и ссылка на ассет LPV0 из пакета. Значение веса равняются 1.0.
Когда вы создаете новый элемент массива, можно выбрать: создать blendable
определенного типа (на данный момент только LightPropagationVolumeBlendable), либо
использовать (LightPropagationVolumeBlendable, Material, Material Instance). Время от времени нам
приходится создавать новые типы blendable (к примеру, Bloom, SceneColor, DepthOfField и другие).
Ссылка может быть любого типа blendable (если реализовывается IBlendableInterface). Порядок в
массиве обратен тому, как устроены слои, поскольку смешивание применяется к ним сверху вниз,

Автор: Ханин Владимир

163
перезаписывая прежние данные. Запомните, данные множества волюмов (или других объектов)
комбинируются.
Примечание: Хорошим тоном считается иметь несвязанный «глобальный»
PostProcessVolume с низким приоритетом на уровне. Для получения полного контроля над всем
уровнем вы можете добавить несвязанный волюм с высоким приоритетом. Тогда, для проверки
наличия эффекта у blendable, вам достаточно изменить его вес до 0 и обратно.
Blendable в пакете: как часть объекта (к примеру, волюма)/динамически созданные в
блупринте
Это ваш выбор, но мы советуем метод с пакетом (ссылаться на ассет в пакете), так как это
позволяет минимизировать конфликты в системе контроля версий. Для максимальной гибкость,
конечно, можно создавать blendable прямо в блупринте. Так как блупринты, по сути, форма
программирования, передача параметров в UI равносильна их жесткому определению в коде.
Хотя последний метод считается менее гибким для других разработчиков.

LightPropagationVolumeBlendable описывает свое отображение в редакторе. Неважно, был


ли создан blendable в контент-браузере (слева) или в объекте (т.к. волюм постобработки):
пользовательский интерфейс не меняется. Хорошим тоном считается давать каждому свойству
свой чек-бокс (weight=0 или weight=1), а всей структуре – смешанный вес.
Примечание: Параметры LightPropagationVolumeBlendable до сих пор существуют в
PostProcessSettings для обратной совместимости. Однако мы планируем удалить их и сделать
blendables одним методом.
Блупринт
Блупринт AddOrUpdateBlendable обеспечивает удобный доступ к контейнеру blendables. Вы
передаете объекту, содержащему контейнер blendables, вес и ссылку на blendable. При наличии
этих параметров они просто обновляются. Элементы контейнера не удаляются, так как это может
привести к нарушению работы другого кода и сборки мусора. Удаление элементов не является
необходимостью, ввиду малых затрат ресурсов.
Здесь вы можете увидеть, как ссылаться на ассет blendable в контент-браузере:

Автор: Ханин Владимир

164
Переменная ‘BlendableVar’ типа LightPropagationVolumeBlendable (Object Reference)
используется в качестве ссылки на ассет под названием LightPropagationVolumeBlendable ‘LPV0′.
С блупринт-функцией ConstructObjectFromClass вы можете создавать новый blendable
непосредственно в блупринте. Соединяя вход «Outer» нового объекта с объектом, имеющим
контейнер blendable, вы добьетесь аналогичного поведения, если бы создавали объект в UI.

Здесь мы создаем объект типа LightpropagationVolumeBlendable, получаем настройки и


определяем членов с функцией SetMembersIn.
Примечание: Вам понадобится вручную определить флаг как true (установленный чек-бокс),
иначе свойство с тем же именем не будет выбрано.
В качестве эксперимента вы можете использовать showflag VisualizeLPV (в редакторе:
Visualize/Light Propagation Volume) для отображения смешанных параметров. Это реализовано в
коде на C++ и только для данного типа blendable, но позже мы реализуем подобную возможность
для каждого свойства без необходимости привносить в код какие бы то ни было изменения.

Showflag Visualize отображается смешанные значения, что полезно при отладке.

Автор: Ханин Владимир

165
Scene Fringe

Scene Fringe – эффект хроматической аберрации, симулирующий изменения цвета при


использовании обычных линз. Наиболее заметен на краях изображения.
Свойств
Описание
а
Определяет, как сильно будут проявляться изменения.

Fringe
Intensity

0.0 1.0 5.0


Fringe
Определяет заметность изменений. Низкие значения ведут к более размытому
Saturati
результату, а высокие – более выраженному.
on
Screen Space Reflections

SSR (Screen Space Reflection) – эффект, включенный по умолчанию, который добавляет


отражения на поверхность объектов. Эти отражения работают в реальном времени.
Поскольку это эффект постобработки, отражается только то, что видно на экране. Поэтому
то, что не рендерится на экран не будет отражаться через SSR отражения. При этом границы могут
быть размыты.
У SSR всего лишь несколько настроек:
Свойство Описание
Активировать/Деактивировать функцию SSR. Значение в процентах: 0 –
Intensity минимальное качество, 100 – максимальное. Изначально установлено 50% (с целью
достижения лучшей производительности).
Используется для определения, при каком значении шероховатости эффект будет
Max
уменьшаться (отлично работает 0,8, меньшие значения могут повысить
Roughness
производительность).
Vignette

Автор: Ханин Владимир

166
Vignette – Виньетирование. Эффект затемнения по краям изображения при использовании
обычных линз. Высококачественные линзы стараются компенсировать его.
Настройки виньетирования можно найти в настройках постобработки под вкладкой Scene
Color.
С
войств Описание
о
Обеспечивает затемнение по краям экрана. Не влияет на блюм (из-за возможных
проблем с производительностью, но при необходимости, можно изменить настройку).
Возможное использование: симуляция несовершенств камеры.

V
ignette
Intensi
ty

0.0 1.0

Автор: Ханин Владимир

167
Аудио и звуки

Звуки

Звук имеет огромное значение для создания правдоподобной и виртуальной реальности. От


окружающих звуков в уровне, до интерактивных звуков от транспортных средств или оружия, до
звука диалога персонажей, звук в игре значит очень многое. Создание звука в игре звучащего так
же как он должен звучать может быть трудной задачей. Аудиосистема Unreal Engine 4
предоставляет инструменты и функции формирования звуков в игре, чтобы придать им нужный
вид. Это важно, поскольку это означает, что чистый вариант звука может быть создан один раз во
внешнем приложении, после чего импортироваться, а затем быть обработанным в движке, чтобы
получить соответствующий результат.
Обзор аудиосистемы
Аудиосистема в Unreal Engine 4 состоит из нескольких компонентов, все они работают
вместе, чтобы создать нужное звучание. После импорта аудио файла в движок, у вас будет
несколько способов представить его на уровне например Volume или Pitch,
для регулировки, а также более тонкой настройки параметров, таких как Sound Attenuation,
который определяет, как звук слышен основываясь на вашем расстоянии до него.
Unreal Engine 4 также позволяет строить сложные звуки в виде звуковых сцен и Cue Editor Sound,
которые позволяют комбинировать звуки, а также применить модификаторы называемые Sound
Cues, чтобы изменить конечный результат.
Есть дополнительные элементы, которые используются для определения того, как звук слышен
или воспроизводится, эти параметры описаны на этой странице.
Импорт звуковых файлов
Unreal Engine 4 в настоящее время поддерживает импорт несжатых 16-битных звуковых
файлов с любой частотой дискретизации (см. таблицу ниже). Для достижения наилучших
результатов рекомендуется, использовать частоту дискретизации 44100 Гц или 22050 Гц.
Спецификации PCM, ADPCM, DVI ADPCM
Формат .WAV
Битрейт 16
Количество Mono, Stereo, 2.1, 4.1, 5.1 6.1,
каналов 7.1
Импорт звукового файла в редактор генерирует ассет Sound Wave, который может быть
выставлен непосредственно на уровень или может быть использован для создания Sound Cuesи
отредактирован внутри Sound Cue Editor.
Импорт звукового файла может быть сделан двумя путями:
Через Content Browser:

Автор: Ханин Владимир

168
1. В Content Browser, нажмите кнопку Import (на фото ниже).

2. Выберите файл .WAV, который вы хотите импортировать.


Или:
1. Выберите звуковой файл в окне Проводника Windows.
2. Перетащите его в Content Browser.
Unreal Engine 4 также поддерживает многоканальные (например, 5.1) звуки и использует
специальное именование при импорте файлов для использования нескольких каналов.
Типы звуковых ассетов
Чтобы добавить звуковой ассет, нажмите кнопку   в Content Browser и
выберите звук который вы хотите добавить.

Есть несколько различных типов звуковых ассетов, которые могут быть добавлены к вашим
проектам, они описаны ниже.

Автор: Ханин Владимир

169
Sound Cue

Sound Cues являются составными звуками, которые позволяют изменять поведение


воспроизведения звука, комбинировать звуковые эффекты, а также применять звуковые
модификаторы Sound Nodes, чтобы изменить конечный результат.
Sound Attenuation
Sound Attenuation ассеты позволяют определять свойства затухания множеством способов.
Вместо того что бы настраивать затухание в каждом звуке, вы можете использовать Sound
Attenuation ассеты.

Реверберация
Эффекты реверберации являются ассетами с несколькими свойствами, которые могут быть
легко отрегулированы и применены к любому звуку, помещенному в ваш уровень. С эффектом
реверберации, вы можете настроить многие параметры (на фото ниже),
что позволит вам контролировать элементы, такие как эхо, общий коэффициент усиления
реверберации, поглощение воздухом, и многое другое.

Автор: Ханин Владимир

170
Sound Class
Sound Class представляют собой набор свойств, которые могут быть применены к ряду
звуковых ассетов.
Свойства определенные внутри Sound Class будут осуществляться всеми звуковыми ассетами,
определенным к этому классу.

Иерархии могут быть созданы путем добавления дочерних классов, которые позволят вам
перенести вниз только специфические свойства из родительского класса. Вы можете подключить
класс внутри Sound Class Editor, который имеет подобный Cue Editor Sound интерфейс.

Автор: Ханин Владимир

171
Вы можете также добавить звуковое смешивание (смотрите раздел Sound Mix ниже)
к Sound Class, которые будут активироваться автоматически всякий раз, когда звук класса играет
(например музыка может включаться автоматически когда проигрывается звука с классом
диалога).
Sound Mix
Sound Mix позволяют устанавливать настройки эквалайзера и изменения громкости и
высоты тона в свойства Sound Class.

Несколько Sound Mix могут быть активными в одно и то же время, все это способствует


общему звучанию. Вы можете Push (Включить) или Pop (Деактивировать) Sound
Mixнепосредственно внутри блупринта.
Внутри самого Sound Mix ассета, который можно открыть с помощью двойного щелчка в Content
Browser, существуют несколько свойств. Можно задать параметры эквалайзера для смешивания,
чтобы отрегулировать высокие, средние и низкие частоты. Поскольку настройки эквалайзера
нескольких Sound Mix не могут быть объединены, EQ Priority позволяет вам контролировать,
какие активные Sound Mix свойства применяются в данный момент времени.
Раздел Sound Mix позволяет определить, каким образом свойства Sound
Mix применяются. Delay указывает на то, как много времени пройдет, прежде чем свойства Sound
Mix следует начинать применять. Fade in Time и Fade out Time определяют, как быстро будет
происходить переход к указанным свойствам. Duration позволяет Sound Mix автоматически
выключить себя по истечении указанного срока.
Значение -1 указывает на то, чтобы никогда не будет отключен автоматически Sound Mix
так же не будет автоматически выключен.
Dialogue Voice & Dialogue Wave
Ассеты Dialogue Voice и Dialogue Wave используются для генерации в игре диалогов
события, создания субтитров, и для упрощения усилий по локализации.
При редактировании вновь созданного Dialogue Voice ассета, вы можете
определить Gender и Plurality актера, и, хотя вы не указываете какие-либо звуковые ассеты
внутри Dialogue Wave, информация, представленная здесь, можно ссылаться на Dialogue Wave.
Dialogue Wave предоставляет больше возможностей. Кроме того, производится связь
между диалогом аудио и текстовыми субтитрами.
Автор: Ханин Владимир

172
Dialogue Wave представляет собой единую линию диалога и основной компонент
настроек Dialogue Voice является разделом Dialogue Contexts.

Внутри раздела Dialogue Contexts, вы можете указать Speaker или Directed At в


соответствующих разделах путем присвоения Dialogue Voice. Фактическая аудио линия диалога
может быть добавлена в качестве звуковой дорожки через Content Browser.
В том случае, если у вас есть несколько актеров, которые говорят ту же линию диалога, Add
Dialogue Context позволит вам создать новую запись для диалога, где вы можете установить
новый Speaker и Directed At разделы.
Dialogue Wave также может быть применен к Sound Cue с помощью узла Dialogue
Player внутри Sound Cue Editor.
Кроме того, вы можете получить доступ к Dialogue Wave непосредственно из блупринта с
помощью Play Dialogue at Location и Play Dialogue Attached.
В дополнение к Dialogue Contexts, вы можете применить Mature фильтр. Под Script, вы
можете ввести текст, на котором говорят в приложенном аудио внутри Spoken Text раздела.
Можно также ввести контекстную информацию для целей упрощения перевода или примечания к
голосу актера в разделе Voice Actor Direction.
Общий объем, руководство
Что касается громкости в потенциальном объеме, здесь существует несколько различий.
Например, стерео файл с 1,0 объемом будет в два раза громче, чем моно файл. Тем не менее, в
конечном итоге мы попадаем под общий порог и выходной звук начинает искажаться.
В любой Sound Cue, настройки громкости примерно до 2.0 увеличит воспринимаемую громкость
до предела, и всё что выше будет не существенно.
Вот вам по крайней мере некоторые рекомендации:
Категори Примерный
я объем
Диалог 1.4
Музыка 0.75
Оружие 1.1
Окружен
0.5
ие
Volume Ducking
Volume Ducking, как правило, используется для уменьшения объемов всех других звуков,
кроме одного, который должен быть услышан, чаще всего — диалога.
Процесс, как правило, состоит из:
Автор: Ханин Владимир

173
● Идентификация Sound Class, который должен быть использован в Volume Ducking.
● Когда звук из этого Sound Class срабатывает, другие Sound Class начинают уменьшаться в
объеме (Sound Mix: Fade In Time = 0,3 секунды).
● Укажите количество других Sound Class уменьшающихся в объеме (Sound Mix: Volume
Adjuster = 0,4).
● Когда звук из Sound Class останавливается, другие классы увеличиваются в объеме и
возвращаются к нормальной громкости (Sound Mix: Fade Out Time = 0,3 секунды).
● Вы можете также исключить Sound Class в процессе приглушения (например, музыки).
Этот подход будет гарантировать, что акцент делается на важных аспектах вашего аудио и
что он не «утонет» под поверхностными или не-важных звуковыми элементами.
Оптимизация использования памяти
Когда создания контент, то лучше всего использовать самую низкую частоту дискретизации,
которая сохраняет качество звука. Например, диалог в целом по-прежнему звучит хорошо на
22.1kHz,
в то время как обычно эффекты играют с высокими частотами (например, выстрелы), например,
40.0kHz. Аналогичный подход может быть применен к настройке качества.
Аудио файлы

Аудиосистема Unreal Engine 4 предоставляет инструменты и функции формирующие звуки


для придания им желаемого вида.Всё это начинается с ваших исходных аудио файлов.Будь-то
моно или стерео файл, они быстро импортируются в UE4, и привносят больше жизни в ваши
творения.Ниже приведено краткое руководство импорта аудио контента в редактор и основные
требования к онным.
Импорт
На данный момент движок поддерживает импорт несжатых 16-ти битных звуковых файлов с
любой частотой (хотя рекомендуется частота 44 КГц или 22КГц).
Особенности PCM, ADPCM, DVI ADPCM
Формат .WAV
Битрейт 16
Каналы Mono, Stereo, 2.1, 4.1, 5.1 6.1,
колонок 7.1
Импортирование звука даёт простую ноду звуковой волны, которая может ссылатся на
звуковой сигнал при воспроизведении.Эти звуки могут быть моно или стерео.Импорт звукогового
файла со специальным обозначением в названии даёт возможность для создания
многоканального звука (пример 5.1.). Вплоть до 8 каналов могут быть сжаты на всех платформах,
хотя и не все платформы могут их эффективно воспроизводить.Процесс сохранения пакета делает
всю необходимую работу, чтобы преобразовать в родной формат платформы.Нет строгого
соответствия динамикам, поэтому номер канала определяет то, какой канал воспроизводится на
динамике (см таблицу ниже).

Автор: Ханин Владимир

174
4 5 6 7
Форм
. . . .
ат
0 1 1 1
Передний Левый _fl ✓ ✓ ✓ ✓
Передний Правый _fr ✓ ✓ ✓ ✓
Передний
_fc ✓ ✓ ✓
Центральный
Низкочастотный _lf ✓ ✓ ✓
Левый _sl ✓ ✓ ✓ ✓
Правый _sr ✓ ✓ ✓ ✓
Левый Сзади _bl ✓ ✓
Правый Сзади _br ✓
Настройки сжатия настроены для поддержания одинакового качества на всех платформах.
После тестирования множества звуков, наши музыканты определили качество XMA =40
эквивалентно качеству Ogg Vorbis =0,15.
Импорт одного файла
В контент браузере кликните по кнопке Import, затем выберете ваш файл в окне поиска.

Вы так же можете импортировать файлы благодаря перетаскиванию из проводника прямо


на Content Browser
Импорт мультиканального файла
1. В контент браузере кликните по кнопке Import.

2. Выберите файлы которые имеют соответствующие названия каналов для создания


вашего звукового ассета, к примеру: «Surround_fl.wav», «Surround_fr.wav», «Surround_sl.wav»,
«Surround_sr.wav».
Это создаст четырёх канальный звуковой ассет называемый «Surround».
Автор: Ханин Владимир

175
Экспорт мультканального ассета будет произведён в моно .WAV файл для каждого канала с
соответствующим наименованием.
Редактор звукового сигнала

Поведение воспроизведения звука в Unreal Engine 4 определяется в Sound Cues. Редактор


звукового сигнала, используемый для работы со звуком, основан на нодах.
Sound Cue
Звуковой файл получаемый из комбинации нод в редакторе звуковых сигналов сохраняется
как звуковой ассет.
По умолчанию, каждый граф в Sound Cue содержит исходящую ноду, которая обозначена
большой иконкой с динамиком. Стандартное значение исходящей ноды для Volume Multiplier =
0.75, а для Pitch Multiplier = 1.00. Вы можете изменить эти значения на панели Details.
Настройки громкости и высоты тона используются для управления громкостью звукового
сигнала. Это влияет на вывод всех аудио, содержащихся в Sound Cue. Если вы используете
несколько Sound Waves с нодами Mixer или Random, вы можете контролировать их громкость и
высоту независимо друг от друга путем добавления ноды Modulator.
Sound Wave
Звуковая волна показывает импортированный звуковой файл в редакторе звукового
сигнала. Вы можете выбрать Sound Wave ассет в Content Browser, а затем добавить его в Sound
Cue, щелкнув правой кнопкой мыши в любом месте редактора Sound Cue, а затем выбрать Sound
Wave в категории From Selected в контекстном меню. Т.к. другие звуковые сингналы могут
содержать другие звуковые волны, вы не можете редактировать громкость и тон звуковой волны
в редакторе звукового сигнала. Однако вы можете редактировать параметры звуковых волн,
когда их импортируете, или открыв их в контент браузере двойным кликом по ним.
Импорт звуков
Для импорта звуков в редактор анриала следуйте следующим шагам:

1. В контент браузере кликните по кнопке   или Right-click в пустом


месте контент браузера Content Browser для вызова меню создания нового ассета.
2. Под Import Assets, кликните по Import to «folder name».
3. В диалоговом окне импорта, найдите требуемый .wav файл, выберите, и кликните
по Open. Это импортирует .wav файл как ассет звукового сигнала.
На данный момент вы можете импортировать только WAV файлы, как звуковые файлы.
Создание звукового сигнала
Для создания звукового сигнала проделайте следующее:

1. В контент браузере кликните по кнопке   или кликните ПКМ в


пустом месте контент браузера для вызова меню создания нового ассета.
2. Под Other Assets, кликните по Sounds, а после по Sound Cue.

Автор: Ханин Владимир

176
3. Введите имя вашего нового звукового сигнала.
Открытие редактора звукового сигнала
Вы можете открыть редактор звукового сигнала путём правого клика по ассету звукового
сигнала в контент браузере, после чего выбрать Edit из выпавшего контекстного меню, либо же
двойным кликом по ассету звукового сигнала.
Audio Node Graph
Audio Node Graph располагается на панели Viewport .Он показывает путь прохождения
сигнала слева направо, с взаимосвязанными нодами представляющими модули контроля аудио и
аудио файлов. Нода вывода, содержащая изображение динамика, представляет собой конечную
ноду выводящую звук таким каким он будет в игре; располагается всегда в крайнем правом
положении по отношению ко всему остальному пути прохода сигнала.

Для предпрослушивания воспользуйтесь кнопками расположенными выше, на панели


инструментов, в окне редактора звукового сигнала. Больше информации про панель
инструментов узнать тут .
Кнопка Play Cue воспроизводит текущий звуковой сигнал, а кнопка Play Node воспроизводит
звук выбранной ноды ( если выбрано несколько нод, то кнопка Play Node не доступна). В то время
как проигрывается звуковой сигнал, для удобства отладки, соединения активных нод становятся
красными.

Вы можете добавить аудио ноды путём перетаскиваниях онных из Palette.

Вы также можете добавить ноды путём выбора их из выпадающего меню когда кливаете
ПКМ в пустом месте графа.

Автор: Ханин Владимир

177
Как и с другими редакторами в Unreal Editor основанных на нодах, вы можете ввести текст в
поле поиска, чтобы динамически фильтровать список нод, который появляется в контекстном
меню.

Если у вас есть нода, то вы можете добавить новую ноду, путём вытягивания соединения и
выбора новой ноды из выпадающего списка.

Автор: Ханин Владимир

178
Behavior Tree(Искуственный интелект)

Начиная с маленьких тараканов, которые прячутся от света и заканчивая ботом в шутере,


который знает, когда стрелять и где искать аптечки и патроны. Behavior tree является сильным
инструментом для создания Искусственного Интеллекта в UE4.
Behavior Tree представляют из себя комбинацию двух видов ассетов: The Blackboard и
сам Behavior Tree
Тип ассета Описание
Blackboard является памятью ИИ, которая содержит в себе переменные для
Blackboard
использования их в “древе поведения”.
Behavior Behavior Tree это процесс, который принимает решения и выполняет их
Tree основываясь на своем выборе.
Блоки Behavior Tree
Ниже вы найдете описание блоков, доступных в редакторе Behavior Tree. Вы можете
увидеть больше в зависимости от проекта над которым вы работаете (например таким как шутер).
Здесь представлены пять типов выражений Behavior Tree.
Тип
выражени Описание
я
Эти выражения определяют основания ветви и базовые правила, которые
Composite
определяют как этот ветвь выполняется.
Эти ответления Behavior Tree, выражения которые “делают” вещи и не имеют
Task
выхода
Выражения также известные как “условные”. Их прикрепляют к другим
Decorator выражениям и создают выполняемые решения для ответвления в дереве или
отдельного выражения выражения
Их прикрепляют к Composite выражениям, и выполняют c определенной частотой
до те пор, пока ветка выполняется. Они часто используются для создания проверок
Service
и обновления Blackboard. Они занимают место парралельно другим выражениям в
Behavior Tree
Root Выражение Root уникальное в Behavior Tree и является отправной точкой. Оно
может иметь только одно соединение, и вы не можете подключить Decorators или
Services к нему. Выражение Root не несет в себе никаких свойств, но выбрав это
Автор: Ханин Владимир

179
выражение вы увидите свойства Behavior Tree в свойствах на панели Details где вы
можете задать Blackboard ассет вашего Behavior Tree

Создание ассетов Behavior Tree


Cоздание Behavior Tree
Вы можете создать новый Behavior Tree используя контент браузер.

1. В Content Browser нажмите на кнопку Add New


2. Выберете Behavior Tree в разделе Miscellaneous

Автор: Ханин Владимир

180
Создание Blackboard
Вы можете создать Blackboard ассет используя ContentBrowser.

1. В Content Browser нажмите на кнопку Add New


2. Выберите Blackboard в разделе Miscellaneous.
Или, если вы начали редактировать Behavior Tree (или просто хотите создать новый

Blackboard для Behavior Tree), вы можете нажать на копку   в редакторе Behavior


Tree. (находясь в режиме редактирования)

Автор: Ханин Владимир

181
Создание задачи (Blueprint)

1. Нажмите на кнопку   в редакторе Behavior Tree (находясь в режиме


редактирования Behavior Tree).
2. Выберите Behavior Tree Task класс для наследования от BTTask_BlueprintBase по
умолчанию в разделе blank.
3. Блупринт с новой задачей будет создан в той же папке где и ваш Behavior Tree
ассет.
Создание Decorator (Blueprint)

1. Нажмите на кнопку   в редакторе Behavior Tree (находясь в режиме


редактирования Behavior Tree).
2. Выберите Behavior Tree Decorator класс для наследования от
BTDecorator_BlueprintBase по умолчанию в разделе blank.
3. Новый Decorator Blueprint будет создан в той же паке где и ваш Behavior Tree ассет.
Создание Service (Blueprint)

1. Нажмите на кнопку   в редакторе Behavior Tree (находясь в режиме


редактирования).
2. Выберите Behavior Tree Service класс для наследования от BTService_BlueprintBase
по умолчанию в разделе class
3. Новый Service Blueprint будет создан в той же паке где и ваш Behavior Tree ассет.
Редактирование Blackboard
Вы можете редактировать Blackboard либо двойным нажанием в Content Browser-e для
открытия в редакторе Behavior Tree

Автор: Ханин Владимир

182
Или переключением текущего редактора Behavior Tree в Blackboard Edit Mode

Добавление ключей

1. Нажмите на кнопку 
2. Выберите тип добавляемого ключа
3. Дайте название ключу
4.
Удаление ключей
1. Выберите ключ
2. Нажмите на Delete
Переименование ключей
1. Выберите ключ, который вы хотите переименовать
2. Нажмите правой кнопкой и выберите Rename(либо нажмите F2)
3. Введите новое имя ключа
Объектые ключи
Ключи объектного типа выделяются тем, что вы можете поменять их вид. Это позволяет вам
хранить ссылку на объект не только Actor, но и ссылку на объект конкретного типа (например
Character), благодаря чему не потребуется преобразование классов через Cast внутри задач.
Так некоторые Декораторы и Сервисы функци требуют ключи объектного типа, это то как вы
меняете Object тип в Actor тип.
1. Выберите Object Key
2. На панели Details разверните свойства Key Type
3. Измените Base Class свойства к желаемому Object Type.
Редактирование Behavior Tree
Вы можете редактировать Behavior Tree через двойной клик в Content Browser чтобы
открыть редактор Behavior Tree

Либо переключив открытый редактор Behavior Tree в режим редактирования.

Автор: Ханин Владимир

183
Настройка Blackboard ассета для использования
1. Выберите запись Root из Behavior Tree (или уберите выбор выражений)
2. На панели Details задайте желаемый Blackboard ассет

Добавление выражения (composites and tasks)


1. Нажмите правой кнопкой мыши в области Behavior Tree чтобы вызвать контекстное
меню.
2. Выберите выражение которые вы хотите добавить из контекстного меню.

Удаление выражения
1. Выберите выражение левой кнопкой мыши.
2. Нажмите кнопку Delete
Соединение выражений
Соединение выражений в Behavior Tree подобно соединению выводов в Blueprint. Тем не
менее, основным различием является направление соединений: вы можете подключить выход ко
входу.
Чтобы соединить выражения:
1. Нажмите левой кнопкой мыши на выход и зажмите ее
2. Перенесите курсор ко входу
3. Отпустите левую кнопку мыши

Автор: Ханин Владимир

184
Отсоединение выражений
1. Нажмите правой кнопкой мыши по соединению для вызова контекстного меню
2. Выберите “Break Link(s)”

Либо зажмите Alt и нажмите по необходимому соединению


Изменение свойств выражения
1. Выберите выражение
2. Задайте свойства выражения на панели Details
Добавление Decorates и Services к выражениям

1. Кликнете правой кнопкой мыши на Composite или Task node чтобы вызвать
контекстное меню. Лучше нажимать на левые или правые края.
2. Выберите Decorator или Service который вы хотите добавить к выражению
Удаление Decorators и Services из выражений
1. Выберите Decorator или Service на выражении нажав левой кнопкой мыши
(Decorator или Service обведется красным контуром)

2. Нажмите кнопку Delete

Автор: Ханин Владимир

185
Редактирование Decorators и Services
1. Выберите Decorator или Service на выражении нажав левой кнопкой мыши
(Decorator или Service обведется красным контуром)

2. Задайте свойства для Decorator или Service используя панель Details

Особенности Composite Decorator


Дважды кликните на Composite Decorator чтобы открыть вкладку Composite Decorator’s
Вкладка Composite Decorator работает также как и блупринт, но работает только с True/False
полученными из различных Decorators доступных в Behavior Tree

Автор: Ханин Владимир

186
Изменение задачи (Blueprint)
Вы можете дважды кликнуть на расположенное выражение в редакторе Behavior Tree чтобы
открыть ее в Blueprint редакторе.
Или вы можете дважды кликнуть на задачу в Content Browser.
Редактирование Service (Blueprint)
Вы можете дважды кликнуть на расположенный Service в редакторе Behavior Tree чтобы
открыть его в редакторе Blueprint.
Или вы можете дважды нажать на Service в Content Browser.
Редактирование Decorator (Blueprint)
Вы можете дважды кликнуть на расположенный Decorater в редакторе Behavior Tree чтобы
открыть его в редакторе Blueprint.
Или вы можете дважды нажать на Decorator в Content Browser.

Автор: Ханин Владимир

187
Система частиц в UE 4
Введение
Система частиц в Unreal Engine - это хорошая вещь, чтобы моделировать такие вещи, как:
● Лазеры, молнии;
● Дым, пар, огонь
● И так далее.
В этой статье вы узнаете о принципах работы с системами частиц в UE 4.
Шаг 1. Подготовка
Во-первых, перед началом работы с частицей; является ли это или последствия того, что
оружие (например, лазерные пушки и т.п.) требуется программирования, который выходит за
рамки данного руководства. Теперь мы рассмотрим, как работать с ним эффектов. Что бы
работать с частицами, мы нуждаемся в такой структуре. Как правило, точнее, как правило,
требуется горизонтальная текстуру (например, как на скриншоте). В нашем примере мы создали
простой материал, используя следующую структуру:


 


Эти текстуры объединены в следующие 'материала'  :

После того как мы добавить этот пункт в новой системе частиц, мы готовы сосредоточиться
на пучок частиц (на наших Пучко-образных частиц). Для начала, нам нужно добавить модуль луч.

Автор: Ханин Владимир

188
(Щелкните правой кнопкой мыши в 'эмиттер'  и selectTypeData  > New-Beam Data  . Модуль Beam
TypeData щелкнув правой кнопкой мыши в эмиттере и выбор TypeData> Нью-Beam данных.

Это, чтобы создать наш луч. Для дальнейшей настройки, что бы получить что-то интересное.
Используйте следующую таблицу, чтобы начать с того, что будет более подробное исследование
пучка частиц.
Module Properties
Свойство Значение Описание
Lifetime Module
Lifetime 0.0 Время жизни
Beam Data
Module
Beam Method PEB2M_Distan The beam will be calculated via distance along the emitter's X-
ce Axis, rather than requiring a source and target.
Texture Tile 500 Tiles the texture every 500 Unreal Units. Allows animated
Distance pulses to show more clearly.
Max Beam Count 3 Adds in a few more beams, which will look nice once we have
noise.
Speed 0 Beam will travel instantly to its target.
Interpolation 50 Gives the beam some flexibility for the addition of noise,
Points which we will do later.
Distance 1000 Extends the beam 1000 Unreal Units along the X-Axis, giving
us something to work with.
После настроек луч будет выглядить так:

Автор: Ханин Владимир

189
Шаг 2: Добавляем случайности
Ваше луч может быть более интересным, вы можете добавить немного шума - искажение.
Это делается с помощью модуля 'Noise'  . Он расположен в подменю Луч  > Шум  .

Используйте следующую таблицу, чтобы изменить различные свойства:


Module Properties
Properties Values Descriptions
Frequency 30 Gives us a nice
amount of
noise. Adjust

Автор: Ханин Владимир

190
to taste.
Low Freq Enabled Checked Enables
randomization
of noise
points.
Noise Range Vector Uniform distribution. Min:( 0, -50, -50) Max:( 0, 50, 50) Tells the noise
how far it can
move away
from the
beam.
Noise Tessellation 10 Smoothes out
the noise.
Frequency Distance 100 Rounds out
the shape of
the noise.
Вот пример результат нашей работы.

Используйте различные свойств и их значений, которые диверсификации вашу работу.


Шаг 3 источника и назначения
Если вы хотите, что бы ваша пучок имел разную длину вдоль одной оси, эта часть урока для
вас.

Автор: Ханин Владимир

191
К сожалению, этот способ не всегда хорошо; В некоторых случаях, вам нужно будет указать
начальную и конечную точки, а также контролировать процесс между ними. Это можно сделать с
помощью «захвата цели» (источник и цель).
Для начала, мы добавили двух актеров на сцене, что бы они быть использованы в качестве
начальных и конечных положениях. В этом случае, мы будем использовать Замечание актеров.

Вернуться к Cascade, добавьте Источник  модуля iTarget  для вашей излучателя. Они оба в
суб-луча.

Модули Тип луча данных, источник и цель, установите следующие параметры:


Module Properties
Property Value Reason
Автор: Ханин Владимир

192
Beam Data
Module
Beam Method PEB2M_Target Extablishes that the beam
will require a source and a
target.
Source Module
Source Method PEB2STM_Actor Tells the beam to start at
the location of an actor.
Source Name BeamSource Tells the beam to start at
the location of an actor.
Source Vector Constant This sets the display source
Distribution. Value:(0, 0, 0) in the Preview window to be
0,0,0.
Target Module
Target Method PEB2STM_Actor Tells the beam to end at the
location of an actor.
Target Name BeamTarget This is just a parameter
name and can be anything
you like.
Target Vector Constant This sets the display target
Distribution. Value:(1000, 0, in the Preview window to be
0) 1000,0,0.
Ваше луч не изменится, но теперь он будет иметь начальную и конечную точки луча -
сегмент.
Настройка исходного и целевого параметра луча
Чтобы луч использовать Note actor, как источник и цель, мы должны установить их в
качестве параметров, например, для эмиттера актера. После того, как вы принесли эмиттер луча
на сцену, выполните следующие действия:
● Настройте 2 параметра экземпляра на эмиттере актора. Назовите BeamSource и
BeamTarget.
● Установка и их Тип в PSPT_Actor.
● Установите один из Note Actor в поле Actor каждого параметра.
Когда закончите, ваша панель должна выглядеть примерно так:

Автор: Ханин Владимир

193
Ваш луч в настоящее время движется между двумя Note actor-ами:

Автор: Ханин Владимир

194