Учебник

Отказ от ответственности: в этом руководстве предполагается, что читатель имеет базовые представления о концепциях трехмерного моделирования и сценариях с чертежами в UE4. Большая часть информации, то есть основа для сценария построения этой системы, взята из этого видеоурока. Если вы просто хотите перейти к созданию этой системы без анализа или определения, посмотрите видео и поблагодарите Playful Synapse за отличное руководство.

вступление

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

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

Понимание сплайнов

Так как же сплайн-сетка работает в UE4? Что ж, сначала нам нужно взглянуть на то, что именно представляет собой сплайн-компонент в контексте UE4. По сути, это линейная линия с двумя концами, называемыми точками. К сплайну между его начальной и конечной точками можно добавить больше точек, которые и придают форму сплайну. Чем больше очков вы добавите, тем больше вариантов формы вы сможете получить. Используя эту концепцию, мы добавляем компонент сетки сплайна, который применяет статическую сетку или сетки к сплайну (в зависимости от количества точек) и выравнивает сетку вдоль направления линии между точками. Начиная с добавления сплайновой сетки, у вас будет 2 точки, составляющие начало и конец сплайна, а также сплайновой сетки. Но когда вы добавляете еще одну точку между начальной и конечной точками, чертеж фактически добавляет вторую сетку, используя 3 точки в качестве начальных и конечных координат для начала и конца вашей сетки, используя прямой вектор, который вы определяете в схеме. . (Я перейду к векторам через секунду.) Вот диаграмма, иллюстрирующая концепции того, как сплайны, точки сплайна и сплайновые сетки работают вместе:

Скажем, ваш кусок туннеля движется «вперед» в смысле прохождения через туннель по оси X; вектор вперед для компонента сплайн-сетки будет в направлении X. Если бы это было так, но вместо этого вы использовали ось Y в качестве прямого вектора, сетка была бы масштабирована и дублирована рядом, вместо того, чтобы увеличивать длину самого туннеля.

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

Начиная

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

Когда вы импортируете сетку туннеля, не забудьте снять флажок Auto-Generate Collisions, так как я сгенерировал файл fbx с включенными столкновениями. После того, как вы импортировали сетку, щелкните правой кнопкой мыши в браузере содержимого и в разделе «Создать базовый актив» выберите «Класс Blueprint». В окне «Выбрать родительский класс» выберите «Актер». Назовите актера своего чертежа как-нибудь вроде «BP_Cave» или что-нибудь подобное. (Примечание. Было бы неплохо выработать привычку использовать соглашения об именах, чтобы лучше организовать свою библиотеку активов.)

Дважды щелкните на своем новом актере чертежа, и вы увидите всплывающее окно редактора чертежей. Первое, что вам нужно сделать, это нажать «Добавить компонент» и выполнить поиск по запросу «Spline Component». Перейдите к сценарию построения, и мы приступим к созданию сценария, который будет управлять нашим сплайновым актером.

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

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

И вот последняя часть сценария:

Это устанавливает начальную и конечную точки сетки или сеток. Чтобы получить доступ к этому узлу, вам нужно перетащить возвращаемое значение на узел Add Spline Mesh Component.

И это все, что касается строительного сценария! Теперь вы можете перетащить свой чертеж в редактор уровней и поэкспериментировать с ним. Когда вы впервые вставляете его, первые две точки могут быть близко друг к другу, и может показаться, что их намного больше, чем просто две первые точки. Это связано с тем, что каждая точка также имеет касательную полосу, которую можно использовать для управления интенсивностью кривой между каждой точкой сплайна. (Если вы посмотрите на первую диаграмму, вы заметите, что сетка выглядит прямой, но сплайновые линии изогнуты, это происходит из-за того, что точки сплайна аппроксимируют свою форму между точками на авто-кривой, а не линейно.) точки сплайна, выберите точку, а не касательную планку, и переместите ее, и вы увидите, как происходит деформация сетки. При перемещении конечной точки от начальной точки сетка растягивается и растягивается в соответствии с положением точки сплайна. Вы можете щелкнуть правой кнопкой мыши по сплайну между начальной и конечной точками и добавить точку вдоль вашего сплайна, которая затем разделит сетку на два экземпляра этой сетки, используя местоположение этой точки сплайна, чтобы установить конечное положение вдоль первых компонентов сетки. вектор вперед и начальное положение вдоль вектора вперед компонентов второй сетки. Помимо масштабирования / наклона сетки, она может также деформировать ее по пути сплайна, но насколько прямая или изогнутая эта деформация зависит от того, сколько вершин имеет ваша сетка. Если бы вы использовали кубическую сетку без дополнительных вершин, кроме тех, которые необходимы для формирования формы куба, деформация была бы очень жесткой и резкой, но если бы у вас была разбитая кубическая сетка с несколькими дополнительными вершинами, более изогнутой, плавной деформацией произойдет, поскольку дополнительные вершины будут служить еще, так сказать, «точками кривой»:

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

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

И вот оно! Вы успешно создали план сплайн-сетки! Похлопайте себя по спине!

Предостережения

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