角色動畫是構(gòu)建虛擬世界(游戲和虛擬社區(qū))一個比較重要的內(nèi)容。因為虛擬世界最關(guān)鍵的是人與虛擬角色(即“化身”逾滥,Avatar)之間的交互峰档,會動的世界才有生機。角色動畫可分兩種:預(yù)定義動畫(predefined animation)和程序動畫(procedural animation)寨昙。預(yù)定義動畫是事先由美術(shù)師制作好的動畫序列讥巡,程序運行時只能播放,不能改變舔哪;程序動畫是在程序運行時實時生成欢顷。相比預(yù)定義動畫,程序動畫能實現(xiàn)更好的交互捉蚤。
程序動畫可以用來實現(xiàn)物理動畫(physics animation)抬驴,物理動畫可以讓角色根據(jù)物理規(guī)律對外界作出相應(yīng)的反應(yīng)動作。物理動畫現(xiàn)在已經(jīng)開始應(yīng)用到3D游戲里了外里。比如Crytek公司的CRYENGINE 2引擎就采用了這項技術(shù)怎爵,例如角色可以根據(jù)地形的坡度來自動調(diào)整站立的身姿,如下圖所示:
IK就是一種實現(xiàn)程序動畫的方法盅蝗。骨絡(luò)動畫分為FK(正向運動學(xué)鳖链,Forward Kinematics)和IK(逆向運動學(xué),InverseKinematics)兩種。FK這里就不細(xì)講了墩莫,是最常用的設(shè)置動畫的方法芙委。這里主要講一下IK,IK和FK相反狂秦,它是給定末端作用器的位置或方向灌侣,來反求各節(jié)點的位置。如下圖所示:
IK主要用于程序動畫中裂问,比如跑步時人的腿根據(jù)地形進(jìn)行自適應(yīng)侧啼,用手拿東西,用手握扶手開門等堪簿。如下圖所示:
IK計算有2種方法:解析法和迭代法痊乾。解析法速度快,但只適用于節(jié)點較少的情況椭更;迭代法通用性強哪审,但有時容易得到局部極小值。所以一般是這兩種方法混用虑瀑。IK的解的個數(shù)有多種情況:
(a) 無解????????????????????????????????? (b) 唯一解????????????????????? (c) 兩個解???????????????????????????????(d) 許多解
若節(jié)點數(shù)大于2個湿滓,就會出現(xiàn)有許多解的情況滴须,那么如何選擇最佳解呢,對人的手和腿來說叽奥,每個關(guān)鍵都有約束(轉(zhuǎn)動角度的范圍)扔水,那么就要考慮這些解有沒有滿足這些約束。但是可能滿足這些約束的解不止一個而线,這時就要選擇一個最佳的铭污,比如視覺效果最好的。一種方法是選擇消耗能量最少的那個(比如手臂各關(guān)節(jié)抬得最低)膀篮。
FK可以實現(xiàn)比較自然的動畫效果嘹狞;IK可以用在程序中實時生成骨絡(luò)的關(guān)鍵幀,這樣就可以使角色根據(jù)外界環(huán)境實時的作出動作的反應(yīng)誓竿,更真實磅网。因為FK和IK各有優(yōu)缺點,所以往往FK和IK混用(FK/IK blend)筷屡。