UE5中实现沿样条线创建网格体

举报
UE5技术哥 发表于 2024/06/11 22:31:00 2024/06/11
【摘要】 本文是对UE官方教程:https://www.bilibili.com/video/BV1eU4y1c7XL的重现,原教程中通过构造函数实现非运行时执行脚本,并通过UE的样条线组件辅助创建路径网格体。该功能最终实现的效果如下:如果需要使用SplineMesh做法的连续网格绘制,可以看这篇文章:https://blog.csdn.net/grayrail/article/details/133...

本文是对UE官方教程:https://www.bilibili.com/video/BV1eU4y1c7XL的重现,原教程中通过构造函数实现非运行时执行脚本,并通过UE的样条线组件辅助创建路径网格体。该功能最终实现的效果如下:

Q1.gif

如果需要使用SplineMesh做法的连续网格绘制,可以看这篇文章:
https://blog.csdn.net/grayrail/article/details/133747086

1.创建基础蓝图


首先创建一个Actor蓝图对象,我们使用InstancedStaticMesh组件构建动态网格以提升性能,挂载组件如下:

Q2.png

UE蓝图中的构造函数一直比较冷门,可能很多时候都不会去用,其实在编辑器状态下,它可以在拖入场景并且修改参数时执行,从而运行一些非运行时下的逻辑。

我们增加模板网格变量,添加一个Static Mesh组件,并调用函数初始化到InstancedStaticMesh上:

Q3.jpeg


2.设置间距并随样条线生成


2.1 得到生成物件的宽度与间隙


第二步,我们需要拿到模板网格的BoundingBox并以此为基础计算间距,计算间距的蓝图逻辑如下:

Q4.jpeg

但是实际生成的时候也不能紧贴着创建,还需要加一个Offset变量以制造间隙:

Q5.jpeg

到这一步,我们加了2个变量Offset和Spacing,Offset用于制造生成物的间隙,Spacing储存生成物件宽度。

2.2 得到样条线的长度并计算生成数


然后我们需要拿到样条线的总长度,并以此除以生成物件的宽度,这样就可以得到生成物体的数量了:

Q7.jpeg

拿到生成物体的数量,可以创建一个For循环节点,调用添加实例函数:

Q8.jpeg

这时可以把Actor拖到场景里看下效果:

Q9.jpeg

拖拽一下样条看下效果,已经基本可以生成了,但是没有旋转信息。接下来我们继续更迭,增加旋转的适配。

3.增加生成物件的旋转信息


我们用下一个生成物件的坐标和当前生成物件的坐标相减就可以得到一个矢量作为物体朝向,首先需要将获得位置的蓝图节点封装进函数,便于后续操作:

Q10.jpeg

然后调用2次这个函数,得到旋转朝向,蓝图节点如下:

Q11.png


这样我们的蓝图逻辑就全部完成了,看下效果:

Q12.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。