• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      三維計(jì)算機(jī)動(dòng)畫中的關(guān)節(jié)動(dòng)畫關(guān)鍵算法的分析探討

      2015-05-30 07:26:56方向
      藝術(shù)科技 2015年12期

      方向

      摘 要:本文主要針對(duì)計(jì)算機(jī)動(dòng)畫中的關(guān)節(jié)動(dòng)畫,以關(guān)節(jié)鏈結(jié)構(gòu)為基本單位架構(gòu)骨架系統(tǒng),對(duì)于角色動(dòng)畫中關(guān)節(jié)動(dòng)畫的一些關(guān)鍵算法進(jìn)行了分析探討。

      關(guān)鍵詞:關(guān)節(jié)動(dòng)畫;關(guān)鍵算法;逆運(yùn)動(dòng)法

      三維計(jì)算機(jī)動(dòng)畫中,基于人體運(yùn)動(dòng)的角色動(dòng)畫具有廣泛的應(yīng)用前景,在影視制作、計(jì)算機(jī)游戲、廣告動(dòng)畫設(shè)計(jì)、虛擬現(xiàn)實(shí)等諸多領(lǐng)域都有著重要的用途。關(guān)節(jié)動(dòng)畫是計(jì)算機(jī)動(dòng)畫中富有挑戰(zhàn)性的技術(shù)之一。在關(guān)節(jié)動(dòng)畫中,以關(guān)節(jié)鏈結(jié)構(gòu)為基本單位構(gòu)架骨架系統(tǒng),用運(yùn)動(dòng)學(xué)方法來(lái)控制運(yùn)動(dòng)。

      計(jì)算機(jī)動(dòng)畫一般包含四個(gè)重要的過(guò)程:造型,動(dòng)畫,繪制和合成。計(jì)算機(jī)動(dòng)畫中研究的首要內(nèi)容是動(dòng)畫,即生成物體的各種運(yùn)動(dòng)和變化,或者稱為運(yùn)動(dòng)控制。本文在研究關(guān)節(jié)動(dòng)畫時(shí),主要涉及的也只有動(dòng)畫部分。

      1 骨骼皮膚動(dòng)畫

      三維角色動(dòng)畫本質(zhì)上是擬人動(dòng)畫——從運(yùn)動(dòng)考慮。它從誕生開(kāi)始就得到廣泛的應(yīng)用,并且在不同的應(yīng)用領(lǐng)域有不同的技術(shù)要求。例如,在電影、仿真應(yīng)用中,要求極具真實(shí)感的角色;而游戲、輔助訓(xùn)練應(yīng)用中,要求在保證速度的基礎(chǔ)上具有較好的真實(shí)感。不過(guò)相同的是運(yùn)動(dòng)控制和角色造型是角色動(dòng)畫的關(guān)鍵和難點(diǎn)。

      從角色造型過(guò)程中的分層角度可以把造型建模技術(shù)分為四種:桿狀模型,皮膚模型,骨骼皮膚模型和多層模型。根據(jù)角色表達(dá)方式一一建模技術(shù)的不同,角色動(dòng)畫也可以分為:桿狀動(dòng)畫,頂點(diǎn)動(dòng)畫,骨骼皮膚動(dòng)畫和多層模型動(dòng)畫四種。

      骨骼皮膚動(dòng)畫包含兩部分信息:一是層次化骨架;另一個(gè)部分是蒙在骨架上的皮膚。用骨骼承載運(yùn)動(dòng),用皮膚模型表達(dá)角色,再利用骨骼控制皮膚變形,就達(dá)到了角色動(dòng)畫模擬的目的。

      由于在骨骼皮膚動(dòng)畫中,運(yùn)動(dòng)的控制實(shí)際上是對(duì)骨骼運(yùn)動(dòng)的控制。人體的整個(gè)骨架系統(tǒng)可以看作很多個(gè)關(guān)節(jié)鏈結(jié)構(gòu)組成的N-元樹(shù)結(jié)構(gòu),或者說(shuō)骨架系統(tǒng)可以分解為很多個(gè)相關(guān)聯(lián)的關(guān)節(jié)結(jié)構(gòu)。因此,本文中的關(guān)節(jié)動(dòng)畫和骨骼動(dòng)畫在某種意義上是等價(jià)的。

      2 骨架系統(tǒng)的建立和運(yùn)動(dòng)控制

      關(guān)節(jié)鏈結(jié)構(gòu)是由一系列依次相連的剛體連接而成的開(kāi)鏈,兩剛體的連接點(diǎn)成為關(guān)節(jié),連接兩相鄰關(guān)節(jié)的剛體成為鏈桿,可抽象看作一條線段。在計(jì)算機(jī)動(dòng)畫中,一般把關(guān)節(jié)限制為旋轉(zhuǎn)關(guān)節(jié),即相鄰的剛體在其連接關(guān)節(jié)處只能作相對(duì)旋轉(zhuǎn)運(yùn)動(dòng),而不能做平移等其他運(yùn)動(dòng)。

      在關(guān)節(jié)鏈結(jié)構(gòu)中有兩個(gè)端點(diǎn),關(guān)節(jié)鏈的起點(diǎn)為基結(jié)點(diǎn),其自由末端為末端影響器;能夠完全確定關(guān)節(jié)鏈結(jié)構(gòu)狀態(tài)所需要的獨(dú)立變量個(gè)數(shù)稱為自由度;關(guān)節(jié)鏈結(jié)構(gòu)的所有可能形態(tài)的向量空間稱為狀態(tài)空間,其每一個(gè)向量定義一種形態(tài)。

      建立運(yùn)動(dòng)方程:

      其中,:關(guān)節(jié)鏈末端影響器關(guān)于世界坐標(biāo)系的方位;:關(guān)節(jié)鏈結(jié)構(gòu)的狀態(tài)向量。運(yùn)動(dòng)方程式關(guān)節(jié)鏈結(jié)構(gòu)的顯式運(yùn)動(dòng)描述,根據(jù)提出的問(wèn)題不同,有兩種求解方法,實(shí)際上是兩類問(wèn)題的不同求解方法——正向運(yùn)動(dòng)學(xué)法(Forward kinematics)和逆向運(yùn)動(dòng)學(xué)法(Inverse Kinematics)。

      我們得出了求解單鏈結(jié)構(gòu)的一般方法,進(jìn)而得出單鏈結(jié)構(gòu)的運(yùn)動(dòng)控制。但是角色動(dòng)畫中的骨架一般都不是單鏈結(jié)構(gòu),往往是很復(fù)雜的,而且是多分支關(guān)節(jié)結(jié)構(gòu)的。采用的方法是把復(fù)雜的多分支骨架系統(tǒng)分解成若干個(gè)單鏈結(jié)構(gòu),即把骨架的求解問(wèn)題轉(zhuǎn)化為單鏈結(jié)構(gòu)問(wèn)題來(lái)處理。

      一般情況下,角色的骨架結(jié)構(gòu)在一些關(guān)節(jié)處具有多個(gè)分枝,而所有的鏈桿在關(guān)節(jié)處形成了一個(gè)網(wǎng)狀結(jié)構(gòu)。為此,我們把復(fù)雜骨架表達(dá)為一關(guān)節(jié)的樹(shù)狀層次結(jié)構(gòu),樹(shù)中每一結(jié)點(diǎn)均對(duì)應(yīng)于一個(gè)關(guān)節(jié)。描述一個(gè)簡(jiǎn)化之后的人體骨架樹(shù)層次結(jié)構(gòu)。這樣的骨架樹(shù)結(jié)構(gòu)中有一個(gè)根結(jié)點(diǎn),從根節(jié)點(diǎn)出發(fā)遍歷骨架樹(shù)可以達(dá)到任何一個(gè)結(jié)點(diǎn);從任何結(jié)點(diǎn)出發(fā)向上搜索可到任意一個(gè)結(jié)點(diǎn),直至根結(jié)點(diǎn)。骨架的分解過(guò)程,實(shí)際上就是選擇若干結(jié)點(diǎn)對(duì)。每一對(duì)結(jié)點(diǎn)確定一條開(kāi)得單鏈結(jié)構(gòu),其中一個(gè)結(jié)點(diǎn)作為基結(jié)點(diǎn),另一個(gè)結(jié)點(diǎn)作為末端影響器。在選擇結(jié)點(diǎn)對(duì)時(shí),要保證基結(jié)點(diǎn)在骨架樹(shù)結(jié)構(gòu)中的層次高于末端影響器對(duì)應(yīng)結(jié)點(diǎn)的層次。這樣骨架就被分解成若干個(gè)單鏈結(jié)結(jié)構(gòu),進(jìn)而分別采用單鏈結(jié)構(gòu)的運(yùn)動(dòng)控制來(lái)完成骨架系統(tǒng)的運(yùn)動(dòng)控制。根據(jù)樹(shù)狀層次結(jié)構(gòu),正運(yùn)動(dòng)學(xué)方法的求解仍然是顯示的;對(duì)于逆運(yùn)動(dòng)學(xué)方法,則需要采用分解方法來(lái)分別處理。在角色動(dòng)畫的應(yīng)用中,一般采用逆運(yùn)動(dòng)學(xué)方法。由于運(yùn)動(dòng)捕捉技術(shù)的發(fā)展,獲取人體骨架中各個(gè)狀態(tài)參數(shù)值是一件比較容易的事,而只設(shè)定末端影響器的位置參數(shù)對(duì)于動(dòng)畫制作者來(lái)說(shuō)很容易,相對(duì)設(shè)定整個(gè)骨架的狀態(tài)參數(shù)。

      舉個(gè)例子來(lái)說(shuō)明:動(dòng)畫制作者設(shè)定右手骨運(yùn)動(dòng)后的位置參數(shù),我們就可以選擇“髖骨(基結(jié)點(diǎn))—脊椎骨—右肩骨—右上臂—右前臂—右手骨(末端影響器)”這條單鏈結(jié)構(gòu),用逆運(yùn)動(dòng)學(xué)方法處理問(wèn)題。關(guān)節(jié)鏈結(jié)構(gòu)是一種冗余結(jié)構(gòu),運(yùn)動(dòng)求解往往有多組解。如果采用單鏈結(jié)構(gòu),最終使得髖骨的狀態(tài)發(fā)生變化,則需要處理由于髖骨的狀態(tài)變化而影響的整個(gè)人體的狀態(tài)變化。假如動(dòng)畫制作者同時(shí)限定了右肩骨狀態(tài)參數(shù)沒(méi)有變化,則選擇“右上臂(基結(jié)點(diǎn))—右前臂—右手骨(末端影響器)”這條單鏈結(jié)構(gòu)來(lái)處理問(wèn)題。因此,在具體的問(wèn)題求解中需要結(jié)合問(wèn)題來(lái)選擇單鏈結(jié)構(gòu)。

      關(guān)節(jié)模型的定義如下:

      class CAnimationBone

      {……

      private:

      //本地位移

      CVector4f mTranslation;

      //本地旋轉(zhuǎn),四元數(shù)格式

      CVector4f mRotation;

      //全局變換矩陣

      float mGlobalMatrix[16];

      //子節(jié)點(diǎn)數(shù)組

      CAnimationBone*

      mChildList;

      //子節(jié)點(diǎn)的數(shù)目

      Unsigned char

      mNumChildren;

      //父節(jié)點(diǎn)

      CAnimationBone*

      mParent;

      ……};

      其中mTranslation是骨骼相對(duì)于它的父節(jié)點(diǎn)的位移,mRotation是骨骼相對(duì)于其父節(jié)點(diǎn)的旋轉(zhuǎn)。它們的幾何意義分別是骨骼的長(zhǎng)度和兩塊骨骼之間關(guān)節(jié)的旋轉(zhuǎn)。mGlobalMatrix是骨骼相對(duì)于全局坐標(biāo)系的變換矩陣。根據(jù)骨架的層次結(jié)構(gòu),結(jié)合骨架系統(tǒng)的知識(shí)可以建立一個(gè)人體的骨架系統(tǒng)。

      3 結(jié)語(yǔ)

      本文首先介紹了構(gòu)成骨架系統(tǒng)的基本單元——關(guān)節(jié)鏈結(jié)構(gòu)。在此基礎(chǔ)上建立骨架系統(tǒng),從而得出骨架系統(tǒng)的運(yùn)動(dòng)求解的一般方法,即建立對(duì)整個(gè)骨架的運(yùn)動(dòng)控制方法。

      參考文獻(xiàn):

      [1] 金小剛,鮑虎軍,彭群生.計(jì)算機(jī)動(dòng)畫技術(shù)綜述[J].軟件學(xué)報(bào),1997(04).

      [2] Dave Shreiner . OpenGL編程指南[M].北京:機(jī)械工業(yè)出版社,2011.

      [3] 宋人杰,史長(zhǎng)東,崔衛(wèi)麗.復(fù)雜場(chǎng)景中多細(xì)節(jié)層次模型生成新算法[J].東北電力大學(xué)學(xué)報(bào),2014(3).

      出国| 土默特左旗| 泾阳县| 宜章县| 吉木萨尔县| 台前县| 肇东市| 许昌县| 沛县| 特克斯县| 友谊县| 元江| 龙里县| 青河县| 承德市| 丰县| 南平市| 光山县| 恩平市| 密山市| 天长市| 高密市| 麻城市| 阿坝| 砚山县| 新郑市| 平泉县| 镇赉县| 阿尔山市| 长葛市| 海盐县| 麦盖提县| 崇仁县| 芦溪县| 青浦区| 海南省| 滁州市| 大渡口区| 兴文县| 陕西省| 石柱|