
【前言】
【思路一】獲得模型頂點以對應Spline上面的各個點
之前文字自動化附着Spline各點想着是Get模型上面的Verts頂點來産生,這就是思路一
思路一:如何擷取到模型表面的所有頂點在世界場景當中的位置。
https://forums.unrealengine.com/development-discussion/c-gameplay-programming/7509-accessing-vertex-positions-of-static-meshforums.unrealengine.com
但是這個好多還要寫C++代碼啥的,就沒怎麼看了。
【思路二】擷取模型骨骼以對應Spline上面的各個點
印度小夥的Spline是需要手動挪動的,但是我感覺如果每次導入新文字都這樣手動操作簡直是太麻煩了,于是結合Blender的文字轉Mesh,想着導入到UE4當中直接根據這些Mesh的骨骼來生成Spline各個點該多好啊。
後來結合Skeletal Mesh的骨骼測試成功了。
【導圖】
一、在Blender當中建立文字
【1.1】建立Text Tab鍵入
- Shift+A Text
- R X 90
- Tab 編輯
- 鍵入UE4 Interesting 520(或者是 UE4有意思吧 )
【1.2】如何鍵入中文字型
【1.2.1】顯示中文路徑- Edit Preferences
- Interface->Translation勾選可顯示中文路徑(否則是亂碼,之前一直都是,沒留意過)
這個跟Curve一樣還可以擠出等效果。
Regular選擇Font
字型路徑:C:WindowsFonts
在以上路徑中打開ttf格式的字型檔案
【注意事項】
我們不可以直接在Blender當中使用輸入法打字。
是以需要在外面打好字之後,Ctrl C/V粘貼即可。
二、将文字轉化為Mesh
Curve的話不能使用Skin Modifier建立骨骼
1.Object->Convert To
2.或者在模型上直接右鍵也是可以的Convert To Mesh(還有設定樞軸點的,比較友善。)
三、使用Decimate Modifier給文字進行減面(将文字拆開)
注意啊,上面沒有選中文字型格式的話出不來啊。
我這裡呢,減到了0.3。之後Apply應用。(之後建立骨骼的時候更省力一點)
四、添加Skin Modifier将Vertex頂點變成骨骼Bones
直接點選建立。(其他不要管)
不知道這裡有一點小Bug,就是直接對所有文字都進行轉化的話,如下,隻有單個的文字(或最後一個文字)才能轉化成骨骼。
是以需要P 分離,再進行建立骨骼。(UE4 三個單獨分開),如果是中文文字的話,骨骼可能隻建立了一半,那麼你就需要将它們分開。
P Seperate Selection
另外還有Origin的問題,如果你旋轉你的文字模型的話,發現樞軸點離本體太遠了,你需要Set Origin To Geometry。之後再用Skin Modifier建立骨骼呢。
五、精簡骨骼
【5.1】删除文字内部骨骼和Skin Modifier
骨骼建立好之後,删掉SkinModifier或者是那個小螢幕的UI,不顯示目前Modifier的應用效果。
骨骼建立之初跟模型是一樣的,内部還有很多折線,我們需要将它們一一删除。
由于我們不能對模型進行處理(三角面四角面好多都在“U”上),隻能對轉化後的骨骼進行一些處理。精簡後的效果:
選中新建立的骨骼Armature,進入Edit Mode,對多餘的骨骼進行删除。
注意不要選中點删除,要選中線才能删除掉骨骼。可以先Dissolve Bones,如果有些骨骼不能夠Dissolve的話,那麼再删除(要不然有好多的牽連的黑線)【5.2】骨骼相關操作
【5.2.1】顯示骨骼名字和UI在Armature骨骼的Object Data Properties下我們可以更改骨骼的顯示形狀以及開啟名字顯示等等。
- Shift+左鍵點選主層,全部展開。
- 鍵盤+/- 逐個地展開下屬層(長按跟Shift一樣是全部展開的)
它的操作其實跟編輯模型的頂點是一樣的。
【常用的】 1.我們用到的是Alt+F->Switch Direction- 選中全部骨骼的話,它可以切換父子的順序,正着來還是反着來
- 選中單個骨骼的話,它可以脫離父層,變為跟其他骨骼一樣同級。
Y 可直接Split,将骨骼放在同級。
2.F可将兩骨骼連在一起。【5.2.4】 骨骼名字
- Names->Flip Names(可以将目前所有骨骼名字按照從Bone.001進行排序,注意Strip Numbers需要打勾)
- 可通過 【 】快捷鍵檢查文字環繞關系
【5.2.5】 編輯骨骼父子關系(骨骼排序)
總共就兩種方法,可以X删除添加,也可以Ctrl+P直接附着。- 選兒子後選爹,然後Ctrl+P,Make Parent, Connected 即可
- 或者是X删除兩點之間的骨骼,然後F建立骨骼
- 先Alt+F 将所有骨骼放在同級,然後X F即可。将目前骨骼删除,然後F 連接配接起來,這樣的話就會自動綁定上了呢。 簡直不要太省力!太爽了~
滑鼠單擊選中線删除,然後框選兩個點,F進行連接配接起來呢。就直接附着上去了呢。
我們需要對骨骼的順序進行重新排序,在UE4藍圖當中寫的就是按照從上到下的順序進行生成Spline Point的呢。
原骨骼架構,當我們選中相應的骨骼時,發現它們并不是按照(“U”)這樣連在一起排列,而是跳來跳去的。是以我們就需要調整一下骨骼的父子關系次序。(從一段環繞到另一端)
調整為如下規整骨骼架構即可。
六、導出模型并在UE4當中進行檢驗
不必設定Origin啥的,我們會通過藍圖設定Spline初生點位置。
框選文字和骨骼導出(注意是單個,U一個、E一個、4一個)
導入的時候勾選骨骼
這裡要你非常注意一下:
骨骼一定要像頂點連起來的線一樣(否則等會兒寫藍圖的Spline很難看,我測試了好長時間才發現) 也就是不要出現這個黑線。(我們可以通過Alt+F取消黑線,黑線代表的是骨骼父子關系,也就是當全部骨骼同級的時候這個黑線就會消失掉了呢)所有的骨骼都需要Connected。(Ctrl+P的時候選擇Connected)
【Blender】Bone Connectedhttps://www.zhihu.com/video/1247581634322038784
【UE4】Spline文字模型骨骼https://www.zhihu.com/video/1246914689067249664
七、填寫藍圖
我們先建立一個Actor,添加Skeletal Mesh和Spline。(并選中Mesh相對應的文字模型)
這裡的藍圖跟這裡程式化生成的類似。
X Tesla:【UE4】Spline BP 程式化模型/動畫軌迹(爆肝般的詳細)zhuanlan.zhihu.com
如這個Spline BP當中,我們的一個Index有兩條線。對于我們這裡的藍圖的話,是原先本身它就有2個Spline點,
- For Loop First Index=Last Index=0 ,那麼又生成了一個Index,共三個點
- For Loop First Index=0,Last Index=1,那麼生成兩個Index,共四個點
注意一下。
骨骼索引為2~12的話,那麼總共有12-2+1=11個骨骼。(last-first+1)
然後封裝成一個函數即可。
當然還要注意這個索引,坑死我了。(UE4這樣兩級的骨骼竟然不是按照順序來的)
我們在Spline Details下打勾Closed Loop,這樣的話,首尾骨骼就會連接配接起來了。
上圖紅色框選的部分勾選之後呢,我們就可以直接進行編輯了
(但是不要挪動,我們隻是點選選擇看生成點的索引罷了,不要挪動點的位置,否則Spline不會更新了)- 不能編輯——大紫紅色
- 可編輯——紅色和白色
- 設定First Index為第一個骨骼
- First Bone Order Offset 為骨骼偏移值(對于有中空的文字)
- Bone Length為骨骼的總長度(有多少數量的骨骼)
八、最終SplineBP點+文字骨骼 程式化對應關系大檢查
(視訊為舊版,但大概就是這麼個意思,可以通過程式化來控制我們的Spline線條)
【UE4】Spline BP+文字骨骼https://www.zhihu.com/video/1246919176465039360