# Инструменты процедурной сетки

Dash содержит различные инструменты, которые создают геометрию: Road Tool, Terrain Tool, Cable Tool и т. д...

## Запекание

Все эти инструменты создают актор типа `DashPreviewMeshComponent`. Этот пользовательский тип позволяет нам полностью контролировать производительность и алгоритмы генерации меша.

Первое, что нужно знать о инструментах на основе мешей, — это то, что иконка запекания <img src="https://3255232229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYp9tAkqjcwFDufAaviIa%2Fuploads%2F9ANCQGpYmXbpLX6dXgVz%2Fbake_color.png?alt=media&#x26;token=1339c809-31ab-46e8-9bb8-2f1c20b64b6c" alt="" data-size="line"> на панели Tools Panel всегда находится на расстоянии одного клика и удалит инструмент, прикреплённый к вашему мешу, а затем преобразует меш Dash в обычный статический меш UE5.

Есть много причин, по которым вы можете захотеть запечь сгенерированные Dash меши:

* Чтобы сделать их пригодными для использования/видимыми на других компьютерах, где не установлен Dash.
* Использование Nanite, покраски вершин и других возможностей UE.
* Чтобы очистить сцену от инструментов, которые вам больше не нужны после завершения редактирования.

<figure><img src="https://3255232229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYp9tAkqjcwFDufAaviIa%2Fuploads%2FflmoSeFJ5NWWbAtxNh6D%2Fimage.png?alt=media&#x26;token=7f121558-6311-4645-8cc8-e615944fae62" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://3255232229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYp9tAkqjcwFDufAaviIa%2Fuploads%2FhO18k76eIgchjbFsdewi%2Fimage.png?alt=media&#x26;token=baeafbbd-db1c-4dae-bc97-b5571bf3da06" alt=""><figcaption></figcaption></figure>

## Terrain Tool

Создаёт процедурный меш, используемый как поверхность земли — этот ландшафт можно настраивать по своему усмотрению с помощью простых в использовании контролов внутри Terrain Tool. Например, вы можете управлять высотой, турбулентностью и масштабом UV, а также деформировать его с помощью карты высот или сплайнов. Вы можете найти Terrain Tool, выполнив поиск в Dash или через меню Create.&#x20;

{% embed url="<https://streamable.com/0nb3xh>" %}

## Cable Tool

Создаёт процедурные кабели между сплайнами, объектами или распределённые поверх мешей — он поставляется с множеством различных настроек, благодаря которым вы можете создавать кабели полностью процедурно проще, чем когда-либо прежде. Идеально подходит для городских или джунглевых окружений в Unreal Engine 5. Конечно, вы получаете полный контроль над количеством кабелей, их размером, гравитацией и многим другим! Вы можете найти Cable Tool, выполнив поиск в Dash или в меню Create.

{% embed url="<https://streamable.com/e6dnv0>" %}

## Vine Tool

Создаёт лианы на указанных поверхностях — это идеально подходит для любого лесного или заросшего окружения, так как позволяет создавать процедурные лианы на любой поверхности или ассете всего за 2 секунды. Поскольку на лианах обычно есть листья, мы сделали так, чтобы можно было очень просто зажать CTRL и перетащить листовой атлас из Content Library Dash на поверхность, и уже через 1 секунду у вас будут лианы с прикреплёнными листьями, распределённые по всему ассету/поверхности. Затем вы можете управлять степенью роста, размером ветвей и листьев и многим другим. Проще не бывает!&#x20;

Конечно, вы также можете открыть Vine Tool, выполнив поиск в Dash. Затем вы можете назначить источник (это может быть пустой актор или кривая) и поверхность, на которой должны расти лианы. Третий способ открыть его — найти Draw Vines в Dash; это откроет наш режим Draw Mode, и как только вы нарисуете кривую, вы увидите, что мы автоматически создадим вдоль неё лианы! Выйти из этого режима Draw Mode можно нажатием ESC или кнопки STOP.&#x20;

{% embed url="<https://youtu.be/Y_Ja4n3RSf0>" %}

## Road Tool

Создаёт меш дороги/пути вдоль входной кривой/сплайна — если вам когда-либо требовалась процедурная дорога в UE5, вы будете рады использовать это! Просто нарисуйте сплайн с помощью Dash, назначьте его инструменту road tool, и вуаля — у вас есть дорога, идеально повторяющая форму вашего сплайна. Если вам нужно, чтобы она ещё точнее совпадала с поверхностью, вы можете найти Projection Mask в разделе Geometry. Затем, если вы измените сплайн или лежащую под ним поверхность, дорога автоматически подстроится. Вы можете найти Road Tool, выполнив поиск в Dash.

И, как всегда, вы можете настраивать дорогу обычными ползунками и переключателями, получая идеальный результат для вашего окружения. Совет: после создания дороги вы можете назначить её как proximity mask в Surface Scatter, чтобы на дороге не было травы и т. д.

{% embed url="<https://streamable.com/587zqa>" %}

## Quick Pipe

Создаёт меши труб вдоль входных кривых — если вы думаете, что легко нарисовать сплайны именно так, как вам нужны трубы/кабели, Quick Pipe — для вас. Просто назначьте инструменту один или несколько сплайнов, и вы мгновенно получите меши, созданные вдоль сплайнов. Эти меши, конечно, настраиваемые с помощью наших обычных ползунков и переключателей! Вы можете найти Quick Pipe, выполнив поиск в Dash.

{% embed url="<https://streamable.com/zqn10t>" %}

## Draw Mesh

Если вам нужен меш нестандартной формы, наш инструмент Draw Mesh позволяет нарисовать любую форму, и мы создадим базовый меш в этой форме. Вы можете открыть его через меню Create или выполнив поиск. После запуска вы попадёте в наш режим Draw Mode, и как только вы нарисуете любую форму, мы создадим для вас соответствующий меш. Вы можете продолжать и создавать сколько угодно, а затем просто выйти из режима Draw Mode с помощью ESC или кнопки STOP и удалить те, которые вам не нравятся.&#x20;

{% embed url="<https://streamable.com/oyz2os>" %}

## Mesh Pattern

Mesh Pattern — это инструмент, предназначенный для создания процедурных, тайловых паттернов, либо с использованием встроенных пресетов, либо путём создания собственных на основе пользовательских ассетов и паттернов. Он идеально подходит для крыш, стен, полов или любых других искусственных поверхностей, которым нужна большая глубина и детализация, чем у простого материала.

Вы можете найти его через поиск или на панели Dash, в категории Create -> Mesh Tools. Чтобы начать использовать его, просто назначьте одну или несколько поверхностей, и по умолчанию он будет использовать пресет Tile A на вашей поверхности.

{% embed url="<https://streamable.com/3xd1jm>" %}
Базовая настройка Mesh Pattern
{% endembed %}

#### Пресеты

Чтобы охватить большинство сценариев использования Mesh Pattern, мы включили более 30 высококачественных пресетов с различными ассетами и паттернами. Например, пресеты для Broken Floor, HerringBone, Tiles и Bricks. Чтобы переключиться на другой пресет, просто раскройте выпадающий список в верхней части Mesh Pattern и выберите другой пресет. Если ассеты этого пресета ещё не присутствуют в уровне, они будут автоматически добавлены.&#x20;

{% embed url="<https://streamable.com/u9rfbk>" %}
Выпадающий список пресетов Mesh Pattern
{% endembed %}

#### Mesh Pattern на кривых/сплайнах

Вместо того чтобы назначать в Mesh Pattern меш или плоскую поверхность как объект поверхности, вы также можете использовать кривую или сплайн — это идеально для создания заборов или стен. При использовании кривых из нашего инструмента Draw Curves вы получите наилучшие результаты, если будете рисовать преимущественно прямые кривые. Если вы хотите более округлые формы, лучше использовать наш инструмент Draw Spline.&#x20;

{% hint style="info" %}
Когда сплайн используется как объект поверхности, создаётся имплицитный меш, который экструзит сплайн, а высота определяется по Z-масштабу объектных ассетов, использованных для создания паттерна.&#x20;
{% endhint %}

{% embed url="<https://streamable.com/8buczm>" %}
Использование кривых и сплайнов с Mesh Pattern
{% endembed %}

#### Настройки

Как и в любых инструментах Dash, вы, конечно, можете точно настроить результат по своему вкусу. Мы рекомендуем экспериментировать с настройками и читать их описания при наведении курсора, но вот краткий обзор доступных параметров:

* Базовые свойства: можно настроить масштаб тайла, угол, отступ и заглубление.&#x20;
* Noise: можно добавить шум либо к точкам, либо к самим мешам.
* Projection: можно спроецировать/«вдавить» паттерн на один или несколько объектов.&#x20;
* Slice Tiles: используйте Boolean mesh, чтобы вырезать объекты паттерна в определённой форме, например кубом или сферой.&#x20;
* Proximity Mask: замаскировать область вокруг объекта/кривой или оставить её только рядом с объектом/кривой.&#x20;
* Noise Mask: удалять случайные объекты в паттерне согласно управляемому шуму.&#x20;
* Object Masking: замаскировать область вокруг объекта или оставить её только рядом с ним с помощью raycasting.
* Pattern Details: добавить и управлять вариативностью паттерна. И создать Area mesh для пользовательских пресетов.&#x20;

{% embed url="<https://streamable.com/zd5aww>" %}
Демонстрация настроек Mesh Pattern
{% endembed %}

Может случиться, что повторение паттерна не очень хорошо совпадает с поверхностью, и тогда вы можете использовать функцию slice, чтобы вырезать ваши тайлы в любую произвольную форму с помощью Boolean mesh. Эта функция также полезна, если вы хотите «вырезать» в паттерне идеальный квадратный или круговой узор.&#x20;

{% embed url="<https://streamable.com/z5rr1i>" %}
Функция Slice в Mesh Pattern
{% endembed %}

{% hint style="warning" %}
Когда вы используете функцию Slice в Mesh Pattern, мы создаём для этого новые деформированные меши в outlier. Эти меши являются специальными мешами Dash, поэтому их нужно запекать перед выпуском игры. Просто выберите slice-меши и найдите Bake Meshes в Dash, чтобы преобразовать их в обычные статические меши.\
\
Использование функции slice — тяжёлый процесс, поэтому когда она не нужна, обязательно снимите флажок Enable, чтобы получить максимально возможную производительность Mesh Pattern.&#x20;
{% endhint %}

При использовании 3D-мешей вместо плоских плоскостей паттерн применяется к самой большой плоской поверхности в локальном пространстве. Если вы хотите точно контролировать, где именно появится паттерн, вы можете использовать Mesh Pattern на плоской плоскости и спроецировать его на 3D-меш и конкретную поверхность/сторону. Чтобы получить наилучший результат, совместите угол плоскости с углом поверхности, а затем экспериментируйте со значением Max Distance, чтобы убедиться, что он не проецируется никуда, кроме нужных мест.&#x20;

{% embed url="<https://streamable.com/js2euf>" %}

{% hint style="warning" %}
При использовании функции Projection в Mesh Pattern вам может понадобиться переключатель flip в зависимости от того, находится ли ваш проекционный меш ниже или выше меша поверхности.&#x20;
{% endhint %}

#### Пользовательские пресеты

Если наши объекты и паттерны пресетов не покрывают ваш сценарий, вы также можете создавать собственные паттерны из любых ассетов. Затем их можно сохранять и легко использовать через список пресетов во всех ваших проектах.&#x20;

{% hint style="warning" %}
Старайтесь создавать пользовательские пресеты в как можно более низкой версии Unreal, так как вы не сможете использовать их в более низкой версии Unreal.&#x20;
{% endhint %}

Чтобы создать пользовательский пресет, просто выберите один или несколько объектов в сцене и назначьте их как Pattern Objects. После этого вы заметите, что расположение этих ассетов имеет значение как относительно друг друга, так и относительно оси Z. Когда вы перемещаете, вращаете и масштабируете объекты, вы можете видеть, как паттерн подстраивается на вашей поверхности.&#x20;

{% hint style="warning" %}
Вам нужно разместить ваши пользовательские ассеты на отметке Z 0.0, иначе они будут парить над поверхностью. Вы можете попробовать сдвигать их вверх/вниз, чтобы управлять тем, насколько высоко над поверхностью они будут отображаться.&#x20;
{% endhint %}

{% embed url="<https://streamable.com/n4xk9w>" %}
Настройка пользовательского пресета Mesh Pattern
{% endembed %}

{% hint style="warning" %}
Наилучший результат вы получите, если будете вращать Pattern Objects только с шагом, кратным 90 градусам.&#x20;
{% endhint %}

Для большинства паттернов вам понадобится специальный «area object», чтобы определить, насколько большим является паттерн относительно объектов паттерна. Вы можете создать и добавить actor области с помощью кнопки "Create Area" в нижней части инструмента Mesh Pattern.&#x20;

<figure><img src="https://3255232229-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYp9tAkqjcwFDufAaviIa%2Fuploads%2FO3IM0R6IK2f45x7LKukL%2Fimage%20(17).png?alt=media&#x26;token=ebe31b09-ff3b-427e-bd58-13241d224b0a" alt="" width="563"><figcaption><p>Красным будут точки распределения, относительно зелёной области, определённой actor'ом области</p></figcaption></figure>

Например, вы можете видеть, как на мой результат влияют изменения объекта области или моих ассетов относительно объекта области.&#x20;

{% embed url="<https://streamable.com/jiha9c>" %}

Теперь, когда вы определили свой паттерн с правильным повторением, возможно, вы захотите добавить в него немного вариативности.&#x20;Разместив другие объекты очень близко к тем, которые определяют паттерн, и добавив их как Pattern Objects, вы можете указать инструменту обрабатывать их как вариации через раздел Pattern Details. Установите Variation Threshold выше нуля и поэкспериментируйте с количеством вариаций и размещением ассетов вариации.&#x20;

{% embed url="<https://streamable.com/2slctw>" %}
Пример вариативности Mesh Pattern
{% endembed %}

Когда вы будете довольны своими Pattern Objects и их паттерном, вы можете сохранить этот паттерн как пользовательский пресет, чтобы легко использовать его повторно. Просто откройте выпадающий список пресетов и используйте кнопку Create Pattern, чтобы добавить ваш пресет в выпадающий список. При загрузке этого пользовательского пресета в другом проекте, если объекты не являются частью этого проекта, они будут автоматически добавлены.&#x20;

{% hint style="warning" %}
Если вы не видите свой паттерн при его выборе, возможно, вы получили ошибку LoadAsset в журнале вывода. Чтобы исправить это, удалите эти недавно добавленные объекты из outlier и снова назначьте пользовательский пресет, и всё будет работать как должно.
{% endhint %}

{% embed url="<https://streamable.com/j7hoob>" %}
Загрузка и сохранение пользовательских пресетов Mesh Pattern
{% endembed %}

#### Настройка материалов паттерна

Если вы хотите настроить материалы на включённых в Mesh Pattern мешах пресетов, это можно сделать через инструмент Material Edit. Выберите выход Mesh Pattern в viewport, а затем откройте Material Edit через список Active Tools в левом верхнем углу панели Tools Panel.&#x20;

Здесь вы сможете настроить базовые параметры, такие как Hue, Saturation, Brightness и т. д., а также добавить слой Dirt, Snow или Rain. И новое дополнение — возможность добавить цветовую вариацию прямо из инструмента Material Edit. По умолчанию она включена и установлена на максимальную силу, чтобы пресеты выглядели как можно лучше, но если вы хотите отключить её или изменить силу вариации, вы можете сделать это через настройки variation в Material Edit для Mesh Pattern.&#x20;

{% embed url="<https://streamable.com/5eg5af>" %}

## FAQ

<details>

<summary>Могу ли я редактировать инструменты процедурных мешей после их закрытия?</summary>

Да, вы, конечно, можете продолжать редактировать инструменты мешей в Dash, пока вы их не запекли и не разорвали связь с инструментом. Откройте панель Tools Panel с помощью кнопки Edit в Dash, а затем просто выберите ваш меш.&#x20;

Если это не показывает ваш инструмент ожидаемым образом, убедитесь, что другой инструмент не закреплён в панели Tools Panel, а также проверьте, можете ли вы найти инструмент, открыв список Active Tools с помощью верхней левой кнопки на панели Tools Panel.

</details>

<details>

<summary>Могу ли я рассеивать или использовать другие инструменты Dash поверх этих инструментов мешей?</summary>

Если вы, например, создали ландшафт с помощью Dash, вы затем можете рассеять на нём траву с помощью Surface Scatter и создать и спроецировать дорогу с помощью road tool. Если после этого вы снова измените ландшафт из панели Tools Panel, и рассеивание, и спроецированная дорога, конечно, также соответствующим образом подстроятся.&#x20;

</details>
