UE5_PCG 蓝图公开Mesh Sets和Weight(权重参数)快速替换散布资产
39118 3
实名

通过了实名认证的内容创造者

发布于 2023-11-2 14:41:01

您需要 登录 才可以下载或查看,没有账号?注册

x


df81194188d273a83e2fc6f52ec04514.jpg
UE5 PCG:公开Static Mesh变量快速替换模型资产↑↑↑接上期↑↑↑
今天我们将制作如何为程序内容生成创建可变的网格体集,因此可以再次看到我们在此处添加一组树木、一组草地
55e31bb8fb3fe18fae9b2ef484d6b3d5.png

并且在每个组中您可以在这里有数量可变的网格所以我有两棵树,这里有多个图表您可以添加新元素,或者您可以动态更改它们并更改比例,并直接在场景中查看该更改如何影响事物 所以让我们直接进入它


我们需要做的第一件事是创建几个结构来保存我们的数据


双击打开添加变量:Mesh/Scale



让我们在此处创建另一个结构,这将用于我们的网格集,在这里保存一个网格,我们想要保存一组网格项目,这样每组都可以在里面有多个网格,所以保存从这里出来的并现在我们可以创建我们的组件来保存数据,所以再次


回到内容浏览器中右键单击并创建一个新的蓝图类,因为我们希望它是我们可以添加到现有蓝图参与者中的东西,所以你想让它成为一个参与者组件,所以这样做 我们将其称为 PCG 网格集


双击打开编辑,添加一个变量成为网格集MeshSets网格集数组,这样您就可以添加多个网格集并使其对设计者可见


我们需要做的最后一件事就是将其添加到我们的主蓝图中,确保它已编译并保存返回到主级别,让我们找上期创建好的蓝图样条线双击编辑并添加我们刚刚创建的PCGmeshsets编译并保存


来到蓝图测试,我们可以看到添加的参数






我们在此组件中需要做的最后一件事是创建一个函数来通过网格集名称获取网格信息,该函数将由 PCG 图中的蓝图节点调用①要做的是创建一个新函数,让我们称之为GetMeshinfobysetName②添加输入/输出信息


接下来①拖出网格集②为每个循环执行一个循环,这样我们就可以浏览它我们想要做的是找出答案 如果传入的网格集名称与数组中的网格集匹配,那么您可以将其拆分出来,然后它就是我们要检查的网格集名称③进行等于比较④然后我们想在此处放置一个分支然后将检查的输出插入那里,将其连接到战利品主体,因此如果我们的网格集名称等于 网格集名称传递到此函数中,然后我们想要返回网格信息,以便您可以将其拖到此处将其连接到 true,因为您只想在我们找到匹配项时执行此操作,并且其工作方式是


我们保存然后打开S_PCGMesh修改下默认值


我们需要在之前我们所做的节点上添加一些额外的逻辑,首先重新命名为
“Assign Random Meshes from set-随机分配网格”
①打开节点修改名称



#修改execute with context①创建一个序列
②获取一个组件Get Component,然后我们链接初始引脚在我们的主蓝图中获取 PCG 组件,但是我们不需要 PCG 组件我们需要 PCG 网格集组件③因此从这里可以得到什么 我们可以做的是获得所有者Get Owner这将成为主要蓝图④在获取所有者中按类获取组件,我们想要的类是我们创建的 PCG 网格集类


⑤我们需要网格信息,因此我们需要有一个网格集名称变量来搜索,所以我们在这里要做的是创建网格集名称它是可见的

⑥以及我们是否按类从get组件获取返回值并开始输入创建的通过集合名称获取网格信息的函数,⑦现在我们可以插入我们正在此处搜索的变量网格集合名称


我们现在所做的是我们已经获得了与所提供的网格集名称关联的网格信息数组现在我们需要存储它,以便当我们遍历每个点时,我们可以从那里选择一个随机网格,因此我们需要另一个变量①添加变量网格信息,然后右键单击以创建它是一个数组,因为我们可能在那个网格集中有多个网格,


②然后我们需要做的就是存储它,所以如果你用 Alt 拖到这里,它确实设置了,我们可以这里已经有了网格信息,我们还需要存储最大索引,这样当我们首先很好地处理这些点时,如果网格集中没有任何内容,那么我们不想做任何事情,但如果有措施 在那里我们想要存储最大索引,这样当我们选择随机网格时,我们就知道最上面的索引是什么③所以在这里你做长度这样你就可以得到数组的长度④然后减去 1 以获得最大索引,因为索引 从零开始⑤我们需要存储它,所以让我们右键单击并提升一个变量我们将调用这个变量网格最大索引并将其连接到这里



我们在这里要做的最后一件事是在 GetPoint 中如果这里没有任何网格体,我们不想再执行任何操作,所以我们要做的是快速检查此处的网格体最大索引是否大于或等于大于或等于零B 代表分支节点让我们将其连接到此处


接下来我们需要 要做的就是在点体中使用网格信息,所以让我们现在打开它,上次我们打破了每个点,然后我们通过这里的比例进行调整。好吧,我们现在要从数组中选择一个元素(随机元素)以使其处理网格信息和缩放当我们得到这里的每个点时,①输入随机流,这样您就会 创建一个随机流②然后从随机流中选择我们的随机值,因此如果我们在流的范围内执行随机整数,那么虽然它是随机的,但每次都会是相同的随机值,因为我们输入 相同的种子随机范围是从零到网格最大索引,所以如果我们的数组中有一个网格它将从零处理到零,所以如果我们有两个零到一,你根本不会得到任何随机性,好吧所以现在我们再次有了索引③拖动我们的网格信息数组,我可以获得一个副本然后插入嗯,索引在这里,所以现在我们有了网格信息④我们可以做的就是分割结构引脚,你会看到我们在这里有了(Mesh Scale网格和比例)所以现在我们有了比例,我们可以将比例插入其中 在这里,这将像以前一样继续所以这次不是固定比例,而是在我们在数组中随机化的网格上等待比例


我们想做的另一件事是设置静态网格对象引用,而不是我们需要的对象路径,以便将其放入属性中,所以让我们现在更新此元素来修复这个问题


接下来从我们的索引中获取网格文件路径,让我们将其放在靠近顶部的位置并获取副本我们将在此处插入随机元素中的相同索引,因此这将返回与该随机网格相关联的网格文件路径,然后我们要做的是将网格属性设置为网格文件路径,因此如果您设置属性,我们想要做的是设置字符串属性,然后将其插入此处然后将其重新连接到设置成员以进行缩放随着我的进行,将其收紧,以便属性名称是我们要设置的网格该值是我们从数组中获得的值,并且元数据从此处传递到元数据,因此只需将其再次插入其中



#添加网格体权重(控制我们不同种类资产出现数量)该权重将允许您调整集合中网格体的相对值,例如我们在这个集合中可以有更多的草在S_PCGMesh下添加变量/整数;默认值为1



我们需要做的第一件事是计算集合的总权重,因为总权重是我们将使用它来生成随机元素或随机整数,然后从中选择正确的加权网格因此在本节中,当我们遍历每个元素时,我们将获取网格信息 一组我们只需要保留整体的运行总计,将该总计添加到该组的总重量中因此我们需要一个新的变量,因此在此处添加,我们将称之为Totalweight


然后当我们循环遍历集合中的每个网格时,我们只需要更新该总数,因此请确保总权重对其进行编译,并确保总权重的默认值为零开始 然后当你浏览这里时①我们要做的就是通过控制来获取总重量②在这里做一个加号,然后我们从网格中取出重量③使用Alt键将其拖出并将其连接到执行引脚所以到这个循环结束时,我们将得到整个集合的总权重


随机分配网格在这里有这个元素生成随机整数在零和最大网格数之间,然后分配如此有效的相等权重,因此我们想用从总权重到加权随机元素的转换来替换它,所以让我们删除那里的最大网格最大索引然后使用alt暂时删除输出


然后首先我们将生成一个介于零和集合总权重之间的随机整数(total Weight拖拽进来)提升局部变量,我们将调用此局部变量权重值,现在我们必须执行一些算法,将权重值转换为正确的网格索引



①遍历集合中的每个网格,一遍如果你采用网格最大索引,我们将执行一个 for 循环,但我们想要一个带中断的 for 循环,这样当我们匹配网格的权重时,我们就不想再执行任何按操作了②并获取副本,并且您想在此处使用索引③如果您右键单击并拆分该结构引脚,您将在此处看到网格信息我们已经获得了网格本身的比例和缩放,这只是④我们要做的就是再次获取该权重值⑤并与此处的网格权重进行小于比较⑥执行一个分支将其连接到循环体,如果分支为真,则此我们要选择的网格,因此我们需要设置一个网格索引


让我们在此处创建另一个名为网格索引的局部变量,这是一个整数


然后使用 alt 将其拖到此处我们将其设置①为当前索引,一旦我们完成了,我们就不再需要循环了,所以将该输出连接到中断②现在的逻辑如果权重值不在此处的权重范围内我们需要处理下一个权重,但在此之前,我们需要将权重值向下调整权重,以便有效地一直减少它,直到达到为零,因此它总是会匹配一些东西,所以在这里的假元素中,我们想要取我们想要做减法的权重值③,并我们想做减法并从电流中减去重量 ④通过处理当前网格元素从当前元素中取出权重,然后我们想要重置权重值,因此 Alt并将其连接到 false 将其连接到此处的引脚⑤




【修改连线】完整版



这样我们可以在蓝图样条线下直接添加模型\控制缩放与权重









评分

参与人数 1元素币 +10 活跃度 +1 展开 理由
lihyco + 10 + 1 成大触就需要这

查看全部评分

微信公众号:Game艺视界
使用道具 <
liushuoye  发表于 2023-11-2 16:56:01  
2#
回复 收起回复
使用道具
仰空越梦  发表于 2023-11-2 20:25:27  
3#
不错  感谢感谢!!~
回复 收起回复
使用道具
areyouaboy  发表于 2023-11-3 12:30:33  
4#
大哥就是强!
回复 收起回复
使用道具
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表