距離上一篇更新有些時間了,一方面是在處理回國找工作的事情,另一方面遊戲開發開始變得十分混亂,許多項目都在平行開發,沒有達到一定進度實在不好意思寫出來😅。
最近很幸運地找到了一份正職,成為了映像公司的 3D 動畫師。雖然踏入了非遊戲也非軟體的行業,但我仍會利用空閒時間繼續開發這個遊戲專案,畢竟我對遊戲還是有許多創作想法,希望有一天能將它完整呈現給大家!
有點離題了,回到正題吧!這篇主要介紹 UE 5.5 更新的 Motion Matching 範例內容,並說明上篇提到的Traversal問題是如何解決的,還有一些新增功能等等。
隨著UE 5.5版本到來,Game Animation Sample Project(以下簡稱GASP)更新了許多內容,我也很興奮地將更新內容整合進我的遊戲,讓我們來看看有GASP有哪些重要更新吧。
蹲下和衝刺動畫是整個Locomotion不可或缺的一部分,在上個版本中雖然有提供部分動畫,但是並沒有使用在Motion Matching中,而當時雖然有人分享加入蹲下和衝刺的方法,但我堅信等待官方更新再加入是最好的選擇。
整合成果:
這是一個非常令人疑惑的更新,GASP加入了State Machine結合Motion Matching的動畫系統,號稱可以使用較少的動畫並產生相近的結果,當初提倡Motion Matching的原因就是可以讓美術可以擺脫太過複雜的設定,而現在又將State Machine帶回來,實在不知道用意為何,或許是效能方面或是有其他方面的好處,但我目前沒有太多理解。
Traversal系統加入了抓住邊緣的功能,角色在空中時可以按下跳躍鍵來抓住邊緣並爬上去,這是我之前沒預期到的更新,很高興他們更新了這樣的內容,使得Traversal系統可以有更多變化和玩法。
上篇文章有提到我將原生的Motion Matching動畫和系統(UEFN骨架),動態Retarget到角色Mesh身上(Mannequin骨架),而這樣會導致Traversal的Root Motion無法傳遞給角色Mesh播放,其中一個解決方式就是將Traversal動畫手動Retarget成Mannequin骨架,並讓角色Mesh播放Traversal動畫。
但是這樣會產生一些問題,UEFN骨架中有個叫做attach
的骨頭,Traversal動畫利用這根骨頭在動畫中的位置決定Motion Warping要移動到哪裡,例如攀牆動畫利用attach
骨頭來定義手要抓在牆的邊緣,而不幸的Mannequin骨架並沒有這跟骨頭,導致動作有巨大的偏差,那該怎麼辦呢?
我們可以在Mannequin也新增attach
骨頭,然後在IK Retargeter中的Chain Mapping定義他們的關係,但即便attach
骨頭的動畫資料成功轉移過去了,由於兩個骨架還是有Transform的落差,因此Motion Warping的位置仍然不會完全正確。
經過許久的研究後,我發現我們其實可以不用attach
骨頭,而是用靜態位置來定義,在Anim Montage中,將Warp Point Anim Provider從Bone改為Static,並在Warp Point Anim Transform中輸入位置,透過調整Location將邊緣位置移動到角色要抓住的地方,如下圖。
透過這個方法,我們可以將Traversal動畫Retarget成Mannequin後,再將Motion Warping目標調整到符合Mannequin骨架的位置,如此一來就能正常撥放Traversal動畫,可喜可賀。
上述有提到由於Mannequin和UEFN有Transform上的差別,即便我們對準了手部的位置,在攀牆等動作上仍然會讓腳底陷在地面,導致Collision發生問題,我們可以在另外複製一個Motion Warping,在爬上的時間範圍內讓角色再往上一點位置,如此一來就能讓腳部貼準地面。
Retarget也是一項相當重要的工程,畢竟兩邊骨架差距不小,我也調整了Retargeter許多次,確保動作是順暢且自然的,其中我遇到了一個問題,就是Root Motion在Retarget後遺失了,後來發現要在Chain Mapping中點擊Root,並把Translation Mode改成Globally Scaled,這樣才能確保資料正確轉移。
其實將更新的GASP整合進來是個挺耗費時間的事情,畢竟得一一檢查改動了什麼,除了程式碼的修改,還必須重新設置像 Pose Search Database、Chooser Table 等依賴關係,Retarget也是有許多眉眉角角,要把兩邊骨架完全對上真的很不容易,但這些都是基於我想用Mannequin當作開發原型的關係,真希望UE當初直接給Mannequin動畫就好了。
在最後生還者中,角色們使用L型手電筒,在昏暗的場景照亮室內與殭屍,沉浸效果十分十足,因此我也嘗試在遊戲加入這項功能。
我找尋了手持手電筒動畫,和角色動畫系統結合,讓角色能夠單手持手電筒,並在手電筒上新增Spotlight,搭配IEX Texture就能改變光照樣式,效果非常不錯,如果之後角色有背包等裝備,也可以添加L型手電筒,而我也在考慮提供幾種不同的IEX Texture和光照強度讓玩家切換。
最近我在思考要如何建構場景,由於我是獨立開發者,時間與人力都是有限資源,因此我開始研究 PCG(程序化內容生成) 和 Landscape AutoMaterial,希望藉助工具來快速生成漂亮又高效的場景,而這部分也是我目標職業–––技術美術的範疇。這部分之後會與大家分享,感謝你的閱讀!
如果有興趣的話,可以觀看目前開發中簡易的Demo影片: