本文為學習安寧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
