亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于網(wǎng)格遷移的恐龍骨骼和動畫仿真方法研究

        2023-07-29 00:30:48馬韋偉
        計(jì)算機(jī)仿真 2023年6期
        關(guān)鍵詞:動畫模型

        高 燕,馬韋偉,2

        (1. 河源職業(yè)技術(shù)學(xué)院,廣東 河源 517000;2. 云南師范大學(xué)教育學(xué)部,云南 昆明 650500)

        1 引言

        在各種影視作品和電子游戲等應(yīng)用當(dāng)中,人體和動物角色模型的制作,以及基于骨骼進(jìn)行角色的動畫驅(qū)動,是非常必要且常見的需求。生動的人物和動物造型可以讓三維場景增色不少,而人物和動物角色的動畫運(yùn)動,尤其是交互式的動畫仿真效果,則能夠?qū)⑷S內(nèi)容提升到一個全新的高度。

        傳統(tǒng)的角色模型制作和動畫仿真,需要美術(shù)人員的大量介入。這其中包括角色模型頂點(diǎn)和三角面的制作,角色骨骼的擺放和蒙皮操作(即綁定模型頂點(diǎn)到對應(yīng)的骨骼之上),角色骨骼的動畫關(guān)鍵幀制作,以及角色模型的實(shí)時動畫驅(qū)動和渲染效果。對于常見的雙足人類角色,以及四足動物角色(例如貓、狗、牛等)而言,美術(shù)人員可以憑借自身經(jīng)驗(yàn),將以往作品作為參考,迅速地構(gòu)建角色模型和動畫,如圖1所示。

        圖1 常見雙足和四足動物角色及其骨骼

        但是對于一些特殊的生物體,例如各式各樣的恐龍角色而言,制作過程中就會存在比較大的變數(shù);而這些問題主要源自于制作人員并沒有真的見過恐龍的外形和運(yùn)動方式,導(dǎo)致無從下手,制作的骨骼關(guān)節(jié)位置和結(jié)構(gòu)不合理,關(guān)鍵幀動畫生硬,并且不知道如何調(diào)節(jié)等等。

        科學(xué)研究人員可以基于現(xiàn)有的生物體來推測恐龍的運(yùn)動方式,但是并不能要求美術(shù)人員同樣具有這樣的能力。如果可以通過某種方法,將恐龍角色與已經(jīng)存在的某些生物體模型進(jìn)行匹配,將后者的常見運(yùn)動方式映射到恐龍身上,從而快速產(chǎn)生平滑自然的動畫效果,那么將對相關(guān)應(yīng)用的開發(fā)和角色制作流程產(chǎn)生非常大的幫助。本文嘗試通過網(wǎng)格遷移的方法,將已經(jīng)制作完成的角色動畫快速地移植到可能具有類似動作行為的恐龍模型身上,從而批量式地生成恐龍角色動畫;并且省去了為恐龍角色制作骨骼關(guān)節(jié)的環(huán)節(jié),有效提升了工作效率,并且可以與傳統(tǒng)的美術(shù)環(huán)節(jié)無縫銜接。

        2 恐龍角色和參考角色的制作

        2.1 參考角色的意義

        假設(shè)有原始的三角網(wǎng)格模型S,它可以是任何常見的動物或者人物模型。那么通過模型頂點(diǎn)變形或者動畫關(guān)鍵幀的生成,可以得到一系列的形變模型S′。

        此時認(rèn)為,S和多個S′之間一定存在某種確定的形變關(guān)系,可以通過數(shù)學(xué)模型復(fù)現(xiàn)。

        對于目標(biāo)的三角網(wǎng)格模型T,假設(shè)它是已經(jīng)制作好的恐龍角色模型,并且不需要后續(xù)的骨骼和蒙皮步驟。

        如果它和原始模型S的形態(tài)上基本一致,那么同樣可以認(rèn)為,T和它的多個形變模型T′之間也存在著確定的形變關(guān)系,并且可以通過S和S′之間的形變數(shù)學(xué)模型遷移實(shí)現(xiàn),如圖2所示。

        圖2 已知原始模型S,T和形變模型S′,生成形變模型T′的遷移過程

        原始模型S和T之間不需要有相同的頂點(diǎn)數(shù),也不需要相同的三角面索引(即頂點(diǎn)的連接方式)。因此,可以針對任意恐龍網(wǎng)格模型,選擇一個與它相近的動物模型并通過角色骨骼和動畫產(chǎn)生多個形變模型,進(jìn)而通過網(wǎng)格遷移的方式產(chǎn)生對應(yīng)的恐龍形變模型。形變模型的頂點(diǎn)變化過程,也就是恐龍角色的動畫仿真過程。

        2.2 參考角色的骨骼制作

        可以使用Maya等常見建模軟件來制作參考網(wǎng)格模型,并設(shè)置它的骨骼信息。人體和四足動物的骨骼關(guān)節(jié)有一定的相似之處,都有頭部,頸部,脊柱,雙手和雙腳,且通常都具有肩關(guān)節(jié)、肘關(guān)節(jié)和膝關(guān)節(jié)的設(shè)置(手指和腳趾數(shù)量這里不做考慮)。區(qū)別在于人體采取站姿,雙手垂立身旁;而四足動物的脊柱是平行于地面的,“雙手”和雙腳均站立在地面上,如圖3所示。

        圖3 常見的四足動物參考角色骨骼分布

        四足動物還可能有一些特定的骨骼關(guān)節(jié),例如尾巴部分,或者例如大象等動物的鼻子和耳朵。是否要對這些部分進(jìn)行骨骼構(gòu)建,通常取決于實(shí)際應(yīng)用中的需求。

        2.3 參考角色的模型和標(biāo)記點(diǎn)導(dǎo)出

        將參考模型和恐龍模型均輸出為Autodesk FBX格式。該格式采用公開的數(shù)據(jù)標(biāo)準(zhǔn),可以直接用于Unity,Unreal等常見的三維渲染引擎。

        FBX格式內(nèi)部通過FbxMesh類來管理每個模型網(wǎng)格體。獲取模型頂點(diǎn)和三角面信息的基本代碼如下:

        FbxMesh* m=…;

        FbxVector4* v=m->GetControlPoints();

        int num=m->GetPolygonCount();

        for (int i=0,n=0; i

        int v0=m->GetPolygonVertex(i,n+0),

        v1=m->GetPolygonVertex(i,n+1),

        v2=m->GetPolygonVertex(i,n+2);

        ∥ 三角形={vertices[v0],

        ∥ vertices[v1],vertices[v2]}

        n+=3;

        }

        為了正確執(zhí)行網(wǎng)格遷移算法,還需要在建模軟件中建立一些標(biāo)記點(diǎn),用來標(biāo)記角色模型表面的一些關(guān)鍵位置。標(biāo)記點(diǎn)可以直接用系統(tǒng)默認(rèn)的Cylinder或者Node來標(biāo)記,并隨FBX格式導(dǎo)出;也可以在后續(xù)的渲染引擎Unity或者Unreal中手動編輯制作,并用于算法計(jì)算過程當(dāng)中。

        3 恐龍角色的自動網(wǎng)格遷移

        3.1 網(wǎng)格形變遷移算法的推導(dǎo)

        源模型S的變形S′可以表示為為源模型網(wǎng)格中的每個三角形的仿射變換集合。仿射變換矩陣中的非平移部分包括了由三角形變形引起的方向、比例和傾斜度的變化。但是,三角形的三個頂點(diǎn)v1,v2和v3并不能完全確定一個完整的仿射變換結(jié)果,因?yàn)樗鼈儾荒艽_定垂直于三角形的空間是如何變形的。因此,需要引入第四個頂點(diǎn)v4,它垂直于三角形存在,其計(jì)算公式為

        因此,源模型S中每個三角形的4個頂點(diǎn),變換到形變模型S′之后,新的4個頂點(diǎn)可以表達(dá)為原頂點(diǎn)乘以一個3×3的仿射矩陣Q,再加上一個位移d的結(jié)果,即

        v′1=Qvi+d,i∈[1,4]

        為了計(jì)算仿射矩陣Q,需要消去位移值d,那么有如下公式

        d=v′1-Qv1

        v′i-v′1=Q(vi-v1)

        Q=(v′i-v′1)(vi-v1)-1=V′V-1

        由此可以計(jì)算得到放射矩陣Q的值,進(jìn)而得到源模型S與形變模型S′之間的變換數(shù)學(xué)模型。

        3.2 基于已有角色的模型網(wǎng)格遷移

        需要建立兩組源模型T與S之間的映射關(guān)系。進(jìn)而由于S和S′之間的變換關(guān)系已知,那么就可以得到T與T′之間的變換關(guān)系。但是,因?yàn)镾和T的頂點(diǎn)數(shù)和三角面數(shù)都是不一樣的,不能直接采取一一對應(yīng)的方式來計(jì)算映射關(guān)系。此時需要手動建立多個標(biāo)記點(diǎn),用來標(biāo)識用戶模型T和參考模型S之間的對應(yīng)關(guān)系。標(biāo)記點(diǎn)的數(shù)量不限,但是每個參考點(diǎn)在兩個模型中必須表達(dá)同樣的物理位置(例如頭部,手部,腳步),并且總數(shù)量必須相等,如圖4所示。

        圖4 在源模型S和T上設(shè)置同樣數(shù)量的標(biāo)記點(diǎn)

        遍歷每個標(biāo)記點(diǎn),搜索質(zhì)心非常接近的成對的網(wǎng)格S三角形和網(wǎng)格T三角形,進(jìn)而計(jì)算三角形對應(yīng)關(guān)系。通過迭代最近點(diǎn)的算法,即可得到兩個三角形之間的仿射變換矩陣Q和位移d,并通過上一節(jié)的方法進(jìn)行計(jì)算。

        此外,根據(jù)共享頂點(diǎn)的原理,模型網(wǎng)格發(fā)生形變后,相鄰的兩個三角網(wǎng)格應(yīng)當(dāng)滿足如下關(guān)系

        Tjvi+dj=Tkvi+dk

        其中j,k表示模型網(wǎng)格中兩個相鄰的三角形,vi表示它們共享的頂點(diǎn)。

        3.3 基于已有角色的快速動畫數(shù)據(jù)遷移

        根據(jù)之前的算法,可以通過用戶輸入多個標(biāo)記點(diǎn)的方式,計(jì)算參考模型S與源恐龍模型T之間的變換關(guān)系。而通過類似的方法也可以計(jì)算形變模型S′和S之間的變換關(guān)系。并且因?yàn)镾和S′的頂點(diǎn)和三角面是完全一致的,因此不需要添加新的參考點(diǎn)。依據(jù)上述兩次運(yùn)算的結(jié)果,可以得到目標(biāo)形變模型T′與T之間的關(guān)系,進(jìn)而通過原始的靜止恐龍模型T,得到新的運(yùn)動恐龍模型T′。

        這一過程可以通過計(jì)算機(jī)程序?qū)崿F(xiàn)自動運(yùn)算,即,對于已經(jīng)制作完成的參考模型S和它的關(guān)鍵幀動畫As,可以通過骨骼和蒙皮計(jì)算,輸出它的每個關(guān)鍵幀對應(yīng)的形變模型SAi。之后對于恐龍模型T,雖然它沒有骨骼和蒙皮信息,但是依然可以通過網(wǎng)格遷移的方式,得到每個參考形變模型SAi對應(yīng)的恐龍形變模型TAi。

        對于一組關(guān)鍵幀動畫As,可以得到對應(yīng)的關(guān)鍵幀動畫序列At={TA1,TA2,…,TAn}。注意新的動畫序列并不是角色骨骼動畫,而是模型頂點(diǎn)變形動畫。相比于前者來說,頂點(diǎn)變形動畫的實(shí)時執(zhí)行效率更高,動畫仿真效果更為精細(xì),但是需要更多的存儲空間,并且無法逆運(yùn)算轉(zhuǎn)換到骨骼動畫。

        4 實(shí)例研究

        使用Unity引擎作為基礎(chǔ)測試平臺,使用C#實(shí)現(xiàn)網(wǎng)格遷移的算法。原始的低多邊形恐龍模型(無骨骼或者動畫數(shù)據(jù))如圖5所示。

        圖5 原始的恐龍模型

        用于進(jìn)行網(wǎng)格遷移算法應(yīng)用的參考模型是一種常見的四足動物,其行走的骨骼動畫已經(jīng)制作完成,可以直接播放,并按照關(guān)鍵幀輸出多組形變網(wǎng)格模型,如圖6所示。

        圖6 參考模型和形變模型

        通過網(wǎng)格遷移算法,將參考模型的動畫效果移植到恐龍角色上。為此,首先在Unity引擎中添加30-40個標(biāo)記點(diǎn),主要用來標(biāo)記兩個原始模型中相似的位置,例如頭頂,嘴部,四足位置,肩部和胯部,尾部等等。之后,通過網(wǎng)格遷移算法進(jìn)行仿射矩陣計(jì)算和形變模型運(yùn)算。具體的模型和計(jì)算參數(shù)如下表1所示。

        表1 網(wǎng)格遷移模型參數(shù)

        通過驗(yàn)證可知,該算法過程消耗的CPU計(jì)算時間較短,且能夠產(chǎn)生較好的形變效果,基本滿足了恐龍模型和動畫仿真系統(tǒng)的需求,如圖7所示。

        圖7 恐龍角色動畫形變結(jié)果

        5 結(jié)語

        研究了一種網(wǎng)格遷移的算法,對于沒有進(jìn)行骨骼蒙皮操作的原始模型T,可以通過另一個已經(jīng)制作完畢的參考模型S,以及多組由關(guān)鍵幀動畫生成的形變模型S′,生成新的形變模型T′。該方法不需要原始模型和參考模型的頂點(diǎn)數(shù)或者三角面數(shù)相等,但是需要在兩者表面上添加多個標(biāo)記點(diǎn),對應(yīng)于兩組模型上物理意義相同的位置標(biāo)注。標(biāo)記點(diǎn)可以在建模軟件中設(shè)置,也可以實(shí)時引擎中直接添加。但是標(biāo)記點(diǎn)數(shù)量必須相等,且ID在兩個模型上是一一對應(yīng)的。

        該方法可以用于處理復(fù)雜的恐龍三維模型。通過已經(jīng)制作完畢的參考模型和動畫數(shù)據(jù),經(jīng)過簡單的標(biāo)記點(diǎn)添加操作,即可產(chǎn)生恐龍模型的多組變形動畫,并且不需要制作骨骼和設(shè)置蒙皮效果。這大大降低了美術(shù)人員的工作量,并且得到的動畫仿真數(shù)據(jù)結(jié)果平滑可靠,符合大多數(shù)人對一般動物的運(yùn)動認(rèn)知,不會產(chǎn)生生硬感。

        該方法目前依然有一些需要優(yōu)化的地方:首先,手動添加標(biāo)記點(diǎn)的操作目前是無法避免的,這導(dǎo)致整個恐龍動畫仿真的流程無法實(shí)現(xiàn)完全自動化,仍然需要有美術(shù)和三維基礎(chǔ)的人員介入;其次,標(biāo)記點(diǎn)的數(shù)量和準(zhǔn)確性對于形變結(jié)果的影響較大,如果標(biāo)記點(diǎn)數(shù)量過少,則極易出現(xiàn)形變結(jié)果的異常。并且頂點(diǎn)變形效果如果存在不平滑和不連續(xù)的情況,其表現(xiàn)結(jié)果比骨骼動畫要更為明顯,并且很難通過手動的方式進(jìn)行后續(xù)修補(bǔ),而是只能通過調(diào)整標(biāo)記點(diǎn)來重新輸出。如何改善和解決這些問題,也是后續(xù)研究的重點(diǎn)方向。

        猜你喜歡
        動畫模型
        一半模型
        做個動畫給你看
        重要模型『一線三等角』
        動畫發(fā)展史
        重尾非線性自回歸模型自加權(quán)M-估計(jì)的漸近分布
        我的動畫夢
        文苑(2019年22期)2019-12-07 05:28:56
        動畫批評融入動畫教育的思考
        新聞傳播(2018年3期)2018-05-30 07:01:39
        3D打印中的模型分割與打包
        我是動畫迷
        FLUKA幾何模型到CAD幾何模型轉(zhuǎn)換方法初步研究
        丰满人妻被中出中文字幕| 久久精品亚洲成在人线av乱码| 成年美女黄的视频网站| 亚洲成av人片一区二区| 久久se精品一区精品二区国产| 色婷婷久久99综合精品jk白丝| 国产av天堂亚洲av刚刚碰| 野外亲子乱子伦视频丶| 久久久久亚洲av无码尤物| 国产成人综合久久三区北岛玲| 在线观看国产白浆一区三区| 中文字幕乱码无码人妻系列蜜桃| .精品久久久麻豆国产精品| 蜜桃av无码免费看永久| 日本美女在线一区二区| 国产麻豆精品一区二区三区v视界| 色偷偷88888欧美精品久久久| 亚洲一二三四五区中文字幕| 国产自拍在线视频91| 国产精品网站在线观看免费传媒| 色综合一本| 日本大片在线一区二区三区| 免费日本一区二区三区视频| 波多野结衣乳巨码无在线| 天天插天天干天天操| 精品人妻av中文字幕乱| 亚洲人成网网址在线看| 妺妺窝人体色www在线图片| 日本黄色一区二区三区视频| 在线观看视频日本一区二区| 免费99精品国产自在在线| 成人片在线看无码不卡| 亚洲中文中文字幕乱码| 日韩精品成人无码专区免费| 国产成人国产在线观看入口| 99精品又硬又爽又粗少妇毛片| 免费a级毛片又大又粗又黑| 国产欧美亚洲精品a| 成年女人片免费视频播放A| 国产亚洲av成人噜噜噜他| 曰本大码熟中文字幕|