Создание жидких поверхностей с помощью Blueprints и Render Targets в Unreal Engine 4

0
24
Создание жидких поверхностей с помощью Blueprints и Render Targets в ue4

Используя Blueprints и Render Targets, вы можете создать жидкую поверхность, которая имитирует то, что происходит с водой, когда ее поражает снаряд или игрок. В следующем руководстве вы узнаете, как можно использовать Blueprints & Render Targets для создания актера с жидкой поверхностью, создавая новый набор render targets и Материалов, которые специально настроены для работы с render targets. Затем мы создадим и настроим новый Blueprint, который будет содержать и активировать взаимодействие поверхности жидкости, когда поверхность жидкости будет затронута.

В части этого руководства используются те же активы, которые были созданы в Руководстве по Созданию Height Field Painter с помощью Blueprints и Render Targets. Если вы его еще не изучили, пожалуйста, сделайте это, прежде, чем приступить к представленному здесь. Вы также можете найти этот пример в проекте Content Example, который можно загрузить с вкладки «Learn» в программе запуска Epic Games.

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

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

Настройка проекта для Жидкой поверхности такая же, как и для Height Field Painter. Если вы этого еще не сделали, прочитайте раздел Project Setup в разделе Руководства по Созданию Height Field Painter с помощью Blueprints и Render Targets. По завершении вы должны получить новый игровой режим и HUD. Когда вы запустите проект, вы должны увидеть что-то похожее на изображение ниже.Height Field Painter ue4

В следующем разделе мы рассмотрим создание всех необходимых активов для создания Fluid Surface Blueprint.

2 – Требуемые создание актива и настройка 

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

Обратите внимание, что следующее не относится к типу проекта UE4. В любом проекте, использующем UE4 версии 4.13 или новее, может быть выполнено следующее.
  • Render Target
  • Material
  • Blueprint (Based off Actor)

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

  1. Щелкните правой кнопкой мышки внутри контент браузера и из отображаемого меню, перейдите в меню Create Advanced Asset > Materials & Textures, а затем выберите параметр Render Target.параметр Render Target ue4

2. Назовите вновь созданный Render Target,

RT_Height_Filed_Painter

, а затем нажмите кнопку Save All, чтобы сохранить свою работу.созданный Render Target ue4

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

  1. Щелкните правой кнопкой мышки внутри контент браузера и в списке Create Basic Asset выберите опцию Material, чтобы создать новый Материал, называя его 
    MAT_HeighfieldPainter

    .создать новый Материал ue4

2. Выберите материал MAT_HeightfieldPainter в контент браузере, а затем щелкните по нему правой кнопкой мышки. Из отображаемого меню в разделе Common выберите параметр Duplicate, чтобы создать копию Материала, называя его 

MAT_ForceSplat.<img src="https://www.native-game.com/wp-content/uploads/2019/01/HFP_Material_Creation_01-ue4.png" alt="параметр Duplicate ue4" width="578" height="262" class="aligncenter wp-image-13775 size-full" title="параметр Duplicate ue4" />

3.  Дважды щелкните по материалу MAT_HeighfieldPainter, чтобы открыть его, а затем выберите Main Material NodeНа панели Details в разделе Material настройте следующие параметры.

  • Shading Model: UnlitShading Model: Unlit ue4

4. Материал MAT_HeighfieldPainter будет использовать вход World Position Offset для увеличения Z-высоты вершин Static Mesh, к которым он применяется. Вы можете скопировать его в свой материал, наведя указатель мышки на изображение ниже, а затем щелкнув параметр Copy Expression Graph, скопировав и вставив предоставленный код материала в 

MAT_HeighfieldPainter

.параметр Copy Expression Graph ue4

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

5. Откройте материал MAT_ForceSplat и выберите Main Material Node. На панели Details раздела Material настройте следующие параметры.

  • Blend Mode: Additive
  • Shading Model: Unlit
  • Allow Negative Emissive Color: CheckedAllow Negative Emissive Color ue4

6. Поскольку MAT_ForceSplat Material будет действовать как наша кисть для повышения поверхности нашего height field, ему нужно будет иметь несколько вариантов, которые позволят вам контролировать его размер и интенсивность. Вы можете скопировать законченный материал в свой материал, наведя указатель мышки на изображение ниже, а затем щелкнув по опции Copy Expression Graph, скопировав и вставив предоставленный код материала в MAT_ForceSplat.опция Copy Expression Graph ue4

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

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

3 – Настройка Blueprint

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

Создание и настройка Blueprint

  1. Щелкните правой кнопкой мышки в контент браузере и в меню в разделе Create Basic Asset, выберите опцию Blueprint Class.опция Blueprint Class ue4

2. В окне Pick Parent Class выберите Actor и назовите его 

HeightFieldPainter

.1 окно Pick Parent Class ue4

3. Дважды щелкните по экрану HeightFieldPainter, чтобы открыть его, а затем щелкните вкладку Event Graph. Когда этот график событий открыт, добавьте следующие переменные.вкладка Event Graph ue4

Имя переменнойТип переменнойЗначение по умолчанию
HeightfieldRTTexture Render Target 2DN/A
PainterMaterialInstanceMaterial Instance DynamicN/A
MouseDownBoolN/A
ForceSplatMIDMaterial Instance DynamicN/A
InteractionDistanceFloat1000.0
BrushSizeFloat0.04
BrushStrengthFloat1.0

Создание и настройка функций Blueprint

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

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

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

  • Inputs:
    • Name: Index
    • Type:Integer
  • Outputs:
    • Name: Heigh RT
    • Type:Texture Render Target 2DFS_Get_Height_Function-ue4
Не забудьте добавить каждую из трех render targets к Height RT на возвращаемом узле Return Node.

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

  • Inputs:
    • Name: CurrentHeightIndex
    • Type:Integer
    • Name: NumFramesOld
    • Type:Integer
  • Outputs:
    • Name: Heigh RT
    • Type:Texture Render Target 2DFS_Store_Last_Height-ue4
  • Trace From Camera – это тот же самый след, который использовался в Blueprint Painter. Для этой функции нет входных или выходных переменных, которые необходимо настраивать.функция Trace From Camera ue4

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

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

Не забудьте скомпилировать и сохранить свой Blueprint, чтобы его можно было использовать.
  • В Графике построения мы собираемся создать статик меш, которая необходима для поверхности воды, а затем создать и применить динамический экземпляр материала к этой статик меше, которая будет имитировать поверхность воды.настройка графика Blueprint ue4

Настройка графика событий Blueprint

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

Не забудьте скомпилировать и сохранить свой Blueprint, чтобы его можно было использовать.
  • Clear all render targets of data – это часть Blueprint, которая очищает все render targets любых предыдущих данных, которые они могут содержать, чтобы гарантировать, что при первом выполнении Blueprint не появляются никакие артефакты.Настройка графика событий Blueprint ue4
Не забудьте добавить каждую из трех render targets ко входам Height RT * в Return Node.
  • Убедитесь, что нажата Левая кнопка мышки – это часть Blueprint, которая проверяет, удерживает ли пользователь левую кнопку мышки или нет. Если у пользователя нажата Левая кнопка мышки, MouseDown имеет значение true; в противном случае он установлен в значение false.значение MouseDown ue4
  • Раздел Take Damage Force находит местоположение на статик меше, которое было поражено, и применяет Материал ForceSplat к этому разделу, чтобы он мог компенсировать поверхность, имитирующую событие удара.Раздел Take Damage Force ue4
  • Раздел Begin & End Overlap проверяет, не касается ли игрок в данный момент Актера жидкой поверхности, который был помещен в мир.Раздел Begin & End Overlap ue4
  • Shoot when mouse is down, является частью Blueprint, которая проверяет каждый Tick, чтобы увидеть, удерживается ли левая кнопка мышки. Когда Левая кнопка мышки удерживается нажатой, вызывается функция Trace From Camera, которая прослеживается от центра камеры в мире.FS_Shoot_When_Mouse_Is_Down-ue4
  • Touching Character Force – это часть Blueprint, которая отвечает за применение и обновление силы, которая применяется к Актеру поверхности жидкости, когда игрок прикасается к ней.Touching Character Force ue4
  • Fixed timestep, so fluid speed is framerate independent является частью Blueprint, которая гарантирует, что распространение волн через поверхность жидкости имеет частоту кадров, которая не привязана к частоте кадров проекта. По существу, волны на поверхности жидкости не будут замедляться или ускоряться в зависимости от того, что в настоящее время происходит на уровне.Touching Character Force ue4
  • Cycle Active heightfield– это часть Blueprint, которая циклически проходит через различные render targets для жидкой поверхности, так что поверхность жидкости имеет более динамичный вид при съемке или прикосновении.FS_Cycle_Active_Heightfield-ue4
  • Apply fluid surface simulation kernel, which propagates waves является частью Blueprint, которая обрабатывает распространение волн через Актера поверхности жидкости делает его похожим на то, что волны со временем пропадают.Apply fluid surface simulation kernel ue4
  • Compute Surface Normal – это раздел Blueprint, который применяет нормаль к поверхности жидкости, которая помогает сделать рябь более выраженной и более легкой для восприятия.FS_Compute_Surface_Normal-ue4

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

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

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

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

Это видео показывает, что происходит, когда вы идете по Blueprint жидкой поверхности с персонажем на основе пешки.копия завершенного Blueprint поверхности жидкости ue4

Вот копия всего завершенного Blueprint поверхности жидкости.