【簡介】
FBIK——FullBodyIK:全身反向動力學系統,是maya7.0后新加入的骨骼系統。雖然它是motionBuilder骨骼系統的精簡版,但功能依舊強大。新版本的Maya除了改進FBIK和Maya動畫模塊的結合,在外觀上也有了一些變化(骨骼效應器的標記由原先的線框變成了實體小球)。
FBIK系統可快速的完成二足和四足骨架的綁定,且操作方便靈活。要使用FBIK系統,首先要了解它的幾個特點:
1.FBIK是通過核對層級或骨骼名稱進行解算器生成的。
2.骨骼的初始Pose應盡量是T造型(手臂骨骼應是平行于地面),朝向必須是Z軸正向,腳掌骨骼應和地面形成夾角而不是平放,膝蓋間關節角度應小于180度。當然,四足角色的手臂骨骼和腿部是一樣的。具體可參考Visor中的范例。
3.新的Maya版本中,為了規范骨骼層級的名稱,已經去掉了傳統層級的命名,直接采用FBIK的命名方式。而層級名稱中,有兩個比較特殊: LabelArm和LabelLeg。使用這兩個名稱,將會自動將所選骨骼的子級按順序自動命名。例如對肩膀骨骼執行LabelArm,就會出現Shoulder,Elbow,Hand……直到最后一個子骨骼。
4.可以對FK骨架和反應器設置動畫關鍵幀,但不應對原骨架設置。
5.FBIK系統中,IK和FK模式在于交互預覽時區別不大,使用它們的不同在于動畫關鍵幀之間的解算效果:IK是以直線計算效應器間的路線,而FK則是弧線。
6.FBIK系統中一個重要的功能就是Pin(固定)。Pin不是約束,你所看到的效果只是交互的過程,必須對反應器設置動畫關鍵幀才能看到真正的動畫效果。
7.FBIK效應器由于內置復雜連接,初始位置常常非零,在動畫數值上的操作會比較棘手;在使用過程中,效應器偶爾會出現無法通過撤銷操作而返回原位的情況,因此需要使用GoToStancePose功能。8.fbik效應器可增加多個輔助效應器和輔助軸心,實現靈活的關節控制。
【fbik的創建基礎】
創建fbik系統,首先角色的關節或關節層級必須使用規范的命名。
fbik有四種關節:basejoints(基本關節),rolljoint(旋轉關節),auxiliaryjoints(輔助關節),accessory and additional joints(附加關節)。基本關節是角色骨架中的主要關節,嚴格對應fbik的規定名稱,如臀部,脊椎,頭部,膝蓋,腳踝,肩膀,手肘,手腕;
旋轉關節主要用于輔助創建真實的關節扭曲運動,如肩膀和手肘之間的關節,手肘和手腕之間的關節,臀部和膝蓋之間的關節,膝蓋和腳踝之間的關節;輔助關節用于制作細小的關節分支效果,如脖子,肩膀領口處,手掌,手指,腳掌,腳趾;附加關節并不包含于fbik系統中,它們僅用于額外的運動,如辮子,尾巴用的關節鏈。基本關節是必須的,其他的關節可根據需要進行選擇。
jointlabels(關節層級)并不是場景物體的名稱,而是一個標簽分類,用于識別效應器應當控制的關節效果;jointnames(關節名稱)則是關節物體的實際名稱。
"關節層級"和"關節名稱"實際上并沒有太大的聯系,它們是在增加fbik effector(fbik效應器)時可選的識別方法:bylabel或者byname。"關節層級"在使用上較為簡單方便,但無法使用更復雜的輔助關節,如"旋轉關節"和部分"輔助關節";"關節名稱"即可使用特定的fbik效應器,同時在蒙皮權重繪制時易于識別所選關節。不過通過bylabel的方式,建立basejoints(基本關節)加auxiliaryjoints(輔助關節)的組合足以應付多數情況。
以下圖表是規范的關節層級和關節名稱,以及系統識別它們后所生成的效應器名稱。
#表示數字,如1,2,3,4……
此外,如collar(領口),chest(胸部),wrist(手腕),ankle(踝關節)等此類非標準名稱,fbik不會對其進行識別,也就是不會增加相應的效應器來控制這些骨骼。
接著上文
相對于傳統的骨骼綁定,fbik對于骨骼關節的朝向細節并沒有嚴格的要求,因為它是通過特殊的fbik解算器來計算結果的,就像內核布料系統的內核節點一樣。fbik系統是基于命名創建的,這里我選擇較為實用的label方式進行。
1.創建角色骨架。在正交視圖中創建符合角色動畫需要的骨架,可以有兩個選擇:手動繪制或者從visor庫中將fbik范例的骨架拖入場景后刪除附帶的fbik解算器。
2.顯示關節標簽。在此更正上篇內容中的小錯誤:jointlabel直譯是"關節標簽"的意思,不過為了更好的理解名稱的結構,因此我習慣稱它為關節層級,于是就忽略了它的字面意思。
顯示關節標簽有兩種方法:displyanimationjointlabels;skeletonjointlabeling。不過 disply的功能只相當于jointlabeling菜單下的toggleselectedlabels,需要先選擇關節。我直接執行 showalllabels顯示所有關節標簽。
3.添加關節標簽。如果是手動創建的骨架,關節標簽會顯示為none,也就是沒有;如果是fbik范例,關節名稱和關節標簽都已經具備。
(1)將addjointlabels菜單拖拽至一邊,先選擇骨架z軸正向的右邊關節,添加labelright;
(2)選擇手臂(腿部)的主關節,添加labelarm(labelleg),系統將會自動賦予每個子關節一個標簽;
(3)如果不是按范例骨架那樣的關節層級,出錯的標簽就需要手動添加,手臂和腿部的結構應該是(從高到低):collar(領口)-shoulder(肩膀)-elbow(手肘)-hand(手腕)-finger(手指);hip(臀部)-knee(膝蓋)-foot(腳踝)-toe(腳趾)。
*labelfingerbase和labeltoebase比較特殊,可以理解為手掌和腳掌部位,五指(趾)的根部,在添加這兩個標簽時是不會顯示后綴base的。
(4)脊椎的層級關系是:root(根部:盆骨)-spine(腰部脊椎)-spine(胸部脊椎)-none(胸腔)-neck(頸部)-head(頭部)。
(5)為了在bindskin(蒙皮)后繪制權重時對關節的識別,此時可對右邊的關節進行命名,格式可參考列表。當然,你也可以跳過這一步,只要你覺得后期操作沒太大影響。
4.鏡像關節。此時右邊的關節已經包含了關節標簽,為了省事,不用對左邊的關節添加標簽;如果創建了完整的骨架,此時應刪除左邊的手臂和腿部關節,選擇右邊關節,執行skeletonmirrorjoint(鏡像關節)。
*注意:必須更改mirrorjoint的mirror across為yz。如果對關節進行了命名,也可同時在此對關節名稱進行批量替換。關節名稱的綁定方法可點擊觀看較早的資料介紹。
5.區分標簽。鏡像后的關節包含了關節標簽信息,但它們保留的是右邊的標識(r),因此要選擇手臂和腿部的根關節,添加labelleft。
6.建立fbik系統。選擇根關節(盆骨的三叉部位),執行skeletonfullbodyikaddfullbodyik(設置如下:by label;biped)。
7.fbik系統結構。fbik系統包含hiksolver(hik解算器),hikhandle(hik手柄),effector(fbik效應器)集合以及一套fk骨架,此外,系統還自動生成一個動畫角色組。 hiksolver控制fbik的解算(類似剛體解算器,內核解算器這樣的總開關),hikhandle驅動角色骨架中的關節行為,fbik效應器和fk 骨架則用來設置各種姿勢,進行動畫關鍵幀的制作。此時,原骨架作為輸入骨骼來使用,不應再對它進行其他操作,包括動畫關鍵幀。
8.皮膚綁定。選擇原骨架的根關節,shift加選模型,執行 skinsmoothbind,使用maya2011最新增加的weightblended方式進行蒙皮。這種方式可同時對模型使用兩套蒙皮權重,classiclinear(標準線性)是傳統的蒙皮方式,計算每個關節對模型點的權重混合效果;而新加入的dualquaternion(雙重四元),與關節權重無關,它的效果是保持模型的體積不變,用于關節扭曲的部位相當不錯,如手肘,手指,膝蓋。兩種方法的混合使用,可減少權重繪制上的工作量。
【動畫控制系統介紹】
fbik是fullbodyinversekinematics的簡稱。全身反向動力學,顧名思義,整個角色關節都是由反向動力學系統控制。
在制作動畫前,了解fbik系統的元素作用很重要—這比動畫調節優先。
【fk和ik】
先來認識fk和ik。
反向動力學ik(inversekinematics)與正向動力學fk(forwardkinematics)各有優缺點,通常需要結合使用。fk動畫是按關節的父子級關系由高到低進行的,制作具有一定目標朝向的動畫時難度很大,如伸手拿物品;
ik則以子級優先,先定目標,而后通過ik解算器來完成父級的關節動畫。對于兩足類(人物)角色而言,fk和ik在一些情況下需要相互切換。
ik是指向目標的動畫,優點是動畫精度和效率很高,但同樣的,由于ik走的是直線,很多時候反而不能滿足一些常規的動畫效果。如人物隨意的擺手時,手掌都是走弧線的,相對于ik,fk完成這類動畫的速度更快。
通過物理學的杠桿原理,我們得到"力矩"這樣的概念:當力矩相等,距離越長,力就越小。力矩也就相當于能量,那么結合實際可以看到這樣有趣的現象:人們在閑散時,無意識的動作都是帶有弧線的,因為這會降低力的消耗;當人們需要朝特定目標進行動作,為了最快的達到目的,因而都會使用更多的力來走最近路線。同樣的支撐手臂,熱烈的鼓掌和一記左勾拳,也是fk和ik動畫的區別。當然,用杠桿原理來解釋ik有些牽強,不過還是有那么些道理在里面的。
最后,我們可以根據實際情況歸納一下:fk適合制作角色閑時的細節動作,ik適合腿部以及具有目標傾向的手部動作。
附帶提一下:采用euler歐拉旋轉軸直接控制的fk骨骼動畫(或者通過控制器控制骨骼),會發生萬向節鎖和萬向節翻轉的異常現象,因此骨骼的綁定不僅僅要解決fk和ik的切換問題,還要同時解決萬向節旋轉的動畫問題。
【fbik的動畫標記菜單】
選擇fbik效應器,右鍵可彈出一個fbik系統專用的標記菜單,用于設置動畫關鍵幀時的快捷操作(也可以使用系統提供的快捷鍵,如切換fk/ik:alt+1或2或3,但個人覺得右鍵菜單更實用)。
以下會多次提到fk關節,它是fbik系統隱藏的骨架,最終的動畫效果通過它來完成,然后再傳遞給原骨架。注意不要將它和reachmode:fk(fk吸附模式)混淆,fk關節是骨架,而fk模式是動畫的計算方式。
【reachmode:fk/ik模式的切換】
盡管名為fbik,但并不是沒有fk,fbik系統的優點就是可隨時進行fk和ik的切換(這也就是為什么fbik系統中包含一套名為fk的骨架)。不過fbik中的fk模式和傳統的fk關節不太一樣,fbik的fk只是對最終的動畫效果而言,動畫制作過程中,它使用的仍是方便的ik系統。
首先,要在交互操作過程中得到正確的角色運動效果,你必須選擇reachmode為ik模式,并設置一個初始關鍵幀。
在設置動畫過程中,fk和ik模式的切換是通過對效應器的屬性reachtranslation(位移吸附)和reachrotation(旋轉吸附)設置關鍵幀實現的(0至1表示fk到ik的融合程度),最終效果將直接包含在fk關節的動畫過程中,對效應器的動畫無影響。無論你選擇哪個效應器,fk/ik模式對關節動畫產生的影響必須是在設置動畫關鍵幀之后才能看出來。
設置reachmode為simple模式時,動畫效果和ik模式是一樣的,但關鍵幀信息不會被寫入fk/ik效果,常用于制作初始的pose關鍵幀-- 實際上就是效應器的reachtranslation和reachrotation不會被設置關鍵幀,可在動作細節調節時再手動設置。
【keymode關鍵幀模式】
reachmode控制的是fk關節的動畫路線,而keymode控制的則是效應器(以及相關聯的fk關節)的執行數量,關節的最終運動是二者計算的結果混合:通過hikhandle(角色 ik手柄)將效應器的動畫轉移到fk各個關節上,形成兩套不同的關鍵幀動畫。all表示所有效應器和fk關節將被設置關鍵幀;bodypart表示所選效應器的臨近效應器和fk關節將被設置關鍵幀;selected表示只有所選效應器和相關聯的fk關節將被設置關鍵幀。
最終,fbik系統包含兩套動畫曲線:效應器動畫,隱藏的fk關節動畫。原骨架不含動畫信息,它是由隱藏的fk關節進行控制的。如果使用了角色組,效應器和fk關節的動畫都會被歸類到角色組元素中。
【effector效應器】
接著來研究effector效應器的使用技術要點。通常的角色綁定,都包含有復雜的控制器,對角色的每個部位進行不同的控制,fbik的效應器也就等同于這些控制器。由于經過一系列的解算,fbik效應器并不是那么容易理解的;不過僅通過少數效應器就能完成復雜的動畫這點上,fbik也算是平易近人。
效應器初始數值不為0,但不能通過freezetransformations(凍結變形)命令來歸零,否則會產生初始pose(姿勢)的異常。
每個效應器的屬性中都有reachtranslation和reachrotation這兩個屬性,它們控制著fk關節對效應器的吸附程度,也就是上面我所說的fk/ik模式的融合程度。
*fbik的效應器允許遠離關節運動,當啟用reachtranslation或 reachrotation,與效應器相關聯的關節,會參考效應器的位移或旋轉,進行小幅度吸附效應器的運動。當效應器運動范圍較大時,reachtranslation很有用,可在一開始就開啟;而reachrotation會出現一些異常翻轉,此時要慎用該屬性。
pin(固定)是效應器的另一個重要的功能,pintranslate和pinrotate分別是對效應器位移和旋轉的固定,pinboth則是兩者皆使用,unpin取消固定。它不是即時生效的約束,因為你通過其他效應器帶動它產生的運動變化只出現在交互操作過程中,實際動畫時該效應器不一定具備pin效果。pin一定要在下一個動畫進行前設置(位置應在前一個關鍵幀),它的作用效果會立刻影響fk關節的最后位置;當通過pin完成動畫效果后,再修改pin的狀態是不影響動畫效果的。所以,不需要對pin參數進行動畫關鍵幀的設置,這樣做沒意義。
由于pin效果還和fk關節對效應器的吸附程度有關,因此pin通常是配合ik模式使用,因為fk模式時會出現關節滑動的現象--當然,你也可能剛好需要這樣的效果。注意:使用pin時,最好對該效應器也設置關鍵幀,否則稍后的fk/ik切換會影響到前面fk關節的動畫效果。
ik模式手部的完全固定效果:
fk模式手部的完全固定效果(出現滑位):
*較早版本的maya是通過圓球和方塊來表示pin的狀態,而現在使用的是英文字母表示:t表示固定位移,r表示固定旋轉。
新聞熱點
疑難解答