国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

2023-07-29 00:30:48馬韋偉
計(jì)算機(jī)仿真 2023年6期
關(guān)鍵詞:參考模型骨骼頂點(diǎn)

高 燕,馬韋偉,2

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

1 引言

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

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

圖1 常見雙足和四足動(dòng)物角色及其骨骼

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

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

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

2.1 參考角色的意義

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

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

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

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

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

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

2.2 參考角色的骨骼制作

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

圖3 常見的四足動(dòng)物參考角色骨骼分布

四足動(dòng)物還可能有一些特定的骨骼關(guān)節(jié),例如尾巴部分,或者例如大象等動(dòng)物的鼻子和耳朵。是否要對(duì)這些部分進(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類來管理每個(gè)模型網(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中手動(dòng)編輯制作,并用于算法計(jì)算過程當(dāng)中。

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

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

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

因此,源模型S中每個(gè)三角形的4個(gè)頂點(diǎn),變換到形變模型S′之后,新的4個(gè)頂點(diǎn)可以表達(dá)為原頂點(diǎn)乘以一個(gè)3×3的仿射矩陣Q,再加上一個(gè)位移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ù)都是不一樣的,不能直接采取一一對(duì)應(yīng)的方式來計(jì)算映射關(guān)系。此時(shí)需要手動(dòng)建立多個(gè)標(biāo)記點(diǎn),用來標(biāo)識(shí)用戶模型T和參考模型S之間的對(duì)應(yīng)關(guān)系。標(biāo)記點(diǎn)的數(shù)量不限,但是每個(gè)參考點(diǎn)在兩個(gè)模型中必須表達(dá)同樣的物理位置(例如頭部,手部,腳步),并且總數(shù)量必須相等,如圖4所示。

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

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

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

Tjvi+dj=Tkvi+dk

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

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

根據(jù)之前的算法,可以通過用戶輸入多個(gè)標(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)動(dòng)恐龍模型T′。

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

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

4 實(shí)例研究

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

圖5 原始的恐龍模型

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

圖6 參考模型和形變模型

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

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

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

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

5 結(jié)語

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

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

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

猜你喜歡
參考模型骨骼頂點(diǎn)
做家務(wù)的女性骨骼更強(qiáng)壯
中老年保健(2021年5期)2021-12-02 15:48:21
過非等腰銳角三角形頂點(diǎn)和垂心的圓的性質(zhì)及應(yīng)用(下)
三減三健全民行動(dòng)——健康骨骼
中老年保健(2021年5期)2021-08-24 07:06:28
關(guān)于頂點(diǎn)染色的一個(gè)猜想
骨骼和肌肉
小布老虎(2017年1期)2017-07-18 10:57:27
基于環(huán)境的軍事信息系統(tǒng)需求參考模型
語義網(wǎng)絡(luò)P2P參考模型的查詢過程構(gòu)建
基于參考模型的制造業(yè)MES需求建模
基于數(shù)據(jù)的PID設(shè)計(jì)方法比較
數(shù)學(xué)問答
阿拉尔市| 荥阳市| 荣成市| 莱西市| 叙永县| 栾川县| 苗栗市| 肥东县| 晴隆县| 乌鲁木齐县| 和田市| 肥城市| 墨脱县| 无为县| 佛冈县| 韶关市| 辰溪县| 郯城县| 韶山市| 高唐县| 射阳县| 馆陶县| 曲水县| 盈江县| 遂溪县| 辽宁省| 清镇市| 南汇区| 贡嘎县| 张家口市| 紫阳县| 开化县| 通江县| 曲松县| 西安市| 高清| 高淳县| 南京市| 永济市| 新沂市| 尉犁县|