Компонент Cable в Unreal Engine 4

0
6
Компонент Cable в Unreal Engine 4

Компонент CableИмея способность дешево добавлять кабели, веревки или цепи, которые могут качаться назад и вперед, как если бы на них дул ветер, можно облегчить разработку ваших проектов Unreal Engine 4 (UE4). В следующем документе мы рассмотрим, как вы можете использовать плагин Cable Component для создания, настройки и контроля того, как кабели выглядят, реагируют и даже сталкиваются с объектами на ваших уровнях.

Симуляция и рендеринг

Чтобы выполнить фактическое моделирование кабелей, нужна технология, называемая Verlet Integration, которая хорошо известна в геймдейве. Идея состоит в том, чтобы представить кабель как серию частиц с ограничениями расстояния между ними. Частицы на концах фиксированы, перемещаясь с тем, к чему они прикреплены. Те, что посередине, свободны и падают с гравитацией. Для каждого шага вы обновляете скорость и положение каждой частицы, а затем перемещаете их, чтобы отвечать ограничениям. Жесткость кабеля контролируется количеством повторов, которые мы выполняем для обеспечения ограничений (каждый шаг).

Симуляция и рендеринг UE4Теперь, когда есть хорошая цепочка из связанных и отскакивающих вокруг частиц, они должны быть визуализированы. Для визуализации кабеля был создан класс, называемый FCableSceneProxy, для представления рендеринга кабеля. Каждый конец позиций частиц Sim (сделанный в основном потоке внутри TickComponent) затем передается этому прокси через функцию SendRenderDynamicData_Concurrent. Затем обновление блокируется в потоке рендеринга, а буферы индексов и вершин обновляются, тем самым создавая меш в виде трубы. Для каждой вершины на этой трубчатой меши нам нужно вычислить положение, Texture UV и три вектора Tangent Basis. При этом X будет направлен вдоль кабеля, Z будет направлен прямо из кабеля (значение the normal), а Y – перпендикулярен X и Z. Эти свойства были подвергнуты воздействию компонентов, что дает вам возможность контролировать количество сторон, радиус трубки и количество раз, когда UV может прокладываться вдоль кабеля.

Кабель компонент рендеринг UE4Включение плагина

По умолчанию плагин Cable Component должен быть включенным. Однако, если это не так, вы можете включить его, сначала перейдя на главную панель инструментов и выбрав Edit > Plugins (Редактирование >  Плагины). Затем из списка плагинов перейдите к Rendering и убедитесь, что у компонента Cable Component есть галочка в поле рядом с Enabled (включено).

Включение плагина UE4Использование Cable Component

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

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

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

1. Во-первых, убедитесь, что панель Modes (Режимы) видна, а затем в поле Search Classes (Поиск классов) введите слово Cable.

Использование компонентов кабеля из панели режимов UE42. Чтобы добавить Актера кабеля в мир, нажмите на Cable Actor на панели Режимы, а затем перетащите его на уровень.

добавить Актера кабеля в мир UE43. Теперь вы можете размещать, поворачивать и масштабировать Cable Actor, чтобы он соответствовал потребностям вашего уровня.

Использование Cable Component in Blueprints

Чтобы использовать Cable Component в ваших Blueprints, вам нужно будет сделать следующее:

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

Использование Cable Component in Blueprints UE42. Затем, в разделе Components (Компоненты) схемы BP_Cable, нажмите кнопку Add Component (Добавить компонент), а затем найдите компонент Cable в списке. Когда он находится, щелкните по нему, чтобы добавить его в список «Компоненты».

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

отрегулировать свойства с помощью панели Details UE4

Чтобы обе стороны кабеля упали, снимите флажок Attach Start (прикрепить начало) или Attach End (Прикрепить конец) на панели Details Компонента Cable. Его также можно переключать во время игры, чтобы продвигаться дальше вместе с эффектами.

4. Разместите свой Cable Blueprint в контент браузере и перетащите его на уровень. После размещения вы можете использовать инструменты перемещения и поворота, чтобы поместить их по мере необходимости.

Разместить Cable Blueprint в контент браузере UE4Присоединение Объектов к концам Кабеля

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

1. Сначала вам нужно будет добавить Cable Actor и Статик Мешь на уровень.

Присоединение Объектов к концам Кабеля UE4

Убедитесь, что статик меш, которую вы прикрепляете к концу кабеля, имеет свойство Mobility (мобильность), установленную на значение Moveable (подвижный).

2. Найдите статик меш, которую вы хотите присоединить к концу Cable Actor в World Outliner, а затем перетащите ее поверх Cable Actor. После этого отобразится следующее окно ввода.

Присоединить к концу Cable Actor в World Outliner UE43. Выберите опцию Cable End (конец кабеля), и в окне просмотра вы увидите привязку своей Статик меши к концу Cable Actor.

Присоединение компонента кабеля UE4ДоПрисоединение Компонента Кабеля После UE4После

4. Теперь выберите Cable Actor на уровне. Затем на панели Details в разделе Cable снимите флажок Attach End (Прикрепить конец).

на панели Details в разделе Cable снимите флажок Attach End UE4

Обратите внимание, что вам не нужно использовать только лишь параметр Attach Start и Attach End (Прикрепить начало и конец) для подключения кабелей к Актерам. Вы также можете указать Socket (разъем, розетка), который можно использовать в качестве точки подключения.

5. После этого кабель теперь должен свободно качаться в вьюпорте.

Обратите внимание, что вы можете динамически переключаться с Attach Start и Attach End во время выполнения, что может привести к некоторым интересным эффектам.

Столкновение и Жесткость

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

Cable Component имеет возможность связать кабель с миром, контролируя жесткость кабеля. Чтобы включить эту функцию, вам нужно будет сделать следующее:

1. Во-первых, в разделе Details Компонента Cable под секцией Cable нажмите маленький белый треугольник, чтобы открыть расширенный вариант развертывания.

открыть расширенный вариант развертывания UE42. Для включения этих функций проверьте параметры Enable Stiffness (Включить жесткость) и Enable Collision (Включить столкновение).

проверьте параметры Enable Stiffness UE43. Теперь, когда вы перемещаете Cable Actor вокруг или когда объект сталкивается с ним, Cable Actor кабеля должен сталкиваться с объектом, с которым он соприкасается.

Анализ свойства

Следующая таблица раскрывает каждое из свойств Cable Component:

Cable

Анализ свойства UE4

СвойствоОписание
Attach Start/Прикрепить началоМы должны исправить начало чего-либо или оставить его свободным. Если значение – false, то компонентное преобразование используется только для начального местоположения начала кабеля.
Attach End/ Прикрепить конецМы должны исправить (используя AttachEndTo и EndLocation) или оставить его свободным. Если значение – false, тогда AttachEndTo и EndLocation используются только для первоначального расположения конца кабеля.
Attach End To/ Прикрепить конец кАктер или Компонент, который определяет конечное положение кабеля.
Component Property/ Свойство компонентаИмя свойства компонента для присоединения кабеля.
Attach End To Socket Name/ Прикрепить конец к имени разъемаИмя сокета на компоненте AttachEndTo для присоединения.
End Location/ Конец локацииКонечное местоположение кабеля относительно AttachEndTo (или AttachEndToSocketName), если оно указано, а в противном случае – относительно компонента кабеля.
Cable Length/ Длина кабеляОстаточная длина кабеля.
Num Segments/ Числовые сегментыСколько сегментов имеет кабель.
Solver Iterations/ Итерации SolverКоличество итераций Solver контролирует, насколько «жесткий» кабель.
Substep Time/ Время подстановкиУправляет временем подтипа моделирования для кабеля.
Enable Stiffness/ Включить жесткостьДобавляет ограничения жесткости к кабелю.
Enable Collision/ Включить столкновениеВыполняет развертки для каждой частицы кабеля на каждом подшаге, чтобы избежать столкновений с миром. Использует Collision Preset (предустановку столкновений) на компоненте, чтобы определить, с чем сталкивается. Это значительно увеличивает стоимость моделирования кабелей.

В настоящее время является Экспериментальным.

Силы Cable

Силы Cable UE4

СвойствоОписание
Cable Forces/ Силы кабеляВектор силы (мировое пространство) применяется ко всем частицам в кабеле.
Cable Gravity Scale/ Шкала тяжести кабеляМасштабирование применяется к мировой гравитации, влияющей на этот кабель.

Cable Rendering – рендеринг кабеля

Силы Cable UE4

СвойствоОписание
Cable Width/ Ширина кабеляПоказывает, насколько велика геометрия кабеля.
Num Sides/ Количество сторонЧисло сторон геометрии кабеля.
Tile Material/ Tile (изразцовый) МатериалСколько раз повторять материал по длине кабеля.

Дополнительная ссылка

В следующем разделе вы перейдете на внешнюю ссылку, где вы можете узнать больше об воодушевлении кабельных компонентов. Чтобы узнать больше о Verlet Integration (интеграции с Verlet), ознакомьтесь со следующей статьей Томаса Якобсен:

  • http://graphics.cs.cmu.edu/nsp/course/15-869/2006/papers/jakobsen.htm