# 程序化网格工具

Dash 包含各种用于生成几何体的工具：道路工具、地形工具、线缆工具等……

## 烘焙

这些工具都会生成一个类型为 `DashPreviewMeshComponent`的 Actor。这个自定义类型使我们能够完全控制网格生成的性能与算法。

关于基于网格的工具，首先要知道的是，工具面板上的烘焙图标 <img src="https://577194271-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"> 始终只需点击一下即可，它会删除附加到网格上的工具，然后将 Dash 网格转换为普通的 UE5 静态网格。

你可能想要烘焙 Dash 生成网格的原因有很多：

* 让没有安装 Dash 的其他电脑也能使用/看到它们。
* 使用 Nanite、顶点绘制以及其他 UE 功能。
* 在你完成编辑后，清理场景中不再需要的工具。

<figure><img src="https://577194271-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>

除了工具面板中的烘焙功能外，你也可以选中该网格的组件，它会有一个按钮 **创建静态网格** 用来将其转换为静态网格。

<figure><img src="https://577194271-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>

## 地形工具

创建一个用于作为地面的程序化网格——这个地形可以通过地形工具中易于使用的控件按你的需求进行调整。例如，你可以控制高度、湍流和 UV 缩放，也可以使用高度图或样条线对其进行变形。你可以在 Dash 中搜索它，或者在创建菜单中找到地形工具。&#x20;

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

## 线缆工具

在样条线、对象之间创建程序化线缆，或在网格表面上随机分布线缆——它带有许多不同设置，让你比以往更轻松地完全程序化地创建线缆。非常适合 Unreal Engine 5 中的城市环境或丛林环境。当然，你可以完全控制线缆数量、大小、重力以及更多内容！你可以在 Dash 中搜索，或在创建菜单中找到线缆工具。

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

## 藤蔓工具

在指定表面上创建藤蔓——这非常适合任何森林或杂草丛生的环境，因为它让你能在任意表面或资产上于 2 秒内创建程序化藤蔓。由于藤蔓通常会带有叶子，我们让你只需按住 CTRL，将 Dash 内容库中的叶片图集拖放到表面上，1 秒内你就能得到带叶子的藤蔓分布在整个资产/表面上。然后你可以控制生长量、枝条和叶子的大小，以及更多参数。再简单不过了！&#x20;

当然，你也可以在 Dash 中搜索并打开藤蔓工具。然后你可以指定一个起点（可以是空 Actor 或一条曲线）以及你希望藤蔓生长其上的表面。打开它的第三种方式是在 Dash 中搜索 Draw Vines，这会打开我们的绘制模式；一旦你绘制了一条曲线，你会看到我们会自动沿着这条曲线为你创建藤蔓！你可以按 ESC 或 STOP 按钮退出此绘制模式。&#x20;

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

## 道路工具

沿输入曲线/样条线创建道路/路径网格——如果你曾经想在 UE5 中拥有一条程序化道路，你会很乐意使用它！只需用 Dash 画一条样条线，将其分配给道路工具，瞧，你就有了一条与样条线形状完美匹配的道路。如果你需要它更贴合你的表面，可以在几何部分找到投影遮罩。然后，如果你更改样条线或底层表面，道路会自动调整。你可以在 Dash 中搜索找到道路工具。

一如既往，你可以使用常规滑块和开关来自定义道路，为你的环境获得完美结果。小提示：创建道路后，你可以将其分配为 Surface Scatter 中的接近遮罩，确保道路上没有草等物体。

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

## 快速管道

沿输入曲线创建网格管道——如果你觉得按自己想要的方式绘制样条线很简单，那么 Quick Pipe 就非常适合你。只需将一条或多条样条线分配给该工具，你就会立即获得沿样条线创建的网格。这些网格当然也可以通过我们常规的滑块和开关进行自定义！你可以在 Dash 中搜索找到 Quick Pipe。

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

## 绘制网格

如果你需要某种自定义形状的网格，我们的绘制网格工具允许你绘制任意形状，我们会基于该形状创建一个基础网格。你可以通过创建菜单打开它，或者通过搜索找到它。启动后你会进入我们的绘制模式，当你绘制任意形状时，我们会为你创建一个匹配的网格。你可以继续创建任意多个，然后只需按 ESC 或 STOP 按钮退出绘制模式，并删除那些你不喜欢的。&#x20;

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

## 网格图案

Mesh Pattern 是一个用于创建程序化、可平铺图案的工具，可以使用内置预设，也可以用自定义资产和图案创建自己的图案。它非常适合屋顶、墙壁、地板，或任何其他需要比简单材质更丰富深度与细节的人造表面。

你可以通过搜索或 Dash 栏，在 创建 -> 网格工具 分类中找到它。开始使用时，只需指定一个或多个表面，默认情况下它会在你的表面上使用 Tile A 预设。

{% embed url="<https://streamable.com/3xd1jm>" %}
网格图案基础设置
{% endembed %}

#### 预设

为了覆盖 Mesh Pattern 的大多数使用场景，我们包含了 30 多个高质量预设，具有不同的资产和图案。例如，破损地板、人字纹、瓷砖和砖块预设。要切换到另一个预设，只需展开 Mesh Pattern 顶部的下拉列表并选择另一个预设。如果所选预设的资产尚未存在于关卡中，它们会自动添加。&#x20;

{% embed url="<https://streamable.com/u9rfbk>" %}
Mesh Pattern 预设下拉菜单
{% endembed %}

#### 曲线/样条线上的网格图案

除了在 Mesh Pattern 中将网格或平面表面指定为表面对象外，你也可以使用曲线或样条线，这非常适合创建栅栏或墙壁。使用我们 Draw Curves 工具中的曲线时，如果你绘制的大多是直线曲线，效果最好。如果你想要更圆润的形状，最好改用我们的 Draw Spline 工具。&#x20;

{% hint style="info" %}
当使用样条线作为表面对象时，会创建一个隐式网格，沿样条线挤出，其高度由用于创建图案的资产对象的 Z 缩放决定。&#x20;
{% endhint %}

{% embed url="<https://streamable.com/8buczm>" %}
在 Mesh Pattern 中使用曲线与样条线
{% endembed %}

#### 设置

与任何 Dash 工具一样，你当然可以将结果精确调整到自己喜欢的样子。我们建议你尝试这些设置，并通过悬停查看描述，但下面是可用设置的摘要：

* 基础属性：你可以调整平铺缩放、角度、间距和下沉量。&#x20;
* 噪波：你可以对点本身或网格本身添加噪波。
* 投影：你可以将图案投影/推送到一个或多个对象上。&#x20;
* 切片平铺：使用布尔网格以特定形状切割图案对象，例如使用立方体或球体。&#x20;
* 接近遮罩：遮蔽对象/曲线周围的区域，或仅保留紧邻对象/曲线的部分。&#x20;
* 噪波遮罩：根据受控噪波移除图案中的随机对象。&#x20;
* 对象遮罩：通过射线检测遮蔽对象周围区域，或仅保留紧邻其旁边的区域。
* 图案细节：添加并控制图案变化。并为自定义预设创建一个区域网格。&#x20;

{% embed url="<https://streamable.com/zd5aww>" %}
网格图案设置展示
{% endembed %}

有时图案重复方式可能与表面不太匹配，这时你可以使用切片功能，通过布尔网格将你的平铺切成任意形状。如果你想在图案中“切出”一个完美的方形或圆形图案，这个功能也很有用。&#x20;

{% embed url="<https://streamable.com/z5rr1i>" %}
网格图案切片功能
{% endembed %}

{% hint style="warning" %}
当你使用 Mesh Pattern 的切片功能时，我们会在输出中为此创建新的变形网格。这些网格是特殊的 Dash 网格，因此在发布游戏前需要进行烘焙。只需选中这些切片网格，并在 Dash 中搜索 Bake Meshes，即可将它们转换为普通静态网格。\
\
使用切片功能是一个较重的过程，所以当不需要时，请确保取消勾选 Enable 选项，以获得 Mesh Pattern 的最佳性能。&#x20;
{% endhint %}

当使用 3D 网格而不是平面时，图案会应用到本地空间中最大的平面表面上。如果你想精确控制图案出现的位置，可以改为在平面上使用 Mesh Pattern，然后将其投影到 3D 网格及特定表面/侧面上。为了获得最佳效果，请将平面角度与表面角度匹配，然后试着调整 Max Distance 值，确保它不会投影到目标位置以外的其他地方。&#x20;

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

{% hint style="warning" %}
使用 Mesh Pattern 的投影功能时，你可能需要使用翻转开关，这取决于你的投影网格是在表面网格的下方还是上方。&#x20;
{% endhint %}

#### 自定义预设

如果我们提供的预设对象和图案不能满足你的使用场景，你也可以使用任意资产创建自己的图案。之后这些图案可以在所有项目中，通过预设列表轻松保存和使用。&#x20;

{% hint style="warning" %}
请尽量在尽可能低的 Unreal 版本中创建自定义预设，因为你无法在更低的 Unreal 版本中使用它们。&#x20;
{% endhint %}

要创建自定义预设，只需在场景中选择一个或多个对象，并将它们指定为图案对象。一旦这样做，你会注意到这些资产的摆放位置很重要，无论是彼此之间还是相对于 Z 轴而言。当你移动、旋转和缩放这些对象时，可以看到图案如何在你的表面上进行调整。&#x20;

{% hint style="warning" %}
你需要将自定义资产放在 0.0 的 Z 位置，否则它们会漂浮在表面之上。你可以尝试上下移动它们，以控制它们显示在表面上方多远。&#x20;
{% endhint %}

{% embed url="<https://streamable.com/n4xk9w>" %}
Mesh Pattern 自定义预设设置
{% endembed %}

{% hint style="warning" %}
最佳结果是只按 90 度的整数倍旋转图案对象。&#x20;
{% endhint %}

对于大多数图案，你需要一个特殊的“区域对象”来定义图案相对于图案对象有多大。你可以在 Mesh Pattern 工具底部使用实用按钮“创建区域”来创建并添加一个区域 Actor。&#x20;

<figure><img src="https://577194271-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;通过将其他对象放得非常靠近定义图案的对象，并将它们添加为图案对象，你可以让工具通过图案细节部分将它们视为变化。将 Variation Threshold 设为大于零，并尝试不同的变化数量以及变化资产的摆放位置。&#x20;

{% embed url="<https://streamable.com/2slctw>" %}
网格图案变化示例
{% endembed %}

当你对图案对象及其图案满意后，可以将此图案保存为自定义预设，以便轻松复用。只需打开预设下拉菜单，并使用 Create Pattern 按钮将你的预设添加到预设下拉列表中。当在另一个项目中加载此自定义预设时，如果这些对象不属于该项目，它们会自动添加。&#x20;

{% hint style="warning" %}
如果你在选择图案时没有看到它显示出来，可能是在输出日志中出现了 LoadAsset 错误。要修复这个问题，请从输出中删除这些新添加的对象，并再次分配自定义预设，它就会正常工作。
{% endhint %}

{% embed url="<https://streamable.com/j7hoob>" %}
加载和保存自定义 Mesh Pattern 预设
{% endembed %}

#### 调整图案材质

如果你想调整 Mesh Pattern 中所包含预设网格的材质，可以通过 Material Edit 工具来实现。在视口中选择 Mesh Pattern 输出，然后通过工具面板左上角的活动工具列表打开 Material Edit。&#x20;

在这里你可以调整诸如色相、饱和度、亮度等基本设置，也可以添加污垢、雪或雨层。新增功能还包括能够直接从 Material Edit 工具添加颜色变化。默认情况下它是启用的，并设置为最大强度，以便为这些预设带来最佳外观，但如果你想关闭它或更改变化强度，可以通过 Mesh Pattern 的 Material Edit 中的变化设置来进行。&#x20;

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

## 常见问题

<details>

<summary>关闭这些程序化网格工具后，我还能编辑它们吗？</summary>

可以，当然，只要你还没有烘焙它们或破坏工具连接，就可以继续在 Dash 中编辑这些网格工具。在 Dash 中点击 Edit 按钮打开工具面板，然后只需选中你的网格即可。&#x20;

如果这没有按预期显示你的工具，请确保工具面板中没有固定了其他工具，并查看是否可以通过工具面板左上角的按钮打开活动工具列表来找到该工具。

</details>

<details>

<summary>我可以在这些网格工具上方进行散布或使用其他 Dash 工具吗？</summary>

例如，如果你用 Dash 创建了一个地形，那么你可以用 Surface Scatter 在上面散布一些草，并使用道路工具创建并投影一条道路。然后如果你再从工具面板调整地形，散布物和投影道路当然也会随之相应调整。&#x20;

</details>
