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

?

骨骼驅(qū)動(dòng)的軟體角色動(dòng)畫

2021-05-13 07:16呂依娜
現(xiàn)代計(jì)算機(jī) 2021年8期
關(guān)鍵詞:蒙皮軟體骨骼

呂依娜

(四川大學(xué)計(jì)算機(jī)學(xué)院,成都610065)

0 引言

近些年來,隨著電影、游戲和虛擬現(xiàn)實(shí)應(yīng)用的快速發(fā)展,計(jì)算機(jī)三維動(dòng)畫技術(shù)因?yàn)槟軌騽?chuàng)造逼真的視覺效果,而被廣泛用于這些行業(yè)之中。在動(dòng)畫領(lǐng)域中,骨骼動(dòng)畫技術(shù)因其控制簡單高效的優(yōu)點(diǎn),成為最常見的虛擬人動(dòng)畫技術(shù)之一。而如何讓動(dòng)畫中的三維虛擬角色更加栩栩如生成為目前熱門的研究方向之一。

骨骼動(dòng)畫的核心思想是在虛擬角色內(nèi)部構(gòu)建一副具有層次結(jié)構(gòu)的骨架,為骨骼和皮膚網(wǎng)格頂點(diǎn)定義一種映射關(guān)系,使皮膚網(wǎng)格頂點(diǎn)與骨骼綁定,這個(gè)過程也稱為蒙皮。蒙皮完成后,就可以用骨架來驅(qū)動(dòng)附著在其上的皮膚運(yùn)動(dòng),生成虛擬角色動(dòng)畫。骨架的運(yùn)動(dòng)數(shù)據(jù)可以由動(dòng)畫師定義,也可以通過動(dòng)捕設(shè)備獲得。常見的蒙皮方法有LBS(Linear Blend Skinning)[1]和DQS(Dual Quaternion Skinning)[2],它們的優(yōu)點(diǎn)是計(jì)算快速,但都有關(guān)節(jié)塌陷和走樣的問題。通過幾何蒙皮技術(shù)實(shí)現(xiàn)的骨骼動(dòng)畫,雖然能實(shí)現(xiàn)流暢的動(dòng)作,但無法模擬人體軟組織的運(yùn)動(dòng)效果,例如脂肪的抖動(dòng)和碰撞引起的皮膚變形。這些軟組織運(yùn)動(dòng)和皮膚變形,能帶來更豐富更逼真的視覺效果,也是創(chuàng)造真實(shí)感動(dòng)畫的關(guān)鍵。

為了模擬在運(yùn)動(dòng)過程中虛擬角色皮膚抖動(dòng)和變形的效果,在過去動(dòng)畫師們需要手動(dòng)在關(guān)鍵幀處理虛擬角色的皮膚變形,雖然能達(dá)到真實(shí)的視覺效果,但過程非常繁瑣耗時(shí)。所以研究人員們提出了基于物理的蒙皮方法,采用自動(dòng)模擬的方式增強(qiáng)角色變形的真實(shí)感。傳統(tǒng)的仿真方法主要通過3D 掃描人體結(jié)構(gòu),構(gòu)建具有骨骼、肌肉和脂肪組織的多層次人體解剖模型,然后通過有限元方法(FEM)[3]對模型體積網(wǎng)格進(jìn)行受力分析和求解。這種仿真方法符合現(xiàn)實(shí)中人體動(dòng)力學(xué),能模擬非常逼真的肌肉組織運(yùn)動(dòng)。但建模復(fù)雜且難度高,只適合人體模型的仿真運(yùn)動(dòng),不適用于虛擬卡通角色。除此之外,近些年還提出了基于樣本數(shù)據(jù)學(xué)習(xí)的模擬方法,例如SMPL 模型(Skinned Multi-Person Linear model)[4]能實(shí)現(xiàn)具有脂肪抖動(dòng)物理效果的多人蒙皮動(dòng)畫?;跇永姆椒ㄐ枰斎胍幌盗心P筒煌藙莸臉颖?,然后訓(xùn)練學(xué)習(xí)如何通過各種姿勢進(jìn)行混合蒙皮。這種方法依賴大量訓(xùn)練姿勢的樣本,訓(xùn)練后的模型只適用于特定的骨架和皮膚網(wǎng)格,換一套骨架和網(wǎng)格可能需要重新訓(xùn)練。

本文提出了一種通用的分層體素框架,能實(shí)時(shí)模擬皮膚的彈性行為,如脂肪和軟組織抖動(dòng)等效果。給定任意的模型網(wǎng)格及對應(yīng)靜態(tài)骨骼數(shù)據(jù),本框架可以將網(wǎng)格體素化后的結(jié)果分為骨骼部分和可變形的軟體部分。整個(gè)角色的蒙皮動(dòng)畫分為兩個(gè)步驟,首先使用經(jīng)典的線性混合算法對骨骼部分進(jìn)行初次變形,然后利用基于網(wǎng)格的形狀匹配算法[5]將運(yùn)動(dòng)傳遞到軟體部分,最終形成平滑的蒙皮。本框架主要有以下幾個(gè)特點(diǎn):

●可以自由調(diào)整體素模型的分層結(jié)構(gòu),改變骨骼部分和軟體部分的比例。通過改變兩個(gè)部分的比例可以獲得不同的變形效果;

●骨骼部分的蒙皮權(quán)重不需要手動(dòng)計(jì)算,通過體素網(wǎng)格方法可以自動(dòng)獲得;

●相比于傳統(tǒng)的軟體模擬方法具有更好的穩(wěn)定性,且滿足實(shí)時(shí)的性能需求。

1 流程概述

如圖1 所示是本文的基本流程。輸入是模型的網(wǎng)格和初始骨骼數(shù)據(jù),首先對網(wǎng)格進(jìn)行體素化并進(jìn)行分層。根據(jù)用戶指定的比例,體素被分為骨骼體素和軟體體素。然后根據(jù)最短體素距離[6]可以計(jì)算骨骼體素的蒙皮權(quán)重,蒙皮權(quán)重在線性混合算法中會(huì)被用到。初始化過程結(jié)束后,輸入骨骼每幀的運(yùn)動(dòng)數(shù)據(jù),進(jìn)入實(shí)時(shí)的動(dòng)畫過程。此過程主要包含兩次變形,第一次是針對骨骼體素進(jìn)行線性混合蒙皮[6],使骨骼體素產(chǎn)生初次運(yùn)動(dòng)。第二次變形是根據(jù)形狀匹配算法[5]將骨骼層的運(yùn)動(dòng)平滑的傳遞到軟體層,調(diào)整剛度系數(shù)可以改變變形的軟硬程度。最后通過線性插值將體素的運(yùn)動(dòng)映射回原模型網(wǎng)格頂點(diǎn),改變頂點(diǎn)位置,完成骨骼驅(qū)動(dòng)的蒙皮動(dòng)畫。

圖1 算法流程

2 體素初始化

本節(jié)介紹了初始化的主要兩個(gè)流程,包括模型體素化分層以及骨骼體素的權(quán)重計(jì)算。

2.1 體素分層

本文采用基于GPU 的方法[7]將模型網(wǎng)格體素化,使得體素占據(jù)了封閉網(wǎng)格包含的整個(gè)空間。體素化分辨率可由用戶指定。如圖2 所示體素化完成后,輸入初始骨骼數(shù)據(jù)(一種樹形結(jié)構(gòu)),進(jìn)行分層操作。與骨骼線段相交的體素被默認(rèn)的劃分到骨骼層中。用戶也可以指定一個(gè)距離h用來控制骨骼層體素的數(shù)量,與骨骼相交體素的最短曼哈頓距離為h的所有體素也屬于骨骼層,剩下的體素被自動(dòng)劃分到軟體層中。h越大,骨骼層體素的數(shù)量越多,相對的軟體層的體素?cái)?shù)量就越少。骨骼層和軟體層的比例會(huì)影響最后的蒙皮效果,用戶可根據(jù)不同模型采取不同的比例進(jìn)行分層。

圖2 模型體素化

2.2 權(quán)重計(jì)算

本文只對骨骼層體素進(jìn)行蒙皮權(quán)重計(jì)算,此蒙皮權(quán)重將用于初次變形。假設(shè)骨骼樹中某塊骨骼為b,骨骼層某體素為i。我們定義db-i為骨骼層體素i到骨骼b的最短曼哈頓距離[6],可通過Dijkstra 算法得到。根據(jù)公式(1)和公式(2)可以計(jì)算出骨骼b對體素i的影響權(quán)重:

其中,ε是一個(gè)較小的值,可以避免公式(1)中的分母為0。α是屬于0-1 的常數(shù),用于調(diào)整距離對權(quán)重的影響。增大α的值,可以降低遠(yuǎn)處骨骼對體素的影響。在本文的實(shí)驗(yàn)中設(shè)為0.7 較為合適。通過以上公式可以計(jì)算每個(gè)體素受每塊骨骼的影響權(quán)重,一般來說,我們選取權(quán)重最大的四塊骨骼做蒙皮計(jì)算,權(quán)重之和為1。

3 實(shí)時(shí)變形

3.1 初次變形

初始化過程結(jié)束后,可對骨骼層體素進(jìn)行初次變形。本文采用線性混合蒙皮算法進(jìn)行此步驟。輸入數(shù)據(jù)是骨骼每幀的運(yùn)動(dòng)數(shù)據(jù),包含旋轉(zhuǎn)和平移信息,可用變換矩陣Tb表示骨骼b的運(yùn)動(dòng)數(shù)據(jù)。假設(shè)骨骼體素i受四塊骨骼影響,并且根據(jù)初始化步驟已經(jīng)得到了影響權(quán)重w。那么在運(yùn)動(dòng)過程中,體素i的位置可由以下公式得到:

其中,p0b-i是體素i在初始狀態(tài)時(shí)相對于骨骼b的局部位置。體素受4 塊骨骼影響,乘上每塊骨骼的變換矩陣就能得到四個(gè)相應(yīng)的新位置,再乘上對應(yīng)的權(quán)重然后相加就能得到一個(gè)平均位置。這個(gè)平均加權(quán)位置就是骨骼體素初次變形后的位置。

3.2 二次變形

初始變形結(jié)束后,骨骼層的體素根據(jù)骨骼數(shù)據(jù)的驅(qū)動(dòng)已經(jīng)移到了新的位置。接下來進(jìn)入二次變形的步驟,二次變形不再改變骨骼體素的位置,改變的是軟體層體素的位置。本文采用基于塊區(qū)域的形狀匹配算法,將骨骼體素的運(yùn)動(dòng)傳遞到軟體體素。基于塊區(qū)域的形狀匹配算法的核心思想是將模型的所有體素劃分為一個(gè)個(gè)重疊的塊區(qū)域,當(dāng)骨骼體素發(fā)生位置的變化時(shí),對每個(gè)塊區(qū)域進(jìn)行一次形狀匹配,估計(jì)每個(gè)塊區(qū)域的運(yùn)動(dòng)。由于塊區(qū)域是重疊的,因此骨骼體素位置的改變會(huì)引起所在塊區(qū)域的變形,也會(huì)影響到重疊的其他塊區(qū)域發(fā)生形變。如圖3 所示是算法的示意圖,當(dāng)塊區(qū)域中的體素發(fā)生位置變化時(shí),運(yùn)動(dòng)會(huì)平滑過渡到其他塊區(qū)域,使整個(gè)物體發(fā)生平滑的形變,形成軟體效果。

我們首先需要為每個(gè)體素i生成一個(gè)塊區(qū)域Ri,這里不區(qū)分骨骼體素和軟體體素。我們定義一個(gè)距離n,塊區(qū)域Ri包含了到體素i距離為n的所有體素。當(dāng)n=1 時(shí),Ri就是i以及它的一環(huán)鄰居。n越大,塊區(qū)域包含的體素?cái)?shù)量就越多。由于塊區(qū)域間有重疊,一個(gè)體素可能被多個(gè)塊區(qū)域共享,因此體素i的質(zhì)量需要除以所屬的塊區(qū)域的總個(gè)數(shù),即m'i=mi/ |Ri|。每個(gè)塊區(qū)域的質(zhì)心可以通過以下公式得到:

圖3 基于塊區(qū)域的形狀匹配[5]

其中,C0r是初始狀態(tài)的質(zhì)心,Cr是當(dāng)前的質(zhì)心。Mr是塊區(qū)域內(nèi)所有體素的總質(zhì)量。xi0是體素初始位置,xi是當(dāng)前位置。那么,每個(gè)塊區(qū)域r的最優(yōu)線性變換矩陣A為:

我們只關(guān)心A中的旋轉(zhuǎn)分量。而最優(yōu)旋轉(zhuǎn)矩陣R可由A通過極分解獲得,因此每個(gè)塊區(qū)域相對于初始狀態(tài)的最優(yōu)線性變換T,可通過旋轉(zhuǎn)矩陣和平移矩陣相乘獲得,即T=R(cr-Rc0r)。那么,根據(jù)每個(gè)塊區(qū)域的最優(yōu)線性變換T,可以得到該區(qū)域內(nèi)每個(gè)體素的移動(dòng)位置為:

由于一個(gè)體素可能被多個(gè)塊區(qū)域共享,因此它的最終位置是所屬塊區(qū)域的移動(dòng)位置的平均值,即:

4 實(shí)驗(yàn)結(jié)果及分析

4.1 實(shí)驗(yàn)環(huán)境

硬件配置:Intel Core i7-3770 CPU,3.4GHz,8G 內(nèi)存,NVIDIA GeForce GTX-560 顯卡;開發(fā)環(huán)境:Visual Studio 2017,Blender,C++編程,OpenGL 圖形開發(fā)。

4.2 實(shí)驗(yàn)結(jié)果

經(jīng)實(shí)驗(yàn)證明,本文提出的方法在滿足實(shí)時(shí)性能需求的同時(shí),能得到視覺可信的軟體模擬效果。如圖4所示是一個(gè)胖子模型的骨骼動(dòng)畫截圖,胖子模型的肚子會(huì)隨著運(yùn)動(dòng)發(fā)生變形和抖動(dòng),符合預(yù)期效果。

圖4 蒙皮動(dòng)畫結(jié)果

此外,本文還使用了不同模型分別進(jìn)行了實(shí)驗(yàn),測試其性能表現(xiàn)。經(jīng)實(shí)驗(yàn)結(jié)果表明,模型體素化的分辨率越高,蒙皮動(dòng)畫的效果越真實(shí),但相應(yīng)的性能也會(huì)大幅度下降。因此體素化分辨率的選擇需要在視覺效果和效率之間做權(quán)衡。復(fù)雜的模型可能需要更精細(xì)的體素化,例如人體的手指需要較小的體素來表現(xiàn)皮膚的變形行為。在實(shí)時(shí)的蒙皮過程中,時(shí)間消耗最大的是二次變形。因?yàn)槊總€(gè)體素都會(huì)生成一個(gè)塊區(qū)域,每個(gè)塊區(qū)域都會(huì)進(jìn)行形狀匹配計(jì)算,形狀匹配算法中最優(yōu)線性矩陣的計(jì)算通常需要迭代獲得,因此比較耗時(shí)。二次變形是個(gè)串行計(jì)算過程,也是影響性能的主要瓶頸。

5 結(jié)語

本文提出一種后處理蒙皮的方法,將經(jīng)典幾何蒙皮和軟體模擬結(jié)合在一起,把動(dòng)畫管線中的蒙皮過程分成了兩個(gè)步驟。本文將線性混合蒙皮用于骨骼層體素,進(jìn)行剛性變形。然后利用形狀匹配算法將骨骼層體素的運(yùn)動(dòng)傳遞到其他層次,模擬其他層的軟體運(yùn)動(dòng),形成以骨骼驅(qū)動(dòng)的軟體變形效果。經(jīng)實(shí)驗(yàn)表明,此方法達(dá)到了視覺可信的變形效果,且適用于實(shí)時(shí)的應(yīng)用。在以后的研究中,我們會(huì)嘗試加入一些幾何約束來增強(qiáng)變形的真實(shí)性。在性能方面,我們會(huì)嘗試尋找基于GPU 的實(shí)現(xiàn)方法來提高復(fù)雜模型動(dòng)畫的效率。

猜你喜歡
蒙皮軟體骨骼
客車側(cè)圍鋁蒙皮漲拉工藝技術(shù)研究
飛機(jī)機(jī)翼內(nèi)墊曲線式褶皺夾層結(jié)構(gòu)的抗鳥撞性能研究
大型客機(jī)蒙皮生產(chǎn)線制造效率分析
基于鏡像銑的某型飛機(jī)厚蒙皮銑邊優(yōu)化
軟體機(jī)器人也有“七十二變”
一種氣動(dòng)四足直線運(yùn)動(dòng)的軟體機(jī)器人
3D打印骨骼指日可待
擁有“嘴”和“腸”的軟體機(jī)器人
骨骼是如何生長的
神奇的骨骼