UE4 Spline

本文为学习安宁Ken的UE4Spline的记录

介绍#

UE不太支持别的软件导入的样条线

一般直接在场景里编辑曲线而不是在蓝图里编辑曲线

只能创建一个Spline Component,然后将这个Actor拖到场景里

添加点:右键添加或者alt+拖动现有点

Curve Linear Constant

每个节点有很多数据,节点上方向(用于确定唯一旋转),进入的切线,离开的切线等等

会用到的相关蓝图函数#

SplineGenerationPanel#

可以快速生成一些线段,包括圆弧、圆环等

有的面好像不太好生成,并不好用目前看,貌似xz yz平面不太好生成

编辑器中使用SPline#

Construction Script节点,当前对象在场景中实例化一次便会执行一次这个节点,比如把这个actor拖到场景中,可能会触发很多次(拖的时候),我们对它做任何修改或者对组件做任何修改,动一下位置,也会导致这个节点执行,其不需要游戏运行起来就能触发,很适合做一个摆放工具之类的,按照一些规则进行生成

复制摆放#

vector变量等可以在场景中有一个3D widget的可视化方案

Truncate节点去除小数部分

思路:固定距离去取曲线上的点(GetTransformatDistanceAlongSpline),每次编辑曲线都回执行construct script,这个脚本里就给取的点的位置添加一个StaticMeshComp,并对这个StaticMeshComp指向的Mesh资源进行一个指向

在关卡界面对指向的资源模型和进行赋值

效果:那就打个问号吧

给以这个Transform的location或者rotation一些随机可以得到一些沿着曲线但是有点偏移的效果,模型也可以有缩放

注意点#

这里使用AddStaticMeshComp生成了一堆的Comp,多个Comp对应了多个drawCall,这种模型很显然可以进行合批操作的

UE是有对应的Component的,InstancedStaticMeshComponent,一开始先创建好,然后对这个InstancedMeshComp进行AddInstance

这么多问号才10+drawcall

小技巧#

可以右键节点选中所有曲线点,然后使用对齐方案,比如键盘上的End键,来进行向下对齐,适用于不平整的路面,曲线的控制点数需要多一点

制作道路管道桥梁#

Spline Mesh Actor#

使用曲线去扭曲一个静态模型让其达到一个变形的情况,管道一类的需要模型的面数较高,分段要多

里面起作用的是一个SplineMeshComp组件

这样的话我们创建一个新的Actor,然后根据复制摆放的原理,遍历曲线的每一段segment,每有一段就创建一个SplineMeshComp,设置他的Trasform的值(每一段获取起始点和终止点的location和tangent值,可以的话set up vector at spline Point把UpVector也计算一下以避免弯曲过大产生的两面不接的bug),首尾相接 便可以做出随着Spline变化的管道了

注意UE的For Loop蓝图节点是<=的判定而不是<

管道的UV应该是铺满的,这样子才可以很好的tiling

变化的时候也可以设置mesh的材质、mesh的碰撞

经验:模型的断面一般朝向x方向,不容易产生太多旋转扭曲的截面bug

作者:FlyingZiming

出处:https://www.cnblogs.com/FlyingZiming/p/15027663.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

但行好事,莫问前程。

posted @   飞翔的子明  阅读(1628)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu