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