遊戲和CG裡的人物,都是怎麼動起來的(#2)
骨骼的父子關係
在上一文中,我們提到了移動,旋轉骨骼就能實現人物的動畫了,但是光靠這樣的移動,還是相當的緩慢,所以就有人創造了父子關係這樣的一個概念。父子關係如其字面意思,比如我們找來三個關節,A,B和C:
這裡畫面中只有兩個骨骼,但是為什麼我寫了三個字母呢?因為實際上我們建立的是三個關節點,而骨骼其實是計算機通過我們建立的關節點算出來的。三個關節點對應了兩根骨骼。而單獨的一個關節點是無法創造出骨骼的。而骨骼的建立,一定是父關節向自己的子關節方向建立,父關節不會和不是自己子關節的其他關節創造骨骼。
我們讓A是B的爸爸,B是C的爸爸,這樣就締造了兩對父子關係了。
一般的三維軟體都會使用樹狀圖,來現實當前場景裡的物體結構,如上圖我們就可以清晰的看明白父子關係了。
如果我們這時候新建一個關節D。不然其成為任何一個關節的兒子的話,那麼場景物體結構就是這樣的:
而這個父子關係有什麼用呢?其做用就是讓子物體的位置,朝向,大小,都基於父物體的位置,朝向,大小。
比如,如果我們將上圖的A向畫面右側移動1CM,那麼其下的B也會跟著移動1CM。又因為B移動了1CM,C也會跟著一起移動。而D則不受影響。
而旋轉的影響則有些不同,旋轉A的時候,B不僅僅會跟著一起旋轉,而且還會發生相對世界座標的位移:
因此,有了這種父子關係之後,編輯骨骼就更加的方便了。
各位可能會注意到在PS1時代的時候,人物有機率會出現四肢的運動錯位的景象,這正是因為當時這種父子關係的運用並不好,所以很多動畫會需要分開人物的身體與四肢各個關節的骨骼來調整,最後製作出來的動畫就容易出現錯位。
IK與FK
IK與FK是兩個不得不提到的、重要的關於人物動畫的技術了。
先從FK講起。Forward Kinematic,前向動力學,聽起來是一個高大上的名詞,但其實沒有什麼大不了的。上文提到的父子關係中,通過父物體的改變得出子物體的相對位置的這個計算方式,就是FK。
而與之相對的,IK,Inverse Kinematic,反向動力學,則是通過修改子物體的位置來影響父物體的改變。但是具體怎麼影響呢?我們再利用上文的A,B,C關節進行舉例。假如讓三者形成IK關係,然後移動子關節C,就能得到如下的效果:
這裡發生了什麼呢?其實是電腦利用IK演算法,通過得知子關節C的位置後,反向去調整A和B的位置和朝向,在不改變A,B,C形狀大小的前提下,儘可能使關節C處在我們指定的位置。
如果我們指定給C的位置C無法達到,也就是A,B伸到最長,也夠不到C的位置的話,就會出現如下圖所示的情況:
而IK非常的實用,比如我們希望一個人的手掌處於某一個位置,比如插在褲子口袋裡,或者放在胸前,那麼直接將手掌放在那個位置之後,小臂,上臂,甚至肩膀就會自動的以合理的姿態處在他們應該處在的位置了。
利用IK來擺動怪物的腿:
約束
約束,Constraint,顧名思義,就是約束關節點或物體的功能。一般來說,都是將某某物體約束到某個物體上,和父子關係有點類似,但是功能更加豐富一點。比如說,我們創造如下圖所示的5個關節:
他們在場景裡的物體結構如下:
這個時候,因為我希望獲得的是兩條獨立的骨骼,所以D不能成為A的子物體,不然就會變成這樣:
但是我又希望關節點D可以隨著A的移動而移動,那麼我們就可以將關節D約束到關節A上:
這樣他們就可以一起移動並旋轉了,不過這裡我們發現其旋轉並不像是在父子關係中的旋轉那樣。其實這只是約束方式的不同,約束還有好幾種不同的約束方式,其中就有可以讓他們表現起來像父子關係一樣的約束方式:
其他的約束方式我就不一一贅述了,感興趣的可以自行了解。
控制器
控制器,其實就是上文提到的約束、IK、父子關係以及其他一些額外功能的合集。而一般的建模軟體也非常貼心的為使用者自帶了標準人體骨骼的控制器,下圖所示的是C4D裡自帶的人物控制器:
人物旁邊這些花花綠綠的線條方框,就是一個一個的控制器。
而使用這些控制器來控制人物,就相對簡單輕鬆的多了。
控制器控制的依然是骨骼,不過其將對骨骼的操作簡便化了。
補間動畫
在製作動畫的過程中,許多的動作並不需要每幀都進行調整。很多時候,我們只需要給電腦指定動作開始的時候、人物的樣子和動作結束的時候人物的樣子,就可以讓電腦自動算出中間的過渡了。
比如,我指定一個起始動作,如下圖:
然後我再指定一個結束動作如下圖:
電腦就可以自動將中間的過渡計算出來了:
並且我們可以看到動作的曲線:
通過調整這些曲線,便可以使得我們的動作更加的自然連貫。
動畫素材庫/動捕
即便有了上面所述的各種功能,創作自然的人物動畫依然不是一件輕鬆的事情。因此在資金不足的情況下,使用動畫素材庫的動畫為模板,進行各種微調也不失為一種方案。此處推薦一下Mixamo。不過這個網站現在對於做動畫的兄弟來說可以說是無人不知,無人不曉了。
而在團隊擁有充足資金的情況下,動捕則是一種即高效又能有非常好效果的解決方案了。而且最近,利用深度成像的深度感應類的動捕攝像頭的價格也在逐漸親民化,也許之後有一天我也可以搞一個來試試。
最後是帶貨時間,講一下我做的對話臺詞編輯器上架Unity Asset Store了,這是讓你通過視覺化的方式,來編寫多分支多選項的臺詞的工具。支援任何語言的本地化。並且不需要你編寫一行程式碼就可以使用大量的對話特效。目前在商店獲得五星好評。這裡分享一下開發經過和完整的使用教程。 各位大哥要是覺得好用別忘了在Asset Store上留下個好評啊。
點此跳轉到Unity商店。
另外,最近會開始陸續在我的Bilibili賬號@深空愛吃肉包兒和推特@Lawrence Peng這兩個帳戶上更新關於我現在正在製作的遊戲的開發日誌,感興趣的可以前去看看,謝謝各位了。
來源:機核
原文:https://www.gcores.com/articles/133920
相關文章
- 遊戲和CG裡的人物,都是怎麼動起來的呢?遊戲
- 現階段的熱門遊戲都是怎麼來的?遊戲
- 小城市裡的小人物,舊時代下的窮玩家,電子遊戲從來都是奢飾品遊戲
- 使用js實現圖畫人物動起來的方法JS
- 讓人物在地圖上動起來地圖
- 為什麼遊戲裡的閃避都是用“滾”的?遊戲
- GitHub 是怎麼火起來的Github
- 遊戲中的角色是如何“動”起來的?遊戲
- “S級>ABC級”是怎麼在遊戲動漫中興起的?遊戲
- 你來講講AQS是什麼吧?都是怎麼用的?AQS
- 抖音百萬點選的“渣男”動態桌布,喜歡的小姐姐怎麼動起來?
- hadoop,spark,Zookeeper,,, 這些名字都是怎麼來的呢?HadoopSpark
- 自動做遊戲(2):自動生成人物行走圖遊戲
- 用 Pygame 使你的遊戲角色移動起來GAM遊戲
- JS/TS專案裡的Module都是什麼?JS
- Java的日期類都是怎麼用的Java
- 視覺享受和象徵意義,遊戲皮膚是怎麼興起的?視覺遊戲
- BAT的人都是怎麼學習的BAT
- 是什麼讓你做的小遊戲聽起來怪怪的?遊戲
- 今天下來個Lucene 怎麼執行都是錯。
- HttpRunner3的用例是怎麼執行起來的HTTP
- 大廠都是怎麼SQL調優的?SQL
- 我怎麼看元宇宙和遊戲行業的未來(上)元宇宙遊戲行業
- 我怎麼看元宇宙和遊戲行業的未來(下)元宇宙遊戲行業
- CLR裡的MethodTable,MethodDescChunk,MethodDesc,FixUpPreCode都是什麼意思
- 華為這21條,都是在炮火中打出來的經驗,刻在心裡,落在行動
- 那些成功的二次元遊戲都是怎麼做長線運營的?二次元遊戲
- 當年“你說什麼,我都能實現”的軟體公司,後來都是怎麼死的?
- 恐怖遊戲的當下和未來?來聽聽Gamera和製作人們怎麼說遊戲GAM
- 為什麼那麼多的遊戲主角都是“啞巴”?遊戲
- 蘋果都是怎麼賺果粉的錢?——資訊圖蘋果
- 資料+案例解析:美國暢銷榜頭部遊戲都是怎麼做IAP的?遊戲
- 產品版本生產怎麼快起來
- 遊戲裡,每一秒都是即興演出。遊戲
- C語言中,&和&&都是做什麼的?C語言
- 拉馬努金的那些壯觀的公式,都是怎麼發現的?公式
- 《隱形守護者》之後,那些火不起來的真人互動遊戲遊戲
- 來自Riot 的一份遊戲美術教程(六):人物動畫遊戲動畫