UE4之替换第三人称模板
為什么要替換第三人稱模板?
1可以使用我們自己的角色來進行游戲,是不是很有趣呢?
2.了解虛幻中retarget mannager、動畫藍圖、動畫序列等等,主要是動畫模塊。
如何替換第三人稱模板?
1.找到一個喜歡的角色,將其導入虛幻中
2.添加第三人稱模板
3.進行retarget,將動畫映射到自己的角色上,
4.替換模板中的網格體和動畫藍圖
5.運行,可以操控自己的角色進行移動
1.找到一個喜歡的角色,將其導入虛幻中
添加了虛幻官方提供的悟空角色
2.添加第三人稱模板
點擊AddNew選擇Add Feature or Content Pack
接下來打開第三人稱的地圖,點擊運行,我們可以操控機器人在場景中自由移動
對第三人稱模板的分析
1.第三人稱角色的構成:
膠囊體:一個類似膠囊的圓柱,主要用于簡單碰撞時作為物體的邊緣
Arrow:規定向前的方向
Mesh:角色的網格體設置
CameraBoom:彈簧臂組件
PlayerCamera:玩家的攝像機
Character Movement:定義了角色與移動相關的各個參數
2.當按下運行之后,可以按下鍵盤wasd對機器人進行控制,這是因為在項目設置中已經對輸入進行了一些動作映射. PlayerInput中定義了 兩種結構體。第一種是?FInputActionKeyMapping,它定義了操作映射(ActionMapping)。另一種是?FInputAxisKeyMapping,它定義了軸映射(AxisMapping)。
ActionMappings
將離散按鈕或按鍵映射到一個"友好的名稱",該名稱稍后將與事件驅動型行為綁定。最終的效果是,按下(和/或釋放)單個鍵、鼠標按鈕或鍵盤按鈕將直接觸發某個游戲行為。
AxisMappings
將鍵盤、控制器或鼠標輸入映射到一個"友好的名稱",該名稱稍后將綁定到連續的游戲行為,例如移動。在軸映射(AxisMapping)中映射的輸入會被持續輪詢,即使當它們剛剛報告它們的輸入值當前為零時也是如此。這可實現移動或其他游戲行為的平穩過渡,而不是由操作映射(ActionMapping)中輸入所觸發的離散游戲事件。
3.當機器人從樓梯跳下的時候,可以看到角色做了一個跳躍動作,但是我們并沒有按鍵來讓機器人進行跳躍,為什么機器人會自動跳躍呢?
為了解答這個問題,需要看一下機器人是怎么運動的?首先從按下wasd鍵開始。
打開第三人稱模板的藍圖類。
WA分別控制事件MoveForward和MoveRight,當按下W鍵后,更新Input Axis MoveForward的值,Axis Value的值為1,現在Z為是正向運動,也就是向前運動,人物的Velocity也就是速度會迅速遞增至藍圖類中設置的最大速度600,這時并沒有動畫的改變,接下來就需要查看mesh調用的動畫藍圖了。
動畫藍圖編輯器中大致分為8個模塊:
1.工具欄:動畫藍圖編輯器中的?工具欄?允許你編譯藍圖,保存,在?內容瀏覽器?中找到動畫藍圖資源,以及定義?類設置(Class Settings)?和?類默認值(Class Defaults)?設置,與?藍圖編輯器工具欄?相似。 工具欄最右側的是?編輯器工具欄?,它使你能夠在虛幻引擎4中的不同動畫工具間進行切換。
2.資源快速訪問欄:可以快速訪問所有有關該網格體的資源
3.視口:視口?窗口允許你預覽選定的骨架網格體上的動畫資源的播放并提供與資源相關的信息。你可以更改照明模式,顯示或隱藏骨架的骨骼,調整動畫播放速度,甚至將骨架網格體設置為在轉盤上自動旋轉,以便從各個角度查看它。
4.事件圖表:每一幀都會對數據進行更新,將更新的數據傳入動畫圖表,最常見的用途時更新混合空間和其他混合節點使用的值,來驅動動畫圖表中的動畫。
5.動畫圖表:評估當前幀的股價網格體的最終姿勢,可在其中放入動畫節點?以采樣動畫序列,使用骨架控制執行動畫混合或控制骨骼變形。 之后,逐幀將結果姿勢應用到骨架網格體。執行流不基于事件,進行逐幀評估
6.我的藍圖:藍圖編輯器中還具有?我的藍圖(My Blueprint)?面板,其中包含圖表、函數、變量和動畫藍圖中包含的其他相關屬性的列表。
7.細節/預覽場景設置:動畫藍圖編輯器中的?細節(Details)?面板與藍圖編輯器中的?細節面板?相同,你可以在其中訪問和編輯與任何已創建的變量以及已放置在圖表中的節點相關的屬性。
同樣位于此部分的是?預覽設置?選項卡,它使你能夠定義要用作預覽的?動畫模式(Animation Mode)?或?動畫(Animation)?等視口設置,切換用于預覽的?骨架網格體,以及要應用的視口照明和后期處理設置,以便你可以在應用不同照明的情況下預覽設置。
8.動畫預覽編輯器 / 資源瀏覽器:動畫預覽編輯器?允許你更改將在視口中更新骨架網格體的變量。 你也可切換到?編輯默認值(Edit Defaults)?模式并更改變量,然后將它們應用為默認值。?資源瀏覽器?停靠在單獨的選項卡中,它允許你查看與關聯的骨架資源關聯且可由其使用的所有動畫資源。
事件圖表
根據上圖可以看到,在模板中創建了兩個變量:Float類型的名字為Speed、布爾類型的名字為IsInAir?,可以知道一個變量為速度,一個標志著是否在空中。通過修改這兩個值來修改動畫圖表中的輸出的最終Pose。接下來打開動畫圖表
動畫圖表
可以看到事件圖表包括了一個輸出姿勢和一個狀態機,有關狀態機的描述請參見狀態機,在這里不在介紹。
狀態機
打開第三人稱模板的狀態機就可以看到有一個入口連接著Idle/Run,并且通過狀態檢查,來切換到跳躍狀態,在通過狀態檢查,若狀態符合就切換到跳躍循環,在通過狀態檢查,若狀態符合就切換到跳躍結束,
,在通過狀態檢查,若狀態符合就切換到idle,形成一個閉環結構,接下來我們看一下idle中的狀態吧
在這里它使用了一個BlendSpace 1D,通過傳入的Speed數值來將兩段動畫序列進行混合,輸出混合的pose,當我們沒有按下wasd時,人物的速度為0,則現在處于Idle狀態,所以輸出的姿勢為Idlepose,動畫藍圖便會在Tick中對Idle動畫序列進行評估,拿到最終的Pose,
jumpStart、JumpLoop、JumpEnd:分別調用的不同的動畫序列
接下來開始分析如何進入這些狀態
JumpStart:用戶按下了空格鍵,IsInAir為真,,就進入了JumpStart的狀態,此時就播放開始起跳的狀態。
jump Loop:當進入開始起跳的狀態后,若開始起跳的動畫播放超過90%就開始播放JumpLoop的動畫。
JumpEnd:不再空中的話,就判定跳躍動作結束,開始播放停止跳躍動畫序列
Idle:當JumpEnd動畫播放超過90%就進入Idle狀態。
了解了動畫切換的原理之后,接下來需要將將模板中的動畫序列替換為我們自己的動畫序列。
3.進行retarget,將動畫映射到自己的角色上
使用Rwetarget Mannage對機器人和悟空進行映射???????
i.切換至骨骼編輯器,打開retarget Mannager
點擊Select Rig,選擇綁定,我們選擇人形綁定
選擇AutoMap 如自動匹配有問題,則需要手動指認
接下來打開悟空的網格體,按照同樣的方式設置
上面我們將機器人和悟空的骨骼分別對照虛幻的統一骨骼進行了一一對應,就等于悟空的骨骼和機器人的骨骼進行了關聯。
注:有的模型初始Pose可能不同,需要將初始Pose調整為相同Pose后點擊ModifiesPose保存。
做好匹配后,找到機器人的動畫藍圖,右鍵選擇retarget Anim BluePrints,對現有的動畫序列進行retarget并復制動畫藍圖。
選擇剛剛創建的wukong骨架,點擊Retarget。
會在Content目錄下生成若干動畫序列和動畫藍圖,
4.替換模板中的網格體和動畫藍圖
接下來我們就可以替換模板中的mesh和動畫藍圖了
替換完Mesh和動畫藍圖的第三人稱模板,可以看到有的骨骼運動的位置是有問題的這個時候我們需要檢查一下retarget中對應的骨骼是否存在問題,如果有問題修正過來就可以了。
你學會了?
總結
以上是生活随笔為你收集整理的UE4之替换第三人称模板的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 经典算法之顺序查找法
- 下一篇: KVM之libvirt 介绍