【遊戲開發閱讀列表2】動畫(Anima2D、粒子、物理等)
遊戲中動畫的實現有很多不同方法,幀動畫、骨骼動畫、基於物理的動畫、基於Shader的動畫、粒子等。
在這篇文章中,列出了我最近讀到過的不同種類動畫入門級的文章、視訊。關於Unity動畫狀態機這一類太常見的,這裡不再贅述。
所分享的內容都親自品嚐,保證無毒無害,營養價值極高!在網際網路上我們缺少的不是內容,而是索引。
1. 基於物理的動畫
與其他的動畫相比,基於物理動畫最大的好處是互動時更真實。
這篇文章非常詳細的介紹了Verlet Integration,基本不需要什麼數學基礎。並且有大量示例直接在瀏覽器執行。最後兩個示例可以說非常酷炫了。
一個示例是rag-doll(布娃娃)。雖說這裡只是2D模型,很多AAA遊戲中,屍體也是用類似的方法在3D中模擬的。
另一個示例是Fabric(布)。
用上面學到的Verlet Integration或者別的方法,可以簡單的實現Spring(彈簧)的效果。利用Spring,可以實現頭髮、絲帶、裙子等真實物理效果。這裡提供兩種效果拋磚引玉。
第一篇文章更加具體,從如何寫Mesh講起,第二篇只講了大體思想。如果覺得第一篇中的Mesh程式設計還不夠入門,推薦**《Unity實現歡樂球球(上)Mesh生成》**。
第二篇文章的作者也寫過Spring實現2D水面的文章,仍然非常簡潔,感興趣也可以看一看:
- 《Modeling 2D Water with Springs: Part 1(用彈簧建模2D水面1)》
- 《Modeling 2D Water with Springs: Part 2(用彈簧建模2D水面2)》
2. 骨骼動畫
我本身3D動畫實踐得非常少,而且傳統骨骼動畫值得閱讀的材料非常容易找,這裡不再推薦。
Unity有一個免費的外掛叫做Anima2D,提供了非常好的2D動畫開發流程。其中的一些原理與3D動畫是相同的(例如骨骼、IK等)。一套基本使用教程:
- 《Anima 2D Basics (EP.1) Tutorial - Setting up Project and Sprites》(視訊)
- 《Anima 2D Basics (EP.2) Tutorial - Setting up Meshes and Character》(視訊)
- 《Anima 2D Basics (EP.3) Tutorial - Setting up Bones and IK》(視訊)
提到骨骼動畫,有一個不得不提的東西,就是Inverse Kinematics(IK)。如果對其原理感興趣推薦幾篇博文:
- 《An Introduction to Procedural Animations》
- 《The Mathematics of Forward Kinematics》
- 《Implementing Forward Kinematics》
- 《An Introduction to Gradient Descent》
- 《Inverse Kinematics for Robotic Arms》
- 《Inverse Kinematics for Tentacles》
又是Alan Zucconi的博文,這位老哥每次都寫得具體、全面。這一系列中為了避免通過數學推導求解IK,直接使用Gradient Descent(梯度下降)求解,如果瞭解過機器學習的話,應該不陌生。
但梯度下降是個迭代演算法,效率比較低。之後他又寫過在只有兩個自由度下2D機械臂IK的數學推導:
3.物理與骨骼動畫的結合
前面基於物理的動畫中已經提到了Ragdoll、Spring。基於物理的動畫和幀動畫、骨骼動畫各有優劣,很多時候能夠組合在一起。
Unity中,Springs與骨骼動畫的結合:
- 《Anima2D Spring Bones Tutorial (EP 1) - Setting up base bones》(視訊)
- 《Anima2D Spring Bones Tutorial (EP 2) - Converting Bones to Spring Bones》(視訊)
仍然是Anima2D,只是使用了有Spring特性的特殊骨骼。下面的頭髮就是使用這種骨骼完成的。
EA的一些體育遊戲中,Ragdoll與骨骼動畫結合:
這是18年GDC的一個talk,可惜youtube上還沒有對應視訊。
4. 粒子
使用粒子,能夠實現技能特效、火焰、天氣等效果。
這是我見過最好的Unity粒子系統入門的視訊。
5. 其他
在動畫資源非常少的情況下,將IK、Ragdolls等方法發揮到極致來做出非常好的遊戲動畫。很有樂趣的一個分享。
Motion Matching是比較現代化的遊戲動畫技術,在《For Honor》、《The Last of Us Part II》等遊戲中已經使用。但由於他要求捕捉一套完備的動畫,在很多種類的動作中仍然是不可行的。在《For Honor》中,也幾乎只應用在了腳部動作。