Сегодняшний выпуск подготовил Андрей Дьяков, Associate Technical Director в Sperasoft.

Андрей Дьяков

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

Начну с Blueprint-ассета – Smart Spline Generator. Штука невероятно полезная в первую очередь для дизайнеров уровней, особенно если нужно протягивать веревочные мосты между парящими островами, провода между столбами, проводить железную дорогу в горах и делать прочие специфические штуки.

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

Еще одним обязательным плагином для дизайнеров уровней является Instance Tool. Плагин не хватает звезд с неба и не добавляет в редактор кнопку «сделать красиво». Но он значительно упрощает работу в редакторе со встроенным типом InstancedStaticMesh, который необходимо использовать в целях оптимизации, если на игровых уровнях используется множество одинаковых статических объектов.

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

С этим Blueprint-ассетом я начал свое знакомство еще в то время, когда его автор, Kodi Mynatt, выкладывал на youtube серию уроков о создании следов на снегу. В то время я как раз работал над адвенчурой в зимнем сеттинге и рассматривал разные варианты реализации продавливаемых сугробов. Подход автора был прост: массив Sphere Mask + тесселяция (в то время в движке еще не было поддержки DrawMaterialtoRenderTarget).

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

К сожалению, Kodi Mynatt покинул наш мир ранее в этом году, поэтому на странице магазина указана версия движка 4.14, как последняя поддерживаемая, однако на самом деле ассет прекрасно работает на 4.15 и 4.16, а на 4.17 работает после нескольких незначительных исправлений в Blueprint’e.

Напоследок я расскажу о собственном ассете. Он призван помочь мобильным разработчикам имплементировать все возможные механики управления игрой/приложением на Unreal Engine 4 с помощью пальцев.

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

Поскольку в built-in джойстиках ничего подобного не было и нет, было принято решение реализовать все с нуля. Именно этот функционал вошел в релизную версию ассета, который сперва назывался Custom Touch Controls. Однако чуть позже мне потребовались жесты свайпа (swipe) и увеличения (pinch to zoom) и я решил добавить данный функционал в уже существующий ассет, выпустив второй апдейт со сменой названия на актуальное.

Затем, уже в третьем апдейте, по просьбам покупателей, я реализовал дополнительный функционал: тап (tap), двойной тап (double tap), тап двумя пальцами (two fingers tap), двойной тап двумя пальцами (two fingers double tap), передвижение по тапу (tap to move), передвижение по свайпу (swipe to move) и многое другое.

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

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

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

Где и как независимому разработчику можно найти подобные материалы?

Отвечает Святослав "gnoblin" Панкратов, руководитель студии IDSPE DEV , независимый разработчик.

Общий комментарий о ситуации

Привет, меня зовут Слава Панкратов, и я считаю, что нужно очень постараться, чтобы НЕ сделать игру сегодня.

Итак, независимый разработчик хочет игру. Тут возникает несколько вопросов:

  • Где же контент?
  • Получится ли у независимого разработчика то, что он задумал?

Общий ответ на первые два вопроса: да, почти всё, что могло бы вам понадобиться, уже сделал кто-то другой и выложил на ассет стор.

Где же контент?

Обычно для игры нужны:

  1. 3D Модели. («пропы», окружение, оружие, персонажи, техника — машины, танки, роботы и так далее).
  2. Анимации для персонажей.
  3. Звуки, музыка.
  4. UI, иконки.
  5. Эффекты (партиклы, пост-эффекты, нестандартные шейдеры).

Полноценный набор контента есть, и он достаточно легко и дешево доступен в сети.

Основные места, где можно поискать в первую очередь:

  • Unreal Marketplace (доступен из окна запуска Unreal Engine 4).

В рамках данной статьи я буду делать упор на игры, сделанные на Unity, но никто не мешает купить модельку в ассет-сторе и использовать ее в игре на Unreal, Torque или какой-то другой технологии, которая вам нравится больше.

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

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

Рассмотрим основные контентные площадки подробнее.

AssetStore (http://assetstore.unity3d.com)

Можно с полной уверенностью утверждать, что ассет-стор — это главный ресурс для независимого разработчика. Здесь можно найти почти всё, что угодно. То, чего нет, обычно можно найти на трёх других площадках. Ассортимент поражает воображение. Цены, в целом, адекватные.

Тут представлены все виды ассетов, которые могут пригодиться:

  1. 3D Модели («пропы», окружение, оружие, персонажи);
  2. Анимации для персонажей;
  3. Звуки, музыка;
  4. UI, иконки.

2. 3D Ocean (http://3docean.net , http://audiojungle.net)

Здесь можно найти необычные 3D-модели, которые не представлены в ассет-сторе, по адекватной цене. В плане ассортимента музыкальных треков и удобства их выбора — тут, как мне кажется, ситуация обстоит получше, чем на ассет-сторе. С другой стороны, уровень цен на музыку повыше.

3. TurboSquid (http://turbosquid.com)

Не все 3D-модели на этом ресурсе подходят для геймдева (по крайней мере, без ретопологии). И, тем не менее, тут можно подобрать огромное количество качественного лоупольного контента. Из минусов можно отметить относительно высокие цены.

4. Unreal Marketplace (доступен из окна запуска Unreal Engine 4)

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

Как независимый разработчик может визуально улучшить контент в игре с помощью готовых решений?

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

  1. Candela SSR: Advanced Screen Space Glossy Reflections . Любопытный ассет , который можно использовать как альтернативу статическим отражениям, и который может солидно улучшить качество картинки, используя имеющуюся информацию о том, что уже отрендерилось на экране.
  2. SSAO Pro . Более качественный и производительный аналог стандартного SSAO-постэффекта.
  3. Sonic Ether"s Bloom & Dirty Lense . Качественная замена стандартного Bloom-постэффекта со встроенным эффектом грязной линзы.
  4. Better Trails . Более крутой аналог Trail Renderer.
  5. Shadow Softener . Решение для более производительных и красивых теней.
  6. Shader Forge . Нодовый редактор материалов — теперь ваш художник супермен.
  7. Mixamo Fuse (Decimator , Autorig). Компания Mixamo продолжает радовать нас всё новыми и новыми сервисами. Fuse позволяет создавать достаточно крутых персонажей, на месте оптимизировать количество полигонов, ригать и анимировать этих персонажей (с использованием сопутствующих сервисов). Не все дополнительные сервисы доступны для разработчиков с ограниченным бюджетом, но предоставляют очень мощные инструменты.

На первый взгляд простой и незатейливый проект Berker Siino скрывает за собой много работы. Сегодня мы увидим, как создавать окружение в Unreal Engine 4, которое сияет и вдохновляет.

Вступление

Berker Siino — фрилансер, работающий для таких клиентов, как Liquid Development, Airborn Studios и Metalpop Games . В то же время, в последнее время он также занят тем, что помогает стартапам двигаться в нужном направлении: запускает пайплайны, собирает арт-команды и передает свои знания.
Сейчас проекты всё больше переходят на Unreal Engine 4 , поэтому и Berker Siino решил освоить новую программу при помощи личного проекта. Предыдущая работа художника в Crytek позволила получить ему глубокие технические знания о движках и создании артов. Понимание основной технической базы является одним из самых важных навыков, которые помогут лучше реализовать задачи, как художнику.

В наши дни мы наблюдаем ключевые изменения в геймдеве. Использование ресурсов в приложениях реального времени стало намного проще, а визуализация становится проще и качественнее. Многие задачи автоматизируются, предметы сканируются или перерабатываются из библиотек. Такие инструменты, как Quixel Suite или Substance Designer / Painter дают нам гибкость, чтобы быть быстро работать с высоким стандартом качества. Эта тенденция будет развиваться все больше и больше, и нам нужно будет обязательно вернуться к истокам и понять основы самого изобразительного искусства. Ведь скоро инструменты будут столь же просты в использовании, как и карандаш и бумага.

Почему Unreal Engine 4?

Причина заключалась в том, чтобы понять рабочий процесс создания объектов и принцип рендеринга в UE4. Подход состоял в том, чтобы создать много активов модульным способом для большего набора контента. Рабочий процесс включал Zbrush и Quixel для текстурирования трех деревянных досок, которые были использованы в качестве модульных элементов для создания определенных деревянных элементов или мебели, таких как лестница, терраса, бочки, стулья и т. Д. С одной текстурой, установленной в качестве основы.
Кроме того, Berker Siino хотел узнать больше о динамическом рендеринге и использовании global illumination в сочетании с объемами распространения света в Unreal Engine 4. Просто базовые рабочие процессы для моделирования и текстурирования плюс преимущества PBR.

Ассеты дерева

Это highpoly sculpt базового комплекта для дерева в Zbrush.


А вот уже low poly с нормалями:


Круто было бы заполнить оставшееся пространство в UV развертками с других объектов. Оптимизация всегда хорошо работает. При увелечении кол-ва объектов так и будет.
В Quixel Suite создано множество масок. Мы рассмотрим их чуть позже. Но для текстурирования понадобилась ещё кое-какая информация о поверхности. Для этого минимально будет необходима tangent normal map. Все остальное текстурирование может быть создано по ней. Однако в случае с этим проектом, были сделаны такие карты как tangent normal, ambient occlusion, cavity (последняя создана как вспомогательная, для маски).


Поскольку Berker Siino использует для работы 3Ds max, все проверки карт он проводит в этой программе. Tangent normal map нуждается в ориентации «+ X-Y + X». Помните, что «Y» является зеленым каналом и может быть также перевернуто позже в движке или фотошопе, если что-то пошло не так во время процесса выпечки. Ниже показано, как подключить нормали в 3Ds max.

Модульный рабочий процесс

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


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

Текстуринг

Основной рабочий процесс здесь — использование сплошных цветов и масок. Вы получаете множество пресетов с Quixel и манипулируете ими. Это позволяет отделить текстурирование в виде задач или слоев для получения общей картины.
Может быть, вы хотите изменить цвет плоскости и придать ей чуть более коричневатый оттенок, чем скучный черный? Кроме того, в зависимости от вашего стиля вы можете добавить больше резкости или размытости к маски и управлять ощущением слоя цвета. Цель была сделать стилизацию. Поэтому не использовалось много градиента на карте альбедо, был использовал только цвет и применено PBR. Нужного эффекта удалось добиться благодаря отказу от GI.


Сavity map была создана для усиления темно-коричневого цвета отступов, царапин и следов дерева.

Дом


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


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

Крыша

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


Цвете плиток довольно прост. Он может быть выполнен либо маской с каналами rgb, маскируя различные плитки на текстуре для 3 средних плитки, а затем можно умножить сплошной цвет на нее в редакторе материалов UE4.


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


Автор объединил все объекты для дома и создал новый пакет UV. Таким образом получилось больше контроля, что без проблем помогло создать карту ambient occlusion. Она и была подключена к редактору материалов UE4.

Растительность

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


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


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



Материал растительности и пользовательские нормали

Есть некоторые важные вещи при работе с растительностью в UE4. Убедитесь, что для растительности используются собственные нормали. Нормали могут быть отредактированы с помощью модификатора прав на редактирование в Max Max. Просто выберите все нормали травы и укажите направление вверх.


Снимите галочку с Tangent Space Normal. Это можно найти в ноде материала (обозначено красным на картинке).


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

Материалы для дерева

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



Настройка динамического Global Illumination с Distance Fields

Если вы не включили Distance Fields в настройках проекта при рендеринге, то это должно произойти сейчас (см. рисунок ниже). Вам необходимо перезапустить движок, чтобы получить функция заработала. Более того, когда Unreal Engine 4 выключен, вам нужно добавить переменную консоли в ваш.ini-файл. Найдите ваш INI-файл,но в каталоге движка, а не в каталоге проекта. Пример пути: UE_4.15 \ Engine \ Config \ ConsoleVariables.ini


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


Далее приведены настройки, которые использовались для предварительного рендера:

Объем распространения света (объем пост-процесса)

Теперь идет забавная часть в Unreal Engine 4. Berker Siino — самый большой поклонник градиентов, и по его мнению они являются самым важным инструментом в наших руках для того, чтобы сделать привлекательную картинку. С bounce lights можно легко создать эти градиенты.
Существуют различные параметры, с которыми вы сможете играть на вкладке Post Process Volume. Там вы можете получить максимум от этой функции и настроить параметры для своих нужд.


SkyLight (должен быть установлен в movable) и AtmosphericFog, чтобы лучше отобразить объекты.

Вывод

Автор очень доволен результатом проекта, и он продолжит использовать Unreal Engine 4 для личной работы в будущем. Epic делает отличную работу.
Искусство должно быть выполнено без каких-либо ограничений инструментов или технических знаний. Технология с каждым днём становятся доступнее и понятнее.

При создании миров для игр иногда требуется возможность размещать и спавнить предметы в мире. Target Point позволяет сделать именно это. Она даёт вам общую точку в мире, из которой вы можете спавнить объекты.
Если вы знакомы с другими 3D — приложениями, такими как 3Ds Max или Maya то Target Point может вам показаться знакомой.

Размещение Target Point

Target Point можно найти в Modes панели в категории All Classes . Просто выберите её на Modes панели, а затем перетащить в мир.

Использование Target Point

Target Point может использоваться для многих задач внутри Unreal Engine 4. Вот список некоторых из них:

  • Цели для обхора камеры во время кинематографической последовательности.
  • Точки пути для AI.
  • Точки спавна.

Ниже приведен пример, показывающий, как Target Point была использована в блупринте, в качестве точки спавна.

Способность спавнить игрока в мир в любом месте — это очень полезная функция для любой игры. Unreal Engine 4 предлагает специальный объект — , который позволит вам сделать это.
определяет только начально положение игрока в мире.

Размещение Player Start

Может быть найден в Modes панели в Basic категории. Для того, чтобы разместить объект в мире, перетащите его из Modes панели на уровень.

Использование Player Start

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

При использовании , расположение и вращение будут приниматься во внимание.
Если вы хотите, чтобы ваш игрок смотрел на что-то конкретное, когда он отспавнится, убедитесь, что указывает в нужном направлении.

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

Bad Size: Иногда у вашего может измениться значек контроллера на значок который говорит «BADsize». Если это произойдет, все, что вам нужно сделать, это переместить так что бы его капсула ничего не задевала.

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

Размещение триггеров

Триггеры могут быть размещены на уровне путем перетаскивания одного из типов триггеров из Modes панели.

События триггеров

Триггеры используются для активации события, помещенного внутри Level Blueprint . Есть несколько различных типов событий которые триггер может активировать.
Главные из них происходят в ответ на какой — то тип столкновения с другим объектом, такимм полное или частичное проникновения объекта или персонажа.
Выберите триггер во Viewport :


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

В примере выше, событие будет срабатывать каждый раз когда объект выходит из триггера.

Декали обеспечивают лучшую производительность и более легкое обслуживание. Запись в GBuffer не требует перерасчета освещения и имеет ряд преимуществ:

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

Декаль отображает рамку в редакторе вокруг затрагиваемой области.

Добавление декалей на уровень

Самый простой способ добавить декаль на сцену — выбрать соответствующий материал декали в Content Browser , а затем щелкнуть правой кнопкой мыши внутри View области и выбирать Place Actor из контекстного меню.
Декаль затем может быть изменена и ориентирована с помощью инструментов трансформации.

Масштабирование, тайлинг, смещение

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

Масштабирование виджета контролирует ширину, высоту и глубину объема наложения декали.

Свойства декалей

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

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

DecalBlendMode параметр определяет свойства материала (диффузное, зеркальным, нормальный, непрозрачности, …), записываемое в GBuffer .
Opacity используется чтобы смешать несколько декалей. Эффективные декали манипулируют только несколькими GBuffer свойствами. В настоящее время некоторым свойствам, в целях оптимизации, представлена альтернатива: DBM_Diffuse , DBM_Specular , DBM_Emissive , DBM_Normal .

Свойство Описание
Translucent Используется для полупрозрачных декалей.
Stain Моделирует BaseColor но не работает для запеченного освещения.
Normal Отображает Normal свойство и не работает для запеченного освещения.
Emissive Лишь добавляет к текущему цвету цвет декали.
DBuffer_Translucent Color, Normal, Roughness Трансформируется в DBM_TranslucentNormal если Normal не используется.
DBuffer_Translucent Color Для неметаллов, работает для запеченного освещения.
DBuffer_Translucent Color, Normal Трансформируется в DBM_DBuffer_Color если Normal
DBuffer_Translucent Color, Roughness Для неметаллов, работает для запеченного освещения.
DBuffer_Translucent Normal Для неметаллов, работает для запеченного освещения.
DBuffer_Translucent Normal, Roughness Трансформируется в DBM_DBuffer_Roughness если Normal не используется. Для неметаллов, работает для запеченного освещения.
DBuffer_Translucent Roughness Для неметаллов, работает для запеченного освещения.
Volumetric Distance Function (experimental) Будет выводить знаковое расстояние в Opacity в зависимости от вектора освещения.

DBM_ScreenSpaceMask является особенным, влияет на специальный канал маскирования, который в настоящее время используется SSAO (Ambient Occlusion ). Позволяет переопределить вклад декали в SSAO в некоторых областях.
DBM_DiffuseSpecularEmissive режим, который влияет на несколько каналов GBuffer .
Обратите внимание, что режим смешивания материала также влияет на то как значения GBuffer смешиваются друг с другом.
Вы можете использовать режим просмотра GBuffer что бы просмотреть значения GBuffer , которые хранятся для каждого из пикселей.

Представление

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

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

Текущие ограничения

  • Мы в настоящее время декали работают только на статических объектах.
  • Normal смешивание в настоящее время не оборачивается вокруг объекта.
  • Streaming еще не подключен поэтому убедитесь, что текстура не потоковая.
  • Маскирующие декали (не влияющие на другой объект) работают не в полном объеме.

Исправление артефактов

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

Исправить это можно использовав Decal Derivative (однако осторожно, ибо эта нода имеет большое влияние на производительность). Она возвращает производные по X и Y оси текстуры декали в координаты по умолчанию,
это необходимо для анизотропной фильтрации текстур, но вычисляется иначе чтобы избежать артефакта.

Текущие ограничения

DecalMipmapLevel не поддерживает пользовательские UV.

Когда играете в видео игры использующие UE4, персонаж которым вы управляете, часто сделан из специального меша, называемым Skeletal Mesh Actor. Скелетал меш экторы потому специальные, потому что они могут быть использованы для показа сложной анимации сделанной в стороннем 3D приложении, и импортированной в UE4. Данные пособие расскажет и покажет, как использовать скелетал меш экторов внутри UE4.

Весь контент показанный в этой статье был взят из Matinee demo , которое вы можете скачать из вкладки Learn в лаунчере анриала.

Что такое Скелетал Меш объект?

Скелетал меш эктор — это специальный тип Эктора , который используются для показа сложной анимации сделанной в стороннем 3D приложении, и импортированной в UE4.Скелетал меши отличны от Статик мешей, потому что Скелетал меши содержат внутри себя сложный скелет, который помогает двигать вершины статик меша для соответствия той анимации которая проигрывается в данный момент.Так как Скелетал меши поддерживают скелет, то часто и густо они используются для персонажей, существ, сложных механизмов, или для любых других потребностей деформации, в том числе и для сложных движений. Внутри UE4 вы можете также найти Скелетал меш экторов которые используются не только для персонажей, но также и в Matinee , для создания кинематографических видеороликов.

Расположение Скелетал меша на уровне

Скелетал меш экторы располагаются на карте посредством стандартных методов расположения экторов; либо просто перетащите нужный эктор из контент браузера, либо выделив нужный эктор, нажмите ПКМ на карте.

Перетаскивание

Вы можете перетащить Скелетал меш эктор прямо из контент браузера прямо на уровень, следуя этим шагам:

    В контент браузере выделите Скелетал меш который вы хотите добавить на карту.

Контекстное меню

Вы также можете разместить Скелетал меш эктор на уровне посредством нажатия ПКМ контекстного меню, следуя этим шагам:

    В контент браузере выберите нужный Скелетал меш эктор.
    Нажмите ПКМ во вьюпорте, в месте где вы хотите расположить эктор, и выберите Place Actor: Skeletal Mesh из контекстного меню. Не обязательно выбирать именно ту позицию которая вам нужна, вы всегда можете переместить эктор в нужное место.
    Нажмите на Place Actor: Skeletal Mesh для размещения эктора на уровне.

Проигрывание анимации у Скелетал меш эктора

Для того, чтобы Скелетал меш проиграл анимацию во время игры, у вас есть 2 варианта — использовать Animation Blueprint (который даст вам возможность проиграть и смешать несколько анимаций) либо использовать Animation Asset для воспроизведения одной анимации. В данной статье вы сфокусируемся на Animation Sequence для воспроизведения нашей анимации во время игры.

Настройка скелетал меш эктора

Настройка Скелетал меша для проигрывание анимации довольна проста:

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

Настройка анимации Скелетал меша

Теперь, когда Скелетал меш эктор добавлен на уровень, пришло время добавить ему анимации посредством следующих шагов:

Воспроизведение анимации скелетал меша

Теперь, удостоверьтесь, что оба пунктика Looping и Playing выбраны (впринципе, они по дефолту такими являются), после чего нажмите Play Button для того, чтобы воспроизвести анимации во время игры.

Назначение материала

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

Используемый на экторе скелетал меша материал должен иметь отмеченный галочкой пунктик Used with Skeletal Mesh для того, чтобы всё работало правильно. Найти этот пунктик вы можете во вкладке Usage на панели Details материала.

Коллизия

Обычное создание коллизии не работает со скелетал меш экторами. Если вы хотите, чтобы вам скелетал меш взаимодействовал с объектами на уровне, вам необходимо создать Physics Asset для вашего скелет меш эктора.

Создание коллизии для Скелетал меш эктора

Для создания физичесского ассета для вашего меша нужно всего лишь жмакнуть ПКМ по мешу в контент браузере, после чего выбрать Create -> Create Physics Asset . Больше информации про создание физичесского ассета вы можете прочитать в документации .

Назначение физического ассета

После того как вы создали физичесский ассет — необходимо его применить. Откройте скелетал меш и в разделе Physics в слот Physics Asset укажите требуемый физичесский ассет.

Вы также можете переназначить физичесский ассет, путём простого выбора нужного физического ассета во вкладке Physics на панели Details в пунктике Physics Asset Override .

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

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

Мудрое использование зон при проектировании уровня

Самое главное, что нужно знать дизайнерам уровней о зонах:

  1. Зоны невидимы во время игры — игроки не могут их видеть!
  2. В связи с первым пунктом, зона очень редко будет использоваться одна для создания кого-то эффекта.

Поскольку зоны невидимы, игроки, как правило, не знают, что они находятся в ней, поэтому дизайнер уровня должен немного помочь игроку. Зоны, как правило, следует рассматривать как компонент большего эффекта, где другой элемент уровня выступает в качестве визуального эффекта, дающий понять, что находится перед игроком.
Возьмем, например Pain Causing Volume (применяет повреждение к чему — либо внутри зоны). Если поставить эту зону посередине уровня…

Теперь игрок будет понимать, почему стоять там больно!

Создание зон

Для создания зоны ее нужно выбрать из вкладки Volumes меню Modes и перетащить на уровень.

После того, как зона была помещена на уровень, Вы можете изменить размер и (или) переместить её.

Типы зон

Blocking Volume

Blocking Volume служит поверхностью коллизии, за которую не могут пройти объекты. Регулируя каналы коллизий зоны (на рисунке ниже), Вы можете контролировать, каким типам объектов можно пройти, а каким будет вызвано событие перекрытия
(overlap event), когда они подойдут к зоне. Смотрите Collision Documentation для получения более подробной информации.

Blocking Volume могут быть использованы в качестве коллизии для статического меша (Static Mesh), особенно, в случае стен здания.

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

Camera Blocking Volume

Camera Blocking Volumes аналогична по своей природе Blocking Volume тем, что она используются для определения места, куда нельзя пройти актеру камеры. Например, в перспективе от третьего лица, чтобы держать камеру у Вашего игрока в границах игрового пространства, не позволяя камере видеть обратную сторону игрового мира.
Свойства Camera Blocking Volume можно регулировать таким же образом, как у Blocking Volume — изменять каналы коллизий.

Trigger Volume

Trigger Volumes используются для вызова события, когда игрок или другой объект входит или выходит из неё. Они могут быть использованы с Level Blueprint , для проверки событий, геймплея или другого функционала без использования дополнительного Blueprint.
Например: Вы можете разместить TriggerVolume на Вашем уровне, и связать его с Level Blueprint , создав overlap event для этой зоны, которое запустит SoundCue, кат-сцену или откроет британским ученым дверь.

Nav Mesh Bounds Volume

Nav Mesh Bounds Volumes используются для определения зоны расчета Nav Mesh на уровне. Nav Mesh используются для вычисления навигационных путей для Искусственного Интеллекта.
В данной зоне, Nav Mesh строится на всех поверхностях с углом, по которому можно передвигаться. Вы можете создавать области в определенных местах на уровне, чтобы создать нужную навигационную геометрию.
Для построения навигационных путей, просто создайте один (или более) Volume Nav Mesh Bounds, который будет пересекаться с землей уровня и навигационная геометрия будет построена автоматически.

Для визуализации Nav Mesh в окне просмотра, нажмите кнопку P .

Пожалуйста, посмотрите примеры в Content Examples и для получения более подробной информации.

Physics Volume

Physics Volumes — зоны, в которых устанавливаются физические параметры, которые влияют на персонажей и другие физические. Обычно используются для создания воды, в которой игрок будет плавать. Но Вы могли бы так же легко использовать его, чтобы создать область с низкой или нулевой гравитацией и повлиять на предельную скорость (terminal velocity) объектов, проходящих через него.
Ниже описаны свойства данной зоны, настроить которые можно на панели Details .

Pain Causing Volume

Pain Causing Volumes по сути Physics Volume с дополнительной способностью наносить ущерб игрокам. Обычно размещается в таких областях уровня, где игрок не должен пройти, например, лава, облако токсичного газа, и так далее.
Наряду со свойствами, которые могут быть назначены для Physics Volume, Pain Causing Volume имеет свой собственный набор специфических свойств, описанных ниже.

Kill Z Volume

Kill Z Volume или «Kill-Brush» по существу уничтожает любой актер, который попал в эту зону (включая персонажей). Используется эта зона под уровнем, на случай, если игрок каким-то образом выпал из игровой зоны, или под высокой скалой, чтобы наверняка убить игрока или актера, который упадает с нее.

Level Streaming Volumes

Level Streaming Volumes используются в процессе Level Streaming (пожгрузка уровня). Они «объединяют» часть уровня и контролируют его загрузку и выгрузку из памяти, если игрок входит или выходит из зоны.
Вы можете настроить, обработку уровня Volume Level Streaming обрабатывает уровень потоковой передачи путем корректировки свойств на Details панели, изображенной ниже.

Cull Distance Volume

Cull Distance Volumes являются инструментом оптимизации, который заставляет движок не обрабатывать объекты — не отображать их на экране, которые меньше определенного размера, основываясь на расстоянии от этого объекта до камеры. Это может помочь оптимизировать сцену, не отрисовывая объекты заданного размера. Размер рассчитывается по самой большой стороне bound box.
Настройки Cull Distance Volume зависят от Cull Distances параметра, в Details панели.

На изображении выше, показаны свойства, определяющие следующее поведение:

  • Объекты в пределах зоны, которые имеют размер менее 50 единиц (units), не будут отображаться, если они находятся за 500 единиц от камеры или дальше.
  • Объекты в пределах зоны, которые имеют размер менее 120 единиц, не будут отображаться, если они находятся за 1000 единиц от камеры.
  • Объекты в пределах зоны, которые имеют размер менее 300 единиц всегда будут отображаться, так как 0 считается равным
    бесконечности, а это означает, что скрываться эти объекты не будут.

Настройка начинается с добавления нового массива Cull Distances, который можно добавить нажатием кнопки . Далее, заполняем размер объекта и требуемое расстояние, на котором Вам нужно скрыть объекты меньшего размера. Эти свойства должны быть созданы в определенном порядке.

Audio Volume

Audio Volumes позволяют контролировать и применять различные звуки на Вашем уровне, а также обеспечивает зоны слышимости, где Вы можете настраивать, что слышно внутри, а что снаружи зоны. Благодаря использованию аудио зон, Вы можете создавать переходы громкости между звуками и управлять параметрами Ambient Zone внутри самой зоны.

Некоторые свойства можно изменить на панели Details этой зоны, показанной ниже.

Ambient Zone определяют, как Sound Actors, расположенные внутри связанного с ним Audio Volume будет изменены в зависимости от местоположение игрока. Настройки Ambient Zone настраиваются в Details панели.

Параметр Описание
Exterior Volume Уровень громкости внешних звуков (звуков, находящихся вне зоны, а точнее настроенных как внешние), когда игрок находится внутри зоны.
Exterior Time Время, затухания (перехода) к новому уровню громкости внешних звуков в секундах.
Exterior LPF Множитель низкочастотного фильтра, применяемого к внешним звукам зоны, когда игрок внутри (1.0 – максимальный фильтр НЧ).
Exterior LPFTime
Interior Volume Громкость внутренних звуков, когда игрок находится вне зоны.
Interior Time Время, перехода до нового уровня громкости внутренних звуков в секундах.
Interior LPF Множитель низкочастотного фильтра, применяемого к внутренним звукам зоны, когда игрок находится вне зоны (1.0 – максимальный фильтр НЧ).
Interior LPFTime Время, перехода к новому уровню фильтра низких частот в секундах.

Post Process Volume

Post Process Volume представляет собой зону, в которой переопределяются параметры пост обработки, применяемые к камере, на параметры из Details панели.
Для получения дополнительной информации по пост обработке, прочтите Документацию по Post Processing .

Lightmass Importance Volume

Lightmass Importance Volume используется для оптимизации объема обработки, при создании предварительного рассчитанного света на уровне. Lightmass Importance Volume должна покрывать область уровня с геометрией, где необходимо рассчитать Lightmass, игнорируя остальное за его пределами. Lightmass является предварительно рассчитанным освещением и глобальной системой освещения использующейся в Unreal Engine 4.
Для получения дополнительной информации по Lightmass и Lightmass Importance Volume, обратитесь к Документации по Lightmass .

Lightmass Character Indirect Detail Volume

Lightmass Character Indirect Detail Volume похож на Lightmass Importance Volume и генерирует indirect light samples (зоны отраженного света, для их просмотра в окне редактора включите Show – Visualize – Volume Lighting Samples) по всей зоне, а не только на высоту игрока над геометрией. Хорошим примером использования этой зоны будет шахта лифта, в которой персонаж будет достоверно освещаться по всей длине шахты.

Precomputed Visibility Volume

Precomputed Visibility Volume используются прежде всего для оптимизации производительности. Эти зоны хранят видимость Актеров при их расположении на сцене. Эти зоны должны быть размещены только в тех областях, куда игрок может добраться.

Precomputed Visibility Override Volume

Precomputed Visibility Override Volume позволяют вручную изменить видимость актеров для своего места в мире, если не удовлетворяет автоматический результат Precomputed Visibilty Volume. Они также используются для оптимизации производительности и должны быть размещены только в тех областях, куда игрок может добраться.