使用过程网格组件工具时,可以增加项目设置中的“最大循环数”。如果超过原始的最大循环数,我们的几何将无法正确构建!


叶子生成


在深入研究叶子工具的创建之前,可以下载并进行试验,没有它,某些主题将是非常抽象的!可能还会注意到一些未涵盖的有关枢轴绘画的参考。


叶子工具分为五个单独的蓝图:


树父母


   ● 保留将在所有子级之间共享的数据。


   ● Trunk,Branch和Leaf的蓝图继承自它。


● 树干


   ● 继承自TreeParent


   ● 花键控制的网格


   ● 常用于后备箱


   ● 只做一个网


   ● 提供大量的用户控制


● 科


   ● 继承自TreeParent


   ● 沿表面或随机产生许多分支


   ● 用户控制限于随机变量范围


   ● 可以彼此叠加


● 叶


   ● 继承自TreeParent


   ● 沿主干/分支或随机读取一组网格并将其分散


   ● 不能有孩子


● 复合器


   ● 接受TreeParent类型的数组并将网格重建为单个资产


   ● 检测重复的物料并合并以减少物料数量


分解树有很多好处:


   ● 更改层次结构时不必重新绘制整个网格


   ● 快速分离和隐藏资产元素


   ● 删除部分而不破坏整个树


   ● 资产已组成组件,因此您可以将一棵树的位复制并粘贴到其他树上


   ● 拆分随机种子生成,以便您更好地控制


所有这些元素结合在一起,使用户可以构建模块化的组件堆栈,并制作所需的任何种类的树!


基础父母


为了省去重复的工作,我们应该从创建其他蓝图将要继承的基础父级开始。因为我们放置在父级中的所有数据将在其子级之间共享。例如,每种资产类型都将需要材质参考和一组网格阵列,以便应将信息添加到父级,以便传播到其子级。


在UE4中构建过程美术工具


将程序网格组件添加到“TreeParent”蓝图。我们还需要每个孩子都需要的许多变量。


在UE4中构建过程美术工具


基础


   ● 材料,要应用于网格的材料,这确实意味着我们每个组件仅支持一种材料。


   ● ProcMesh,一种结构,包含制作网格,顶点,三角形,UV和顶点颜色所需的数组。法线是在with函数之后生成的。


   ● 随机种子,随机化网格的各个部分。


参考资料


   ● 父级,TreeParent变量用于引用其所有者。


   ● 根,引用网格合成工具,对于获取存储的订单很有用。


   ● 子引用,treeparent类型的数组,用于告诉其父对象更新。


   ● T是转换数组的数组,用于存储分支信息。将其视为树的骨架,父级组件引用此位置以获取生成位置。


告诉子数组中资产更新的共享函数。每次更改组件时都会调用该函数(不过请记住,这些函数或强制类型转换在我们制作它们之前将不存在)。


在UE4中构建过程美术工具


如果我们不更新子组件,那么树将很快断开连接。


树干


树干蓝图应继承自TreeParent,并基于可编辑样条,该样条可进行大量控制。可以通过从添加组件下拉菜单中选择样条线来将其添加到任何蓝图中,就像我们对过程网格组件所做的一样。


还可以看到我们已经继承的组件。


在UE4中构建过程美术工具


在构造脚本中,我们添加了一个名为Draw的新函数。这是我们对自身及其所有子代调用的函数。


在UE4中构建过程美术工具


绘制功能检查父干是否已经存在,如果存在,则沿父样条移动零部件。如果不存在父级,则直接移动以创建网格。最后,通过“更新子对象”告诉对象子对象进行更新。


在UE4中构建过程美术工具


在“创建基础线段”中,我们像在第1部分中一样清除旧的几何数据,计算新数据,然后重新绘制网格。这将是我们对所有组件进行的主要模式。


在UE4中构建过程美术工具


对于我们的几何形状,我们需要两个整数,一个用于长度段数,一个用于径向段数。获取样条线的长度和所需的长度段数,将它们除以获取每个点之间的距离,并将其设置为称为“段距离”的浮点数。


在UE4中构建过程美术工具


然后为每个长度段循环,并沿样条线在一定距离处获得变换。该长度将是当前循环索引*段距离。您可以使用比例x或y来控制行李箱的厚度。将其乘以一个暴露值可以为网格添加统一的大小。


在UE4中构建过程美术工具


可能需要在此处旋转旋转以使其与分支的旋转对齐。将变换存储在数组中,这非常重要,因为我们需要一种通用的方式来了解分支在空间中的位置,并且并非每个蓝图都具有样条曲线分量。稍后将其添加到Ts数组(在TreeParent中创建)中。


在UE4中构建过程美术工具


然后,在“绘制半径”函数中围绕该变换绘制顶点。这类似于我们之前绘制几何的方式。单击链接以查看完整图形。


在UE4中构建过程美术工具

在UE4中构建过程美术工具



唯一的主要区别是我们制作三角形阵列的方式。这对于主干来说是不必要的,但是对于使多个分支正常工作绝对至关重要。网格网格三角函数仅期望存在单个网格,但是如果要制作多个单独的网格,则需要偏移三角形计数器。


在UE4中构建过程美术工具


完成所有操作后,我们需要获取我们一直在构建的基本转换数组并将其设置为Ts数组。此处的索引表示多个分支,但是由于我们仅创建一个段,因此将其设置为索引0。


在UE4中构建过程美术工具


一旦有了所有数据,剩下的就是绘制网格!


在UE4中构建过程美术工具



现在已经识别出一种模式,清除旧数据并制作新数据。分支蓝图需要采用一个父级(如果存在)并沿其散布多个分支。如果父母不存在,我们就将它们分散在地面上。


在UE4中构建过程美术工具


清除数据并没有什么新内容,因此让我们继续进行“制作分支数据”这个功能的主要部分是为我们正在创建的每个分支(链接)找到生成点。


在UE4中构建过程美术工具


首先确定蓝图是否具有父级。如果是这样,我们将获得父级的T数组,这是变换数组的数组。每个分支都是新的变换数组。这意味着,如果父分支有8个分支,而我们选择创建4个分支,则总共有32个分支。如果父级是中继线,则T的数组将只有一个转换条目。


在UE4中构建过程美术工具


如果没有父代,则进行分支计数循环并找出归一化的距离。


在UE4中构建过程美术工具


下一步是弄清楚每个分支的起源。如果没有父对象,只需获取对象的原点即可。如果有父对象,请获取当前的变换数组,然后根据归一化的距离查找位置。您也可以在此处添加钳位值以缩小范围。


在UE4中构建过程美术工具


这是一个图表,在下图中,最大值是标准化距离,需要将其转换为转换数组。乘以变换索引计数可得出最接近的索引,其余为下一个索引之间的距离。该计算将使我们沿变换长度有一个粗略的距离。


在UE4中构建过程美术工具


生成最小和最大向量之间的随机位置。


在UE4中构建过程美术工具


合并位置,使用自定义宏修改旋转并修改比例。


在UE4中构建过程美术工具


筛选出原点旋转是一个非常重要的元素,宏会接收数据,例如沿父旋转,每个索引的旋转等。要获得易于控制的结果,请使用围绕索引旋转并使用方向矢量来避免万向节锁定。


在UE4中构建过程美术工具


有了原点后,将其添加到数据透视表数组并创建分支。


在UE4中构建过程美术工具


在主干示例中,我们使用样条曲线进行变换,然后围绕其构建几何体。


由于样条线不存在,因此我们无法在此处执行此操作。相反,我们必须生成这些点 (link)。


在这里,我们取原点。


在UE4中构建过程美术工具


抓住当前的顶点长度。我们需要这个来抵消我们的三角形数。Triangle数组仅引用顶点数组上的索引,因此需要偏移以保持三角形参考正确。生成最小/最大之间的随机分支长度。


在UE4中构建过程美术工具


然后沿着分支的每个点。


在UE4中构建过程美术工具


找出下一点的位置。接受最后一个变换,通过乘以方向向量来使其偏移。进行一些控制旋转,对其进行微调。


在UE4中构建过程美术工具


再次创建网格数据,与之前相同。


在UE4中构建过程美术工具


分支蓝图的重要特征是它是可堆叠的。我们应该能够在分支等的分支上建立分支。我们可能遇到的唯一问题是我们的分支数量是指数的。如果第一层有6个分支,第二层和第三层有4个分支,则将得到96个分支,而不是14个。如果我们在4个分支中添加第4层,则得到384个分支。整个操作使用循环,这意味着我们如果数字太大,将会很麻烦。


在UE4中构建过程美术工具



活页卡不能有子级,因此它们将始终处于其各自层次结构的末尾。蓝图对一组网格进行采样,并将其沿主干或分支资产散布。我们可以在这里做的一个有用的作弊方法是渲染实例而不是绘制几何图形,从而大大提高了性能。在这里,我们添加了一个暴露的布尔切换,以利用此优化。


在UE4中构建过程美术工具


对于此组件,制作一个可由用户设置的网格阵列。对于每个网格,请使用“从静态网格中获取部分”功能来获取每个对象的数据,并将其存储以供以后使用(该链接)。


在UE4中构建过程美术工具


与分支蓝图相同,清除旧数据,检查父级,然后循环进行每个计数*父级计数。


在UE4中构建过程美术工具


找到生成点,与之前相同,然后进行网格划分或添加实例。


在UE4中构建过程美术工具


添加网格数据。


在UE4中构建过程美术工具


我们得到三角形偏移并选择一个网格进行复制。


在UE4中构建过程美术工具


使三角形偏移长度。通过生成点转换顶点数据,将其全部存储在数组中。


在UE4中构建过程美术工具

在UE4中构建过程美术工具



合并中


各个组件组装完成后,需要将它们整理到一个统一的网格中,然后将其导出。除了可以在构造脚本中运行之外,还可以将功能作为按钮显示给编辑器。这样可以在运行脚本时进行更大程度的控制。


在此功能中,我们清除旧数据,构建唯一的材料阵列(这避免了使用重复的材料创建任何资产),必要时重建网格数据并输出网格。作为一种优化,我们应该重建网格,以避免大量重复的材质分配。


在UE4中构建过程美术工具


将组件整理到单个数组中。


在UE4中构建过程美术工具


检查我们构建的材料阵列在长度上是否与组件阵列匹配。如果材料少于组件,那么我们知道是一些共享的材料。


在UE4中构建过程美术工具


在这一点上,我们必须遍历每个组件的三角形数据并对其进行偏移,以使它们在组合在一起时与顶点数组对齐。


在UE4中构建过程美术工具


最后,采用新的数据结构并创建一个静态网格物体。


在UE4中构建过程美术工具


单击合成器上的程序网格组件,然后按“创建静态网格”按钮。这将提示您选择一个位置,选择一个名称,然后就可以了!


在UE4中构建过程美术工具


完成,你做了一棵树!


在UE4中构建过程美术工具


在UE4中构建过程美术工具是可以使用过程网格组件创建的资产类型的一个示例。有很多种可能性,并且不仅限于创建编辑器,你也可以在游戏中使用此功能!

,Unreal Engine技巧,Unreal Engine教程