Создание Height Field Painter с помощью Blueprints и Render Targets в Unreal Engine 4

0
11
Создание Height Field Painter с помощью Blueprints и Render Targets UE4

Возможность поднимать и опускать различные поверхности позволяет создавать интересные и уникальные элементы геймплея. В следующем разделе мы рассмотрим, как вы можете использовать объекты Blueprints & Render Targets, чтобы создать Height Field Painter, который поднимает поверхность объекта, когда игрок стреляет в него. Для этого мы сначала создадим и настроим новый игровой режим и HUD Blueprint, которые дают возможность пользователю взаимодействовать с Height Field Painter. Затем мы создадим и настроим необходимые Render Targets и Материалы. Наконец, мы создадим Blueprint, который свяжет все отдельные части вместе, в результате чего Blueprint сможет поднять поверхность объекта, к которому он применяется внутри Unreal Engine 4 (UE4).

Настройка проекта

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

Прежде чем мы сможем начать создавать и настраивать требуемых Актеров для Height Field Painter, мы должны сначала создать и настроить (Gamemode Override) переопределение режима игры. В следующем разделе мы рассмотрим, как это можно сделать в вашем проекте.

Если вы работаете с картой Content Examples, вы можете пропустить этот шаг и использовать игровой режим MyGame. Этот игровой режим можно найти в разделе Content > Blueprints > MyGame.

Создание нового игрового режима и HUD

Чтобы увидеть перекрестие, которое сообщит пользователю, где он снимает, нам нужно будет создать и настроить новый режим игры и HUD Blueprints. В следующем разделе мы рассмотрим, как настроить все это, чтобы оно работало с нашим Height Field Painter.

  1. Кликните правой кнопкой мышки по контент браузеру и в меню в разделе Create Basic Asset выберите параметр Blueprint Classопция Blueprint Class ue4
  1. В окне Pick Parent Classнажмите на опцию Game Mode, назвав новый игровой режим HightFieldPainterGameMode.опция Game Mode UE4
  2. Снова кликните правой кнопкой мышки в контент браузере, чтобы открыть меню Create Basic Asset, а затем выберите параметр Blueprint Class.создать новый материал ue4
  3. Когда откроется окно Pick Parent Class, разверните опцию All Classes и введите HUD в поле поиска. Найдите опцию HUD и затем нажмите на нее, далее нажмите кнопку Select, чтобы создать ее.опция HUD ue4
  4. Назовите только что созданный проект HUD Blueprint – HeightFieldPainterHUD, а затем дважды щелкните по HeightFieldPainterGameMode Blueprint, чтобы открыть его.HeightFieldPainterGameMode Blueprint ue4
  5. На панели Details в HeightFieldPainterGameMode в разделе Classes установите для HUD Class только что созданный HeightFieldPainterHUD Blueprint.HUD Class ue4
  6. Теперь скомпилируйте и сохраните Blueprint HeightFieldPainterGameMode, а затем откройте Blueprint HeightFieldPainterHUD, дважды щелкнув его в контент браузере.кнопки Compile и Save ue4
  7. Внутри Blueprint HeightFieldPainterHUD перейдите к графику событий Event Graph и скопируйте следующий код Blueprint в график.Event Graph ue4
Не забудьте скомпилировать и сохранить свой Blueprint, чтобы его можно было использовать.

Этот код Blueprint указывает HUD нарисовать выбранный Материал так, чтобы он был центрирован на экране игрока во время игры. Чтобы увидеть, все ли настроено правильно, нажмите кнопку Play, чтобы запустить игру, и теперь у вас должно быть перекрестие, расположенное в центре экрана (как показано на следующем рисунке).перекрестие в центре экрана ue4

Если вы не видите такое перекрестие на экране, убедитесь, что инпут Материала на узле Draw Material имеет что – то уже введенное в инпут Материала.узел Draw Material ue4

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

Создание требуемых активов и настройка

Перед тем, как мы сможем создать Height Field Painter Blueprint, нам нужно будет создать и настроить следующие типы ресурсов в контент браузере UE4. В следующих разделах мы рассмотрим, как необходимо настроить каждый актив, а также все специальные свойства, о которых вам необходимо знать.

Обратите внимание, что следующее не относится к какому-либо из типов проекта UE4. Следующее может быть выполнено в любом проекте, который использует UE4 версии 4.13 или более поздней версии.
  • Render Target
  • Материал
  • Blueprint (на основе Актера)

Создание Render Target и Настройка

  1. Щелкните правой кнопкой мышки внутри контент браузера и в появившемся меню выберите Create Advanced Asset>Materials & Textures, а затем выберите параметр Render Target.параметр Render Target ue4
  1. Назовите только что созданный Render Target – RT_Height_Filed_Painter, а затем нажмите кнопку Save All, чтобы сохранить свою работу.RT_Height_Filed_Painter ue4

Создание Материала и Настройка

  1. Щелкните правой кнопкой мыши внутри контент браузера и в списке Create Basic Asset и выберите параметр Material, чтобы создать новый материал, назвав его MAT_HeighfieldPainter.создать новый Материал ue4
  2. Выберите материал MAT_HeightfieldPainter в контент браузере и затем щелкните его правой кнопкой мышки. В отображаемом меню в разделе Common выберите параметр Duplicate, чтобы создать копию материала и присвоить ему имя MAT_ForceSplat.параметр Duplicate ue4
  3. Дважды щелкните материал MAT_HeighfieldPainter, чтобы открыть его, а затем выберите узел основного материала. На панели Details в разделе Material настройте следующие параметры. 
  • Shading Model: UnlitShading Model: Unlit ue4
  1. Материал MAT_HeighfieldPainter будет использовать вход World Position Offset, чтобы увеличить Z-высоту вершин Статик Меши, к которой он применяется. Вы можете скопировать его в свой Материал, наведя указатель мышки на изображение ниже, а затем выбрав опцию Copy Expression Graph, скопировав и вставив в него предоставленный код материала MAT_HeighfieldPainter.параметр Copy Expression Graph ue4
Не забудьте применить и сохранить свой Материал, чтобы его можно было использовать.
  1. Откройте Материал MAT_ForceSplat и выберите узел основного материала. На панели Details в разделе Material установите следующие параметры:
  • Blend Mode: Additive
  • Shading Model: Unlit
  • Allow Negative Emissive Color: CheckedAllow Negative Emissive Color ue4
  1. Поскольку материал MAT_ForceSplat будет действовать как наша кисть для поднятия поверхности нашего поля высоты, у него должно быть несколько параметров, которые позволят вам контролировать его размер и интенсивность. Вы можете скопировать законченный Материал в свой Материал, наведя указатель мышки на изображение ниже, а затем выбрав опцию Copy Expression Graph, скопировав и вставив предоставленный код материала в MAT_ForceSplat.опция Copy Expression Graph ue4
Не забудьте применить и сохранить ваш Материал, когда он будет сделан, чтобы его можно было использовать.

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

Настройка Blueprint

Когда  render targets и необходимые материалы настроены и готовы к использованию, теперь пришло время собрать все вместе, используя Blueprint. В следующем разделе мы расскажем, как настроить все различные части Height Field Painter Blueprint. 

Создание Blueprint и настройка переменных

  1. Щелкните правой кнопкой мышки в контент браузере, далее в меню в разделе Create Basic Assetвыберите параметр Blueprint Class.опция Blueprint Class ue4
  1. В окне Pick Parent Class выберите Actor и назовите его – HeightFieldPainter.1 окно Pick Parent Class ue4
  1. Дважды кликните по HeightFieldPainter Blueprint, чтобы открыть его, а затем перейдите на вкладку Event Graph. Когда график событий будет открыт, добавьте следующие переменные:вкладка Event Graph ue4

Имя переменной

Тип переменной

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

HeightfieldRT

Texture Render Target 2D

N/A

PainterMaterialInstance

Material Instance Dynamic

N/A

MouseDown

Bool

N/A

ForceSplatMID

Material Instance Dynamic

N/A

InteractionDistance

Float

1000.0

BrushSize

Float

0.04

BrushStrength

Float

1.0

Настройка Компонентов

На вкладке Components нажмите кнопку Add Component и добавьте компонент Статик Меш в Blueprint. После добавления компонента статик меши выберите компонент статик меши и настройте следующие параметры:вкладка Components ue4

Раздел

Свойство

Обязательный Актив

Значение

Transform

TransformTransformTransform

Mobility

MobilityMobilityMobility

N/A

N/AN/AN/A

Movable

MovableMovableMovable

Static Mesh

Static MeshStatic MeshStatic Mesh

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

Скрипт построения используется для создания и назначения цели 2D render target в дополнение к созданию и назначению необходимых динамических экземпляров материала. Если вы еще не в том месте, перейдите на вкладку Construction Script и скопируйте следующий код в свой скрипт построения Blueprints.вкладка Construction Script UE4

Настройка функции Trace from Camera

Есть два способа реализовать эту функцию. Первый метод требует немного математики и работает в основном на плоскостях или других плоских поверхностях. Второй метод использует узел Find Collisoin UV, который требует больше памяти для использования, но будет работать с любым компонентом статик меши, независимо от формы (UV-швы по-прежнему будут вызывать артефакты). Вы можете выбрать способ реализации ниже.

Функция Trace from Camera будет использоваться для определения местоположения в статик меши, высота которой должна быть увеличена. Он определяет это местоположение, направляя луч из центра камеры игрока в мир. Когда этот луч пересекается со статик мешью, то место, которое он пересекает, будет местом, которое поднято. Чтобы настроить функцию Trace from Camera, вам нужно будет сделать следующее:

  1. Нажмите на маленький (белый) знак плюс на вкладке Functions,чтобы создать новую функцию, и назовите ее – TraceFromCamera.функция TraceFromCamera ue4
  1. Откройте функцию TraceFromCamera и скопируйте следующий код Blueprint в свой Blueprint, наведя указатель мышки на изображение ниже, а затем выберите параметр Copy Expression Graph, выберите код, скопируйте его, а затем вставьте в функцию TraceFromCamera.
Не забудьте скомпилировать и сохранить свой Blueprint, чтобы его можно было использовать.

функция Trace From Camera ue4Настройка графика событий

Теперь, когда все необходимые детали созданы и настроены, пришло время соединить все различные части вместе в графике событий. Вы можете скопировать завершенный код Blueprint в свой Blueprint, наведя указатель мышки на изображение ниже, и далее выбрав опцию Copy Node Graph, скопировать и вставить предоставленный код Blueprint в свой Height Field Painter Blueprint.

При копировании и вставке кода Blueprint узел Event Begin Play не будет добавлен в график. Убедитесь, что вы добавили узел Event Begin Play и подключили его ко входу Enable Input.вход Enable Input ue4

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

Конечный результат

Теперь, когда все необходимые детали для Height Field Painter Blueprint уже настроены, пришло время увидеть Height Field Painter в действии. В следующем разделе мы поговорим о том, как использовать Height Field Painter в вашем проекте UE4.

Применение Height Field Painter Blueprint

  1. Разместите Blueprint Height Field Painter в контент браузер и перетащите его на свой уровень, расположив его в соответствии с требованиями вашего уровня.перетащить Blueprint Height Field Painter ue4
  1. Нажмите кнопку Play на главной панели инструментов, а затем переместите своего игрока так, чтобы он находился спереди (или очень близко) к Blueprint Height Field Painter, помещенному на уровне.Кнопка Play в редакторе UE4

Конечный результат

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

Хотя это всего лишь один из способов управления вершинами статик мешей с помощью Blueprints & Render Targets, творческие возможности практически безграничны. От создания эффектов воздействия, которые могут деформировать как игроков, так и окружающую среду, до предоставления игрокам реального влияния на миры, в которых они играют, можно использовать Height Field Painter Blueprint, чтобы соответствовать многим различным ролям и требованиям геймплея.