Character
Character是什么?
Character是一種特殊的3D Entity類型,由一組具有層次結(jié)構(gòu)關(guān)系的Body Parts所定義,后者是一個唯一的root對象的子孫。Root 定義了Character的位置與朝向。
Skin Character
一個skin Character 也是一種Character,它具有三種可能的body parts類型:skin , bones, dummies。Skin body parts是body parts的一種,它擁有一個mesh, 在進(jìn)行動畫時,根據(jù)一組bone body parts的位置變化,mesh會相應(yīng)產(chǎn)生變形。一個skin character 只能有一個skin body part,。Dummies 是被動的body parts,它的矩陣可用于對象定位.
Skin character主要的優(yōu)點是它沒有 skin join 問題(運動時body parts之間的縫隙),它主要的限制是它的處理材質(zhì)或紋理行為修正的能力。
每個skin body part有且只有一個mesh,在很多情況下,這可能更加方便(如,對于”Visual/Shadows/Shadow Stencil BB”,你僅需要把 Shadow Stencil Caster屬性加在一個或多個skin body part上。)
Skin Character’的動畫是輕量級的,靈活的。
Body Part Character
一個body part character 由一組body parts構(gòu)成,它們擁有各自的mesh與可能的dummies,你可能需要使用”Mesh Modifications/Deformation/Skin Join BB”去解決運動時的縫隙問題。
Mesh Morpher Character
即使你的動畫使用了不可知的動畫控制器,通過采樣對象的動畫,也可以把動畫導(dǎo)出成Mesh Morpher Character。這種方法存儲每一個動畫幀角色的所有mesh數(shù)據(jù),采樣率越低,動畫文件也越小。這種動畫技術(shù)相對于其他的動畫技術(shù)來講,會產(chǎn)生較大的動畫文件。
動畫創(chuàng)建時需要注意
一個character 應(yīng)該讓它的body parts聯(lián)結(jié)到一個唯一的body part, 這個body part(root)給出了character的位置與朝向。在virtools中,應(yīng)該讓Z軸做為前的方向,Y軸作為上的方向。
與character相關(guān)的BB
一個可應(yīng)用于3D entity的BB,可以應(yīng)用于Character ,也可以是Character’s body parts,兩者都是3D entity,當(dāng)你管理復(fù)雜的層次集合時,不要忘記檢查hierarchy 參數(shù)是否為true,尤其是使用3D Transformation BBs時。記住,一個 character 不直接擁有mesh,它的層次中的對象擁有。對這個概念的錯誤理解,容易導(dǎo)致一些問題,為何一個BB會失效。應(yīng)該正確地就把行為應(yīng)用到正確的body part上。舉例來說,Simple Shadow BB 是應(yīng)用到body part 上的,而不是應(yīng)用到Character上。
使用動畫:
Character Controller BB + "Controllers/Keyboard/Keyboard Controller BB" :這兩個是最簡單的使用動畫的方式。
Unlimited Controller BB
這是實現(xiàn)復(fù)雜的動畫控制的關(guān)鍵。
Wrap
“Start“會在那一個動畫開始時創(chuàng)建一個過渡動畫,除非你確定下一個動畫應(yīng)該從頭開始播放(例如“跳“這個動畫)。
“Best”找到best frame來開始下一個動畫。”best frame”通過body part的朝向,位置,縮放等與當(dāng)前動畫幀的相似性來確定。這對于循環(huán)動畫轉(zhuǎn)換是非常有用的(如,從Walk動畫到Run動畫)
“Same”創(chuàng)建一個轉(zhuǎn)換到下一個動畫step(百分比)等于當(dāng)前動畫的step,與Best 相似,而又有更多的控制以用于動畫同步。這個模式必須在產(chǎn)生動畫就是應(yīng)該有所計劃。
可停止與不可停止
動畫分為兩大類:不可停止的(跳,跌倒,開門等)與可停止的。可停止的通常是循環(huán)動畫,如Wait, Walk , Swim。
一旦一個不可停止的動畫開始,它將會一直播放直到最后一幀完成。因此,當(dāng)播放不可停止動畫時,不再需要任何消息驅(qū)動動畫。與此相反,Unlimited Controller BB 為了播放可停止的動畫,在每幀它都需要接收正確的消息。
輸入?yún)?shù)
對于普通的腳本,你可以根據(jù)愿望創(chuàng)建輸入?yún)?shù)。可以根據(jù)”Unlimited Controller”對話框中對應(yīng)的參數(shù)來創(chuàng)建輸入?yún)?shù),右擊Cell,(這里是Wait Animation),選擇“Create Input Parameter”
菜單。通過這種方法更多的控制參數(shù)可以被輸入。
上圖是一個使用array來參與控制動畫的例子,通過鍵選擇動畫,當(dāng)有多個鍵被按下,使用規(guī)定優(yōu)先級。
不可停止動畫的參數(shù)的變化在動畫已經(jīng)開始后不會被考慮,而可停止的動畫會被考慮。舉例來說,假如你改變一個正在運行的不可停止動畫的“Animation”參數(shù),新的值會在當(dāng)前動畫的最后一幀播放完后,有相應(yīng)的消息傳入時才發(fā)生改變。
在下面的例子中,Unlimited Controller BB(只有一行被修改) , 用來在任何時候為下一個動畫設(shè)置新值,它每一幀都發(fā)送消息,直到動畫輸入?yún)?shù)與當(dāng)前動畫輸出消息相等。(注;因為當(dāng)發(fā)送一個消息時,本來是想轉(zhuǎn)換動畫,但此時可能正執(zhí)行一個不可停止的動畫,于是發(fā)送的消息被忽略了,于是還要繼續(xù)發(fā)送,直到動畫確實發(fā)生了改變?yōu)橹梗?/p>
與
輔助動畫:
輔助動畫為角色運動增加了真實性。
通過”Unlimited Controller” BB,可以把一個動畫說明為輔助動畫,理論上講,任何的”輔助“動畫可以作為主動畫使用。但在設(shè)計是好考慮好它的用途(作為主動畫還是輔助動畫使用)。
輔助動畫的建立過程與主動畫類似。然而它不能修改沒有用到的body parts或是root body part的修飾量。“order”參數(shù)不存在,既然任何一個輔助動畫都應(yīng)該可以同時被播放,只要對于默認(rèn)的body parts,它們不存在交迭.。最后調(diào)用的動畫總是比先前調(diào)用的動畫有優(yōu)先權(quán)。”turn”與”orient”參數(shù)對于輔助動畫沒有用處。
Action參數(shù)值”Play Once” ,”Loop +Stay”會被考慮。
輔助動畫參數(shù)也可以用作輸入?yún)?shù)。
Behavioral animations
角色有時需要執(zhí)行行為動畫以模擬復(fù)雜與不可知的與環(huán)境的交互。行為動畫可以作為別的主動畫與輔助動畫的補充。
混合動畫
3D變換,一個技巧是保存跟蹤正要修改的body part的直接父結(jié)點的矩陣。當(dāng)行為應(yīng)用于一組分開的body parts時,第一個問題是是否要使用Exclude from Animation BB。
假如你不用,body part的矩陣在幀開始時就會被當(dāng)前動畫設(shè)置。你可以在相同的幀處理3d 轉(zhuǎn)換,body part 以它自己作為參考,與當(dāng)前動畫保持一致。主要的問題衰減參數(shù)難于使用。
假如你使用bb,3D 變換與應(yīng)用到經(jīng)典的3d object時相同。因此,與整個的Character 保持一致是較費腦筋的。
IK 反運動學(xué)
它從最后一個鏈成員來推導(dǎo)出body part的矩陣。這是個有力的工具,對于與環(huán)境進(jìn)行精確的交互比較有用。目前,只有一個有關(guān)于IK的BB可以用:IK Position BB,.這容易使用,它不檢查body parts的交互。
為避免不一致的問題,唯一的辦法是自己做檢測腳本。
posted on 2007-04-28 15:56
清源游民 閱讀(1467)
評論(2) 編輯 收藏 引用 所屬分類:
Virtools