World Spline Graph
World Spline Graph - это удобный и эффективный метод размещения указанных узлов (называемых исходными узлами ) вдоль сплайн-графа (его вершин и ребер). Это не одноцелевой объект, предназначенный только для создания дорог. Его также можно использовать для веревок, цепей, труб и любых объектов, имеющих форму, повторяющую изогнутую траекторию. Он разработан, чтобы помочь художникам быстро создавать различные сложные конструкции из типичных базовых элементов, расположенных вдоль пространственных кривых, таких как, например, трубы на нефтеперерабатывающем заводе.
Сплайн-граф определяется набором точек p0, p1, ... pn и набором ребер или сегментов (кубические сплайны Безье), которые соединяют некоторые или все эти точки.
Каждый сегмент определяется начальной (pSTART) и конечной (pEND) точкой, а также координатами касательного вектора в этих точках, которые определяют кривизну сегмента (tSTART и tEND соответственно). Точки, которые используются более чем двумя сегментами, называются перекрестки .
Исходные узлы (в настоящее время Static Mesh, Skinned Mesh и Projected Decal) могут быть размещены в точках и вдоль сегментов сплайн-графа. Каждой точке и сегменту может быть назначен один или набор исходных узлов. Для каждого отдельного исходного узла, назначенного сегменту, можно выбрать один из следующих режимов:
- stretching - исходные узлы растянуты по отрезку сплайна.Режим Stretching доступен только для статических сеток.
- tiling - исходные узлы дублируются вдоль сегмента сплайна.
- adaptive (комбинация первых двух) - исходные узлы дублируются вдоль сегмента сплайна, но длина каждого узла (растяжения) определяется кривизной соответствующей части сегмента. Таким образом, длинные узлы размещаются вдоль прямых частей сегментов, а короткие - вдоль изогнутых частей, обеспечивая разумный баланс между правдоподобным видом и производительностью.
Например, сегменту могут быть назначены два исходных узла: один, представляющий дорогу (растянутый), а другой - для фонарей проезжей части (выложенный плиткой с зазор ).
В сцену может быть добавлено произвольное количество узлов WorldSplineGraph, поскольку она использует ряд оптимизаций (например, запекание элементов в большие сегменты и т. д.) Для обеспечения приемлемой производительности для больших площадей.
Координаты вектора UP дополнительно сохраняются для каждой точки сегмента. Этот вектор используется для определения ориентации узлов, расположенных вдоль сегментов сплайн-графа. По умолчанию этот вектор параллелен оси Z. Вектор ВВЕРХ не влияет на кривизну самого сегмента сплайна.
SDK включает надстройку Road Tool Constructor с набором готовых к использованию ресурсов (участки дорог и различные типы перекрестков), которые можно использовать в качестве строительных элементов для упрощения создания дорог.
- он не может быть преобразован в Node Reference.
- он не поддерживается Node Layers.
Смотрите также#
- Статья о классе WorldSplineGraph, чтобы узнать, как управлять мировыми сплайн-графами через API
- Статья о классе SplinePoint, чтобы узнать, как управлять точками сплайнового графа через API.
- Статья о классе SplineSegment, чтобы узнать, как управлять сегментами сплайн-графа через API
- Пример C ++ для класса WorldSplineGraph, показывающий, как управлять сплайн-графами и генерировать геометрию по сегментам графа: source / samples / Api / Nodes / WorldSplineGraph
- Сэмплы, иллюстрирующие варианты использования WorldSplineGraph, входящие в комплект Samples:
- world_spline_graph/roads - дороги, созданные на поверхности местности
- world_spline_graph/ropes - канаты, цепи и тросы
Создание World Spline Graph#
Чтобы создать новый World Spline Graph, сделайте следующее:
- ДобавитьWorld Spline Graphузел: на Строка меню , выберитеCreate -> Spline Graph.
- Укажите имя существующего файла сплайна (*.spl), которое будет использоваться для новогоWorld Spline Graphили новое имя, чтобы создать сплайн с нуля.
Помните, что файлы *.world хранят только данные узла WorldSplineGraph(преобразование, список исходных узлов и т. д.), В то время как сами сплайн-графы хранятся в отдельных файлах *.spl. Чтобы сохранить созданный вами в мире сплайн-граф, щелкните Save Spline на вкладке Parametersи укажите для него имя файла.
- Отредактируйте сплайн-граф, управляя его точки а также сегменты .
- Назначать требуемые исходные узлы к точкам и сегментам сплайн-графа.
Управляющие точки#
Добавление новой точки#
Новые точки добавляются к сплайновому графу путем клонирования существующих. Чтобы добавить новую точку, сделайте следующее:
- Выберите файл World Spline Graph.
- Выберите желаемую точку, которую хотите клонировать (появится манипулятор Move).
- Нажмите Ctrl + D на клавиатуре (будет создана новая точка).
- Используйте манипулятор Move, чтобы расположить новую созданную точку.
Регулировка положения точки#
Чтобы настроить положение точки, выполните следующие действия:
- Выберите файл World Spline Graph.
- Выберите нужную точку (появится манипулятор Move).
- Используйте манипулятор перемещения, как если бы вы перемещали узел.
Вы также можете настроить положение выбранной точки через раздел Spline Points вкладки Parameters:
Регулировка касательной точки#
Касательные определяют кривизну сегмента сплайна. Чтобы скорректировать касательную в точке, сделайте следующее:
- Выберите файл World Spline Graph.
- Выберите нужную точку (появится манипулятор Move).
- Выберите желаемую касательную (если выбранная точка является общей для нескольких сегментов, для нее будет отображаться несколько касательных). Когда вы выбираете касательную, рядом с ней появляется манипулятор перемещения.
- Используйте манипулятор Move, как если бы вы перемещали узел (форма соответствующего сегмента изменится).
Регулировка вектора UP точки#
Вектор вверх управляет ориентацией узлов, расположенных вдоль сегмента сплайна. Чтобы скорректировать касательную в точке, сделайте следующее:
- Выберите файл World Spline Graph.
- Выберите нужную точку (появится манипулятор Move).
- Выберите желаемый вектор ВВЕРХ (если выбранная точка является общей для нескольких сегментов, для нее будет отображаться несколько векторов ВВЕРХ).
- Переключитесь на манипулятор поворота и используйте его для регулировки желаемого угла, как если бы вы вращали узел (ориентация узлов, размещенных вдоль соответствующего сегмента, изменится).Вы сможете увидеть эффект только тогда, когда узел будет назначен соответствующему сегменту.
- Используйте манипулятор Move, как если бы вы перемещали узел (форма соответствующего сегмента изменится).
Слияние точек#
Иногда может потребоваться объединить определенные точки (например, чтобы замкнуть сплайн). Чтобы объединить две или более точек в одну, выполните следующие действия:
- Выберите файл World Spline Graph.
- Выберите точки, которые вы хотите объединить, с помощью инструмента выделения области или по одной, удерживая нажатой клавишу Shift.
- Щелкните правой кнопкой мыши точку, в которую вы хотите объединить выбранные, и выберите Merge To This Point.
- Все точки будут объединены в одну общую для сегментов, которым принадлежали объединенные точки.
Удаление точки#
Чтобы удалить точку (точки) сплайн-графика, выполните следующие действия:
- Выберите файл World Spline Graph.
- Выберите точки, которые вы хотите удалить, с помощью инструмента выделения области или одну за другой, удерживая нажатой клавишу Shift.
- Нажмите клавишу Del .
Управление сегментами#
Добавление нового сегмента#
Чтобы добавить новый сегмент к сплайновому графику, выполните следующие действия:
- Выберите файл World Spline Graph.
- Выберите начальную точку для добавления нового сегмента (появится манипулятор перемещения).
- Нажмите и удерживайтеShiftи используйте манипулятор Move, чтобы расположить конечную точку нового сегмента.
- Чтобы создать прямой сегмент, вы должны перетащить манипулятор в направлении касательной в начальной точке.
- Новый добавленный сегмент использует все настройки (назначенные узлы, режимы размещения и параметры) предыдущего.
Вы также можете клонировать сегменты, выделив их и переместив с нажатой клавишей Shift, или нажав Ctrl + D и поместив клон с помощью манипулятора Move.
Удаление сегмента#
Чтобы удалить сегмент (-ы) сплайн-графика, выполните следующие действия:
- Выберите файл World Spline Graph.
- Выделите сегменты, которые вы хотите удалить, с помощью инструмента выделения области или по одному, удерживая нажатой клавишу Shift.
- Нажмите клавишу Del .
Управление исходными узлами#
Как описано выше, один или набор исходные узлы может быть назначен каждой точке или сегменту сплайнового графика.
Работа с сегментами#
Чтобы назначить исходный узел выбранным сегментам, выполните следующие действия:
- Выберите желаемые сегменты.
- Щелкните Add Node на вкладке Parameters.
- В открывшемся окне выберите нужный узел и нажмите OK.Исходные узлы, которые должны быть назначены сегментам и точкам, хранятся в файлах *.node. Файл узла должен содержать Static Mesh, Skinned Mesh или Projected Decal в качестве корневого узла.
Для каждого из исходных узлов, назначенных выбранному сегменту (-ам), на вкладке Parameters доступны следующие настройки:
Node | Путь к файлу *.node, содержащему исходный узел. |
---|---|
Forward Axis | Определяет, какая ось исходного узла должна быть ориентирована вдоль сплайна. |
Placement Mode | Тип создаваемых объектов. Одно из следующих:
|
Adaptive Threshold | Определяет, насколько можно растянуть экземпляр исходного узла в режиме размещения Adaptive, чтобы покрыть всю длину сегмента. Доступно только для режима размещения Adaptive. |
UV Tiling | Включает мозаику текстур исходного узла. |
Gap | Определяет зазор (в единицах) между соседними экземплярами на исходном узле для режима размещения Tiling. Доступно только для режима размещения Tiling. |
Работа с точками#
Чтобы назначить исходный узел выбранной точке (точкам), выполните следующие действия:
- Выберите желаемую точку (точки).
- Щелкните Add Node на вкладке Parameters.
- В открывшемся окне выберите нужный узел и нажмите OK.
Для перекресток Для правильного поведения точки должен быть назначен узел ObjectMeshSkinned, а количество его костей должно соответствовать количеству сегментов сплайна, подключенных к этой точке.
Для каждого из исходных узлов, назначенных выбранной точке (точкам), на вкладке Parameters доступны следующие настройки:
Node | Путь к файлу *.node, содержащему исходный узел. |
---|---|
Variant | Есть несколько возможных вариантов для перекрестка . Этот ползунок позволяет выбрать наиболее подходящий. Этот параметр влияет только на исходные узлы, представляющие соединения (ObjectMeshSkinned). |
Перекрестки#
Перекрестки должны правильно взаимодействовать со всеми входящими сегментами, обеспечивая плавные переходы. Для этого используются исходные узлы ObjectMeshSkinned.
Исходные узлы, которые будут использоваться для соединений, должны соответствовать следующим требованиям:
- Соединения соединения в UnigineEditor должны иметь оси Y, ориентированные от центра соединения к краям соответствующих ответвлений.
- Внешний стык каждого ответвления должен быть размещен точно в центре его внешнего края, веса для внешних вершин ответвления должны быть максимальными для внешнего стыка (т. Е. На внешние вершины ответвления влияет только внешний стык).
- Поскольку соединение и сегмент представлены отдельными сетками, текстуры и их карты UVдолжны обеспечивать плавные переходы между сегментами и сегментами.
- Сегмент может иметь соединения на обоих концах, поэтому текстура, используемая для сегмента, должна быть симметричной, по крайней мере, ее края.
- Особые требования к дорогам:
- Перекресток, а также участок дороги должны быть представлены парой сеток (насыпь и сама дорога). Сетка насыпи используется для плавного перехода с поверхностью ландшафта. Просто включите состояние Terrain Lerpдля материала, назначенного насыпи.
- Для обеспечения правильной деформации сегментов и перекрестков триангуляция дороги и насыпи должна совпадать. Это предотвращает проникновение сеток друг в друга при перемещении точек шлицев вверх и вниз.