Unity3D 快樂輪子 – Ragdoll System 布娃娃系統

前言

在許多遊戲或3D的場景中,有很多透過物理引擎去計算物件的碰撞,來造成比較真實的感覺。但在處理3D角色的物理計算,有一個特定的系統 稱為 – Ragdoll System。

這個系統應用很廣泛,例如遊戲中的場景物件,與人型主角進行碰撞,都能產生非常具有人類感覺的反應。或是自駕車的模擬器場景中,可以透過此系統,建構出各種車禍動畫,讓自駕車可以得到更廣的應用。

Ragdoll_animation

目的

本文除了介紹什麼是布娃娃系統之外,也會帶大家使用Unity3D引擎,實際的將自己的3D角色,套用設定Ragdoll System;讓自己的角色在3D引擎中變得更真實吧。

最後也會介紹幾套效果很好的現成 Ragdoll System Package,來加速你的開發。

什麼是Ragdoll System

先來看一下範例,由HakJak工作室製作的知名遊戲Guts and Glory

Guts and Glory 是鄉民公認的3D版快樂輪子(Happy Wheel)

可以看到遊戲裡面的角色,被各種物件碰撞不同的部位,造成整個3D人形角色有很多好笑有趣的動畫。而這樣的物理計算,就是所謂的Ragdoll System – 布娃娃系統。

Wiki 介紹的Ragdoll System由來

在早期電腦遊戲中,開發者通過手工製作一組按動作順序的角色圖像,並接連顯示出來以達到角色動畫的目的。這種技術對處理器的要求很低。

隨著電子科技的不斷發展,在遊戲中實現即時動畫逐漸變成現實。開發者用三維繪圖工具製作一個角色模型,並在合適的位置給角色安裝骨骼,通過遊戲引擎中的骨骼控制模板,控制這些骨骼的移動,而角色的表層隨著骨骼的移動而發生相應的變化。這樣的技術讓遊戲中的角色有更加多變豐富的動作可以變現。

但由於技術的限制,諸如骨骼的移動沒有類似肌肉的物質來約束,以致遊戲引擎在控制移動骨骼時,常常出現將骨骼移到一個在現實中不可能實現的位置,就像布娃娃,該系統由此得名。

第一個使用了布娃娃系統的遊戲是《侏儸紀公園:侵入者》,雖然該作漏洞百出,但還是因為率先使用了物理引擎而被載入史冊中。

當前的遊戲設計中,布娃娃系統常用在動作遊戲以及射擊遊戲中,且技術有了很大進步。玩家控制角色身體的一部分,其餘部分跟著運動,進而營造一種豐富的動作表達。

Unity3D Ragdoll System

開啟Unity3D以後,匯入已經Rigged過的人形(Humanoid)角色,例如從Mixamo下載的角色動畫模型。這邊要注意,布娃娃系統要能成功做動,正確的Rigged很重要。

接著我們從上方的選單,點選Game Object ,就會看到Ragdoll 。

點選Ragdoll以後,會跳出一個骨架對應的視窗。

這邊最重要的是把Ragdoll系統內建的骨架部位,一一與匯入的角色模型做骨架映射Mapping。簡單說,就是讓Unity3D 的Ragdoll系統知道,哪一個部位是屁股、哪一個部位是左腳、右腳,哪個部位是左手、右手。

最重要的是Pelvis,也就是對應臀部Hip,依序將其拖曳進入。

還有體重也是很重要的參數,會影響碰撞時,飛的遠不遠。例如上圖中,Total Mass輸入70公斤,概略代表這個角色的重量。

另外,還要注意的是人形角色的面向要與Z軸一致。

再來創造一個Physic Material ,讓物理引擎有個計算質量的參考。

並將此材質套入模型。

若想針對每一個部位微調質量與碰撞器大小,可以點選Window > Analysis > Physics Debugger 來開啟微調的視窗與顯示。

可以看到下圖中,人物模型出現類似香腸形狀的網格圍繞在手腳與頭上面。這個就是物理引擎做碰撞計算的依據,當然也能針對每一個部位設定不同的重量;以達到更精確的碰撞效果。

如此一來,Ragdoll系統已經設定好了。快點安排一些車子或是物件來碰撞角色看看吧!!!

效果更快更好的Ragdoll動畫混合插件Packages

根據上面的教學,我們很快速地完成了Ragdoll設定,但若您想要更精細的角色動畫與物件交互時產生的碰撞動畫作出更完美個交互,可以直接購買現成的套件,讓角色碰撞發生時,可以有不同百分比程度的混合。

而Unity中有個知名的內建動畫混合套件Mecanim也能跟Ragdoll系統做出完美個混合。也有開發者將此功能做成插件Mecanim Ragdoll Animation Blender

另外舉PuppetMaster的例子來說,影片中人物碰撞到頭的時候,並不影響人物原本的前進,只有頭會縮一下,但當整個人物被撞倒地的時候,角色會開始抱頭。這些都是透過插件,快速的把Ragdoll與原本的角色動畫作調整。

因此,若要效果更細膩的操作,可以考慮直接購入套件,提升開發速度與節省開發成本。

小結

Unity3D 已經將Ragdoll的設定很完整的整合成一個方便又快速的功能,所以可以透過骨架的對應,快速地讓Ragdoll效果直接地與物理引擎做結合。

最後來一段有趣的Ragdoll Man影片,消遣一下。慶祝自己學了一個相當好玩的布娃娃系統吧~

參考:

下面有幾個好用的Ragdoll套件,可以將原本的角色動畫與Ragdoll碰撞動畫作很好的過渡混合。可以點進去看看套件的影片介紹,了解其原理。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *