本發(fā)明涉及一種動畫角色構(gòu)建方法,尤其是涉及一種可修改綁定方式的動畫角色構(gòu)建方法。
背景技術(shù):三維角色動畫的制作過程中,一個不可缺少的過程就是角色設(shè)置,該過程通過利用約束、權(quán)重蒙皮、數(shù)值驅(qū)動、混合變形等等多種技術(shù)來將原本完全靜態(tài)的幾何體與方便動畫師操作的大量控制器進(jìn)行相互關(guān)聯(lián)。隨著觀眾們對于三維角色動畫的效果要求越來越高,對動畫制作的各個環(huán)節(jié)的要求也正在不斷提高。為了實(shí)現(xiàn)更加真實(shí)、高效的角色控制方式,各種新的角色設(shè)置的方式方法也不斷地被實(shí)踐。Maya作為一個知名的三維制作軟件,被廣大的國內(nèi)外動畫公司選擇為自己的基礎(chǔ)制作平臺,這也意味著,許多制作公司的流程很大程度上建立在這個軟件系統(tǒng)上,自然其角色設(shè)置部分也是其重要的一環(huán)。為了提高角色動畫的制作效率,許多有實(shí)力的動畫制作公司都會研發(fā)自己的角色設(shè)置系統(tǒng)來實(shí)現(xiàn)半自動化的生成過程。然而,這些系統(tǒng)一般都是針對于一種控制方式來設(shè)計的,或則是在設(shè)置初期就必須要確定控制方式的構(gòu)成。當(dāng)然,這樣的方式已經(jīng)能夠滿足大多數(shù)制作的需要了。同時,由于,在整個設(shè)置過程中自動化過程通常只能進(jìn)行到控制器的設(shè)置階段為止,后續(xù)的權(quán)重設(shè)置,動畫融合變形修正等等都只能夠手動或者半自動化來完成,臨時調(diào)整控制方式對于制作來說,時間和成本都是難以接受的。因此,我們往往都被迫接受了這樣的流程限制。
技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷而提供一種更加靈活的可修改綁定方式的動畫角色構(gòu)建方法。本發(fā)明的目的可以通過以下技術(shù)方案來實(shí)現(xiàn):一種可修改綁定方式的動畫角色構(gòu)建方法,其特征在于,包括以下步驟:1)處理器從存儲器中調(diào)取構(gòu)建角色的參數(shù)信息,確定角色骨骼位置;2)處理器建立骨骼層級關(guān)系,并對每一個骨骼生成唯一標(biāo)識碼;3)處理器將步驟2)處理后的骨骼系統(tǒng)進(jìn)行復(fù)制,得到控制骨骼,原骨骼作為綁定骨骼;4)處理器根據(jù)輸入模塊的指令對控制骨骼進(jìn)行控制器創(chuàng)建,并建立控制骨骼和控制器之間的約束關(guān)系,同時對綁定骨骼進(jìn)行蒙皮、權(quán)重調(diào)整和角色形狀修正處理;5)處理器建立控制骨骼和綁定骨骼的連接,并通過輸出模塊顯示效果。所述的處理器建立控制骨骼和綁定骨骼的連接具體為:11)獲得下一個控制骨骼;12)判斷該控制骨骼是否有輸入連接,若為是,執(zhí)行步驟13),若為否,返回步驟11);13)讀取當(dāng)前控制骨骼的UUID;14)判斷在綁定骨骼中是否搜索到相同UUID,若為是,執(zhí)行步驟15),若為否,返回步驟11);15)檢查當(dāng)前控制骨骼的變換矩陣是否與記錄在其上的矩陣相同,若為否,執(zhí)行步驟16),若為是,執(zhí)行18);16)對存在偏移的控制骨骼,創(chuàng)建偏移節(jié)點(diǎn);17)計算出偏移值,對控制骨骼輸出的變換矩陣結(jié)果進(jìn)行偏移后得到SRT值,該SRT值返回給綁定骨骼后,進(jìn)行控制骨骼和綁定骨骼的連接;18)直接進(jìn)行控制骨骼與綁定骨骼的連接。所述的偏移值為Mnow*Morg-1,其中Mnow為在復(fù)制控制骨骼時,控制骨骼和綁定骨骼記錄的各自當(dāng)時的變換矩陣。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn):1、由于將原有的角色構(gòu)建流程進(jìn)行并行的分解,使得原先的依賴關(guān)系被打破,同時,為了將這一過程自動化,本發(fā)明會在復(fù)制時多所有骨骼創(chuàng)建UUID,使得被復(fù)制的骨骼和原骨骼能夠擁有唯一識別標(biāo)志,這樣在最后連接的過程中自動化腳本就能非常方便地尋找到需要建立連接關(guān)系的配對骨骼了。2)本發(fā)明在復(fù)制控制用骨骼時,將在控制骨骼和綁定骨骼上記錄下各自當(dāng)時的變換矩陣Morg,之后,用戶可以按照約束的需要,自由地調(diào)整所有骨骼的旋轉(zhuǎn)軸向,當(dāng)執(zhí)行最后連接控制骨骼以及綁定骨骼的步驟時,不直接使用屬性連接,先判斷控制骨骼當(dāng)前的變換矩陣Mnow是否等于Morg,如果不相等,則在連接中嵌入一個自定義節(jié)點(diǎn),對控制骨骼輸出的矩陣結(jié)果進(jìn)行偏移后才解開為直接的SRT(ScaleRotateTranslate)值返還給綁定骨骼。附圖說明圖1為現(xiàn)有的動畫角色構(gòu)建方法的流程圖;圖2為本發(fā)明的流程圖;圖3為本發(fā)明的建立控制骨骼和綁定骨骼的連接流程圖;圖4為本發(fā)明實(shí)現(xiàn)的硬件結(jié)構(gòu)示意圖。具體實(shí)施方式下面結(jié)合附圖和具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)說明。實(shí)施例如圖1所示,通常來說,一個完整的角色設(shè)置流程包括以下幾個部分:1.確定骨骼位置;2.建立骨骼層級關(guān)系;3.創(chuàng)建控制器組;4.建立骨骼與控制器的約束關(guān)系;5.對骨骼進(jìn)行蒙皮;6.調(diào)整邦定權(quán)重;7.通過融合變形、驅(qū)動關(guān)鍵楨、多種變形器等方法修正角色形狀;本發(fā)明需要提供的功能是隨時修改3,4的部分。從上面的說明可以看到,由于后續(xù)的步驟需要依賴3與4這兩部分的操作結(jié)果,所以難以對控制器以及控制器對骨骼的控制方式在角色設(shè)置完成后靈活改變。傳統(tǒng)的方式是將多種控制方式同時建立出來,通過約束的方法來共同控制同一套骨骼系統(tǒng)。但是,由此帶來的問題是,這個角色很有可能因?yàn)榭刂葡到y(tǒng)過于復(fù)雜而變得龐雜,并且也更加容易出現(xiàn)各種問題。本發(fā)明通過兩個部分來解決問題,首先修改角色設(shè)置的傳統(tǒng)流程。在過程2,建立骨骼層級關(guān)系后,就將骨骼系統(tǒng)進(jìn)行復(fù)制,由此獲得綁定用骨骼與控制用骨骼,然后,分別進(jìn)行蒙皮綁定,調(diào)整權(quán)重與控制器建立和關(guān)聯(lián)的工作。最后將兩個分支通過建立屬性連接進(jìn)行合并,完成角色設(shè)置。如圖2所示,由于將流程進(jìn)行并行的分解,使得原先的依賴關(guān)系被打破,步驟3與4只被建立屬性連接的流程8所依賴,同時,為了將這一過程自動化,本發(fā)明會在復(fù)制時多所有骨骼創(chuàng)建UUID,使得被復(fù)制的骨骼和原骨骼能夠擁有唯一識別標(biāo)志,這樣在最后連接的過程中自動化腳本就能非常方便地尋找到需要建立連接關(guān)系的配對骨骼了。然后,由于maya內(nèi)建的很多約束以及控制工具都對被控制的骨骼的軸向敏感。因此,如果直接在第4步中替換約束關(guān)系,往往會給操作者帶來許多額外的麻煩,甚至難以正常地進(jìn)行。本發(fā)明在復(fù)制控制用骨骼時,將在控制骨骼和綁定骨骼上記錄下各自當(dāng)時的變換矩陣Morg,之后,用戶可以按照約束的需要,自由地調(diào)整所有骨骼的旋轉(zhuǎn)軸向,當(dāng)執(zhí)行最后連接控制骨骼以及綁定骨骼的步驟時,不直接使用屬性連接,先判斷控制骨骼當(dāng)前的變換矩陣Mnow是否等于Morg,如果不相等,則在連接中嵌入一個自定義節(jié)點(diǎn),對控制骨骼輸出的矩陣結(jié)果進(jìn)行偏移后才解開為直接的SRT(ScaleRotateTranslate)值返還給綁定骨骼。偏移值為Mnow*Morg-1。如圖2所示,本發(fā)明的具體流程如下:1)處理器從存儲器中調(diào)取構(gòu)建角色的參數(shù)信息,確定角色骨骼位置;2)處理器建立骨骼層級關(guān)系,并對每一個骨骼生成唯一標(biāo)識碼;3)處理器將步驟2)處理后的骨骼系統(tǒng)進(jìn)行復(fù)制,得到控制骨骼,原骨骼作為綁定骨骼;4)處理器根據(jù)輸入模塊的指令對控制骨骼進(jìn)行控制器創(chuàng)建,并建立控制骨骼和控制器之間的約束關(guān)系,同時對綁定骨骼進(jìn)行蒙皮、權(quán)重調(diào)整和角色形狀修正處理;5)處理器建立控制骨骼和綁定骨骼的連接,并通過輸出模塊顯示效果。如圖3所示,所述的處理器建立控制骨骼和綁定骨骼的連接具體為:a)獲得下一個控制骨骼;b)判斷該控制骨骼是否有輸入連接,若為是,執(zhí)行步驟c),若為否,返回步驟a);c)讀取當(dāng)前控制骨骼的UUID;d)判斷在綁定骨骼中是否搜索到相同UUID,若為是,執(zhí)行步驟e),若為否,返回步驟a);e)檢查當(dāng)前控制骨骼的變換矩陣是否與記錄在其上的矩陣相同,若為否,執(zhí)行步驟f),若為是,執(zhí)行h);f)對存在偏移的控制骨骼,創(chuàng)建偏移節(jié)點(diǎn);g)計算出偏移值,對控制骨骼輸出的變換矩陣結(jié)果進(jìn)行偏移后得到SRT值,該SRT值返回給綁定骨骼后,進(jìn)行控制骨骼和綁定骨骼的連接;h)直接進(jìn)行控制骨骼與綁定骨骼的連接。所述的偏移值為Mnow*Morg-1,其中Mnow為在復(fù)制控制骨骼時,控制骨骼和綁定骨骼記錄的各自當(dāng)時的變換矩陣。如圖4所示,本發(fā)明的硬件結(jié)構(gòu)包括處理器A、存儲器B、輸入模塊C和輸出模塊D,所述的處理器A分別與存儲器B、輸入模塊C、輸出模塊D連接。