天天看點

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

【前言】

【思路一】獲得模型頂點以對應Spline上面的各個點

之前文字自動化附着Spline各點想着是Get模型上面的Verts頂點來産生,這就是思路一

思路一:如何擷取到模型表面的所有頂點在世界場景當中的位置。

https://forums.unrealengine.com/development-discussion/c-gameplay-programming/7509-accessing-vertex-positions-of-static-mesh​forums.unrealengine.com

但是這個好多還要寫C++代碼啥的,就沒怎麼看了。

【思路二】擷取模型骨骼以對應Spline上面的各個點

印度小夥的Spline是需要手動挪動的,但是我感覺如果每次導入新文字都這樣手動操作簡直是太麻煩了,于是結合Blender的文字轉Mesh,想着導入到UE4當中直接根據這些Mesh的骨骼來生成Spline各個點該多好啊。

後來結合Skeletal Mesh的骨骼測試成功了

【導圖】

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...
ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

一、在Blender當中建立文字

【1.1】建立Text Tab鍵入

  1. Shift+A Text
  2. R X 90
    1. Tab 編輯
  3. 鍵入UE4 Interesting 520(或者是 UE4有意思吧
ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

【1.2】如何鍵入中文字型

【1.2.1】顯示中文路徑
  1. Edit Preferences
  2. Interface->Translation勾選可顯示中文路徑(否則是亂碼,之前一直都是,沒留意過)
ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...
【1.2.2】選擇ttf格式中文字型
這個跟Curve一樣還可以擠出等效果。

Regular選擇Font

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...
字型路徑:C:WindowsFonts

在以上路徑中打開ttf格式的字型檔案

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

【注意事項】

我們不可以直接在Blender當中使用輸入法打字。

是以需要在外面打好字之後,Ctrl C/V粘貼即可。

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...
ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

二、将文字轉化為Mesh

Curve的話不能使用Skin Modifier建立骨骼

1.Object->Convert To

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

2.或者在模型上直接右鍵也是可以的Convert To Mesh(還有設定樞軸點的,比較友善。)

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...
ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

三、使用Decimate Modifier給文字進行減面(将文字拆開)

注意啊,上面沒有選中文字型格式的話出不來啊。

我這裡呢,減到了0.3。之後Apply應用。(之後建立骨骼的時候更省力一點)

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...
ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

四、添加Skin Modifier将Vertex頂點變成骨骼Bones

直接點選建立。(其他不要管)

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

不知道這裡有一點小Bug,就是直接對所有文字都進行轉化的話,如下,隻有單個的文字(或最後一個文字)才能轉化成骨骼。

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

是以需要P 分離,再進行建立骨骼。(UE4 三個單獨分開),如果是中文文字的話,骨骼可能隻建立了一半,那麼你就需要将它們分開。

P Seperate Selection

另外還有Origin的問題,如果你旋轉你的文字模型的話,發現樞軸點離本體太遠了,你需要Set Origin To Geometry。之後再用Skin Modifier建立骨骼呢。

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

五、精簡骨骼

【5.1】删除文字内部骨骼和Skin Modifier

骨骼建立好之後,删掉SkinModifier或者是那個小螢幕的UI,不顯示目前Modifier的應用效果。

骨骼建立之初跟模型是一樣的,内部還有很多折線,我們需要将它們一一删除。

由于我們不能對模型進行處理(三角面四角面好多都在“U”上),隻能對轉化後的骨骼進行一些處理。

精簡後的效果:

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...
ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

選中新建立的骨骼Armature,進入Edit Mode,對多餘的骨骼進行删除。

注意不要選中點删除,要選中線才能删除掉骨骼。可以先Dissolve Bones,如果有些骨骼不能夠Dissolve的話,那麼再删除(要不然有好多的牽連的黑線)
ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

【5.2】骨骼相關操作

【5.2.1】顯示骨骼名字和UI

在Armature骨骼的Object Data Properties下我們可以更改骨骼的顯示形狀以及開啟名字顯示等等。

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...
【5.2.2】展開骨骼清單
  1. Shift+左鍵點選主層,全部展開。
  2. 鍵盤+/- 逐個地展開下屬層(長按跟Shift一樣是全部展開的)
【5.2.3】骨骼操作快捷鍵
ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

它的操作其實跟編輯模型的頂點是一樣的。

【常用的】 1.我們用到的是Alt+F->Switch Direction
  • 選中全部骨骼的話,它可以切換父子的順序,正着來還是反着來
  • 選中單個骨骼的話,它可以脫離父層,變為跟其他骨骼一樣同級。

Y 可直接Split,将骨骼放在同級。

2.F可将兩骨骼連在一起。

【5.2.4】 骨骼名字

  1. Names->Flip Names(可以将目前所有骨骼名字按照從Bone.001進行排序,注意Strip Numbers需要打勾)
  2. 可通過 【 】快捷鍵檢查文字環繞關系

【5.2.5】 編輯骨骼父子關系(骨骼排序)

總共就兩種方法,可以X删除添加,也可以Ctrl+P直接附着。
  1. 選兒子後選爹,然後Ctrl+P,Make Parent, Connected 即可
  2. 或者是X删除兩點之間的骨骼,然後F建立骨骼
【注意事項】
  • 先Alt+F 将所有骨骼放在同級,然後X F即可。将目前骨骼删除,然後F 連接配接起來,這樣的話就會自動綁定上了呢。 簡直不要太省力!太爽了~
盡量在世界大綱中用Ctrl加選父子,而不要在場景當中用Shift加選父子,前者能得到正常的父子關系結果。

滑鼠單擊選中線删除,然後框選兩個點,F進行連接配接起來呢。就直接附着上去了呢。

我們需要對骨骼的順序進行重新排序,在UE4藍圖當中寫的就是按照從上到下的順序進行生成Spline Point的呢。

原骨骼架構,當我們選中相應的骨骼時,發現它們并不是按照(“U”)這樣連在一起排列,而是跳來跳去的。是以我們就需要調整一下骨骼的父子關系次序。(從一段環繞到另一端)

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

調整為如下規整骨骼架構即可。

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...
ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...
ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

六、導出模型并在UE4當中進行檢驗

不必設定Origin啥的,我們會通過藍圖設定Spline初生點位置。

框選文字和骨骼導出(注意是單個,U一個、E一個、4一個)

導入的時候勾選骨骼

這裡要你非常注意一下:

骨骼一定要像頂點連起來的線一樣(否則等會兒寫藍圖的Spline很難看,我測試了好長時間才發現) 也就是不要出現這個黑線。(我們可以通過Alt+F取消黑線,黑線代表的是骨骼父子關系,也就是當全部骨骼同級的時候這個黑線就會消失掉了呢)
ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

所有的骨骼都需要Connected。(Ctrl+P的時候選擇Connected)

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

【Blender】Bone Connectedhttps://www.zhihu.com/video/1247581634322038784

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

【UE4】Spline文字模型骨骼https://www.zhihu.com/video/1246914689067249664

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

七、填寫藍圖

我們先建立一個Actor,添加Skeletal Mesh和Spline。(并選中Mesh相對應的文字模型)

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...
【原版——沒有中空的文字】
ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

這裡的藍圖跟這裡程式化生成的類似。

X Tesla:【UE4】Spline BP 程式化模型/動畫軌迹(爆肝般的詳細)​zhuanlan.zhihu.com

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...
ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...
注意這個Point Index 和 Index的差別。

如這個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 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

當然還要注意這個索引,坑死我了。(UE4這樣兩級的骨骼竟然不是按照順序來的)

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...
自己可以使用GetBoneName進行檢驗
ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

我們在Spline Details下打勾Closed Loop,這樣的話,首尾骨骼就會連接配接起來了。

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

上圖紅色框選的部分勾選之後呢,我們就可以直接進行編輯了

(但是不要挪動,我們隻是點選選擇看生成點的索引罷了,不要挪動點的位置,否則Spline不會更新了)
  • 不能編輯——大紫紅色
  • 可編輯——紅色和白色
【改良版】【有中空的文字】
ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...
ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...
  • 設定First Index為第一個骨骼
  • First Bone Order Offset 為骨骼偏移值(對于有中空的文字)
  • Bone Length為骨骼的總長度(有多少數量的骨骼)
ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...
ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

八、最終SplineBP點+文字骨骼 程式化對應關系大檢查

(視訊為舊版,但大概就是這麼個意思,可以通過程式化來控制我們的Spline線條)

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

【UE4】Spline BP+文字骨骼https://www.zhihu.com/video/1246919176465039360

----------------------------------------------------------------------------

ue4 怎麼傳遞變量到另一個藍圖_【UE4】Niagara |Spline BP| 帶骨骼文字模型程式化對應Spline各個點【上篇】...

文字中空部分添加一個新的Spline即可。設定初始骨骼和總共骨骼數量即可。

有意思吧 待續~

回家吃飯!

繼續閱讀