Unreal | 蓝图从样线条开始(一)

文章 此情可待成追忆
2021-4-13 10:22 120人浏览 0人回复
嗨呀
今天和大家分享虚幻的样线条
既然是入门,就先从如下效果的基本样线条效果开始。


上面主要根据画出的样线条,然后加载了同一个mesh不同的旋转值以及大小。首先按照规矩先创建一个普通的Actor blueprint class。


然后搜索并创建一个spline。


然后在construction script中创建一个loop去循环样线条上的每一个点。


接着就开始往每个样线条距离上面加mesh,添加一个add static mesh component节点,并用set static mesh为添加的static mesh component设置mesh。


New Mesh中可以选择需要用样线条加载的模型,这里先随便加一个圆柱。


用set material为添加的模型赋予材质球,并将add static mesh component的return value;连接到set static mesh和set material的target中,表示是为前面的mesh设置的材质以及模型。


接下来我们将计算各个样线条上面点之间的距离,然后根据这些点需要循环放置多少mesh。

所以首先需要在左边创建如下几个。

Float类型的变量 Spacing,表示mesh之间的距离,默认值设置为150。

Float类型的变量RandomRotation,表示各个mesh的随机旋转值。

Float类型的变量RandomScale,表示各个mesh的随机大小。

RandomStream类型的变量RandomStream,可以产生随机值。


将component里面的spline拉下来,并使用Get Spline Length获取样线条的长度,将获取到的长度除以我们自定义的变量spacing就可以得到loop循环需要的次数,所以最后将return的值输入到ForLoop的Last Index里面。


找到位置以后,就可以开始放置mesh了,再将spline拉下来,然后用节点Get Location at Distance Along Spline来根据给到的样线条间隔长度,得到样线条上面的点。并且coordinate space选择World,Distance就是用自定义变量spacing和循环时候的index相乘得到的距离(如果循环到第1个,就是一个spacing,第二个就是两个spacing的距离)


接下来就是把我们的随机旋转和随机大小给加进去,先把Random Rotation和Random Stream拉出来,然后从RandomStream添加一个Random Float in Range From Stream,并设置Min为-15,Random Rotation连入到Max中,并设置默认值为15.
把最后的旋转值输入到Make Rotator的Y轴中,因为我们设置只绕着Y轴旋转。


同理设置Random Scale的范围大小为0.8-2.2


然后再在之前Get Location at Distance Along Spline后面添加Make Transform节点,把设置好的rotation和scale值都连进去,最后把输出的值连入到Add Static Mesh Component的Relative Transform中,顺手勾选Manual Attachment,可以保证加载的mesh是在蓝图原点生成。


Compile并保存蓝图,然后在拖一个蓝图到场景中,点击前面的样线条点就可以拖动样线条。


拖动样线条的同时按住alt键可以生成弯曲连续样线。


在属性面板还可以调节之前我们设置的变量个mesh之间的中间距离Spacing,随机旋转值Random Rotation,随机大小Random Scale。


这种功能比较适合做一些和电线杆类似有规律摆放的物件。


- End -

路过

雷人

握手

鲜花

鸡蛋

最新评论

相关分类
热门教程
返回顶部
客服