• 
    

    
    

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

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

      2021-05-13 07:16:32呂依娜
      現(xiàn)代計算機 2021年8期
      關鍵詞:軟體體素蒙皮

      呂依娜

      (四川大學計算機學院,成都610065)

      0 引言

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

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

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

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

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

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

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

      1 流程概述

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

      圖1 算法流程

      2 體素初始化

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

      2.1 體素分層

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

      圖2 模型體素化

      2.2 權重計算

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

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

      3 實時變形

      3.1 初次變形

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

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

      3.2 二次變形

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

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

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

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

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

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

      4 實驗結(jié)果及分析

      4.1 實驗環(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 實驗結(jié)果

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

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

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

      5 結(jié)語

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

      猜你喜歡
      軟體體素蒙皮
      基于超體素聚合的流式細胞術自動門控方法
      蚯蚓軟體機器人來到火星變身“農(nóng)夫”
      軍事文摘(2024年4期)2024-01-09 09:07:58
      一種適用于變彎度機翼后緣的蒙皮設計方法
      不同材質(zhì)客車頂蒙皮與前后圍蒙皮接縫處理方案
      基于多級細分的彩色模型表面體素化算法
      運載火箭框桁蒙皮結(jié)構鉚接殼段多余物分析與控制
      晶格型模塊化軟體機器人自重構序列
      會捉蒼蠅的高速軟體機器人問世
      軍事文摘(2020年24期)2020-11-29 06:35:54
      運用邊界狀態(tài)約束的表面體素加密細分算法
      基于體素格尺度不變特征變換的快速點云配準方法
      抚顺县| 陆丰市| 积石山| 比如县| 梧州市| 梁河县| 桃园县| 饶阳县| 普兰店市| 无为县| 泰兴市| 祁门县| 和龙市| 晋江市| 宁德市| 新余市| 政和县| 濮阳市| 内江市| 驻马店市| 阿拉善左旗| 武邑县| 金昌市| 嘉禾县| 屯门区| 买车| 广安市| 鄄城县| 南宫市| 九龙县| 五华县| 韩城市| 辉县市| 桃园县| 辽阳市| 灌阳县| 阳曲县| 淮滨县| 平安县| 抚松县| 揭东县|