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