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для материала, назначенного насыпи.
- Для обеспечения правильной деформации сегментов и перекрестков триангуляция дороги и насыпи должна совпадать. Это предотвращает проникновение сеток друг в друга при перемещении точек шлицев вверх и вниз.
Экспорт World Spline Graph#
World Spline Graph хорошо работает как инструмент для размещения и деформации объектов, но из-за некоторых технических проблем его сложно использовать в конечных приложениях в качестве результирующего объекта. Поэтому, как только расположение объектов окончательное, требуется экспортировать сплайн-граф в файл .mesh или .fbx.
Чтобы экспортировать World Spline Graph, щелкните его правой кнопкой мыши в иерархии World Nodes, выберите Export to и предпочтительный вариант:
Операция экспорта создает уникальную геометрию, которую вы можете использовать в своих проектах, как и любую другую модель, без каких-либо дополнительных ограничений.
Ограничения#
Из-за природы сетки будут визуальные артефакты, связанные с точностью плавания, если World Spline Graph экспортируется в очень большой объект (около 10 000 м от начала координат в обе стороны). Мы рекомендуем разбивать такие большие объекты на более мелкие.
Проблема может возникнуть и в том случае, если World Spline Graph хоть и не очень большой, но находится очень далеко от начала координат (около 10 000 м и дальше). В этом случае мы советуем экспортировать его в FBX, не сохраняя точку поворота (опция Save root transform должна быть отключена), или сбросить позицию World Spline Graph в исходное положение перед экспортом в Mesh.