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

?

拉伸、碰撞情景下布料撕裂的實(shí)時(shí)仿真模擬

2019-12-04 03:15:40劉宇涵賈江凱陶建新張金鐘任小霞
關(guān)鍵詞:質(zhì)點(diǎn)數(shù)據(jù)結(jié)構(gòu)風(fēng)場

劉宇涵,賈江凱,唐 勇,陶建新,張金鐘,任小霞

1(燕山大學(xué) 信息科學(xué)與工程學(xué)院,河北 秦皇島 066004)2(河北省計(jì)算機(jī)虛擬技術(shù)與系統(tǒng)集成重點(diǎn)實(shí)驗(yàn)室,河北 秦皇島 066004)

1 引 言

布料模擬在計(jì)算機(jī)圖形學(xué)中占很大的比重,但在游戲中,模擬布料撕裂的效果嚴(yán)重失真.相比布料其它運(yùn)動(dòng)行為的模擬,布料撕裂導(dǎo)致網(wǎng)格結(jié)構(gòu)的改變以及撕裂軌跡的難以捉摸,使得布料撕裂模擬的研究更具有挑戰(zhàn)性.

20世紀(jì)80年代開始,大量科學(xué)家致力于計(jì)算機(jī)模擬布料撕裂的研究.1998年,Terzopoulos和Fleischer等人[1]在展示了一種撕紙和模擬布狀材料的技術(shù),給布料撕裂模擬研究提供了借鑒.2007年,Sifakis等人[2]使用虛擬節(jié)點(diǎn)法,在虛擬元素中嵌入裂縫,降低布料的穩(wěn)定性,然而這種方法限制了裂縫傳播的準(zhǔn)確性,需要規(guī)定撕裂軌跡.2009年,kaufmann等人[3]嵌入XFEM可以準(zhǔn)確地解決規(guī)定撕裂軌跡的問題,但是對軌跡的幾何形狀進(jìn)行了限制,且計(jì)算代價(jià)太大.2009年,Metaaphanon N 等人[4]使用標(biāo)準(zhǔn)連續(xù)表單模型和紗線級模型,模擬出逼真的布料撕裂邊緣的磨損效果.正是因?yàn)閮蓪幽P偷氖褂?實(shí)驗(yàn)?zāi)M速度達(dá)不到實(shí)時(shí).2014年,Souza M S等人[5]提出一種使用Half-edge結(jié)構(gòu)的查找方法解決布料的撕裂模擬,提高了計(jì)算速度,但是降低了真實(shí)感.國內(nèi)方面,2016年,唐勇等人[6]提出一種多形態(tài)布料與物體實(shí)時(shí)碰撞與檢測的方法,成功處理了布料與物體之間的碰撞問題.同年,Bi W 等人[7]研究了人體視覺對不同屬性的布料感知的恒定常數(shù),主要分析視覺系統(tǒng)在抵消了外力的影響后,對布料屬性的感知,但對于不同屬性的布料在風(fēng)場中的模擬缺乏真實(shí)感.2017年,Camille Schreck等人[8]提出了一種交互式建模背景下的撕紙方法,通過幾何信息來自動(dòng)檢測撕裂路徑上潛在的撕裂點(diǎn),但是只能用于模擬低分辨率網(wǎng)格的紙片,不能有效地處理高分辨率的網(wǎng)格.同一年,Vassilev T I[9]改進(jìn)質(zhì)點(diǎn)彈簧模型,并將其運(yùn)用在虛擬人體穿衣的系統(tǒng)中.2018年,Li J等人[10]提出一種用于自適應(yīng)布料模擬摩擦、碰撞的解算器,應(yīng)用于虛擬人體穿衣.2018年,Oh Y J等人[11]將層次模擬與深度神經(jīng)網(wǎng)絡(luò)相結(jié)合來模擬布料的摩擦、碰撞,計(jì)算布料碰撞的同時(shí)降低了時(shí)間成本,但未考慮底層網(wǎng)格對頂層網(wǎng)格質(zhì)點(diǎn)的自適應(yīng)變化.所以目前的層次模型不適合布料撕裂的模擬.

綜上,布料撕裂模擬時(shí),通過預(yù)先規(guī)定撕裂軌跡的模型其適應(yīng)性較差,高分辨率網(wǎng)格計(jì)算消耗過大,實(shí)時(shí)性較差.本文通過使用基于位置動(dòng)理學(xué)方法并引入撕裂率,以幾何方法計(jì)算破損點(diǎn)周圍質(zhì)點(diǎn)撕裂率,準(zhǔn)確預(yù)測下一個(gè)被撕裂質(zhì)點(diǎn)的位置,避免規(guī)定撕裂軌跡的問題;優(yōu)化Half-edge查找算法,提高布料撕裂模擬速度.

2 布料物理建模方法(基于位置動(dòng)力學(xué)建模方法)

在計(jì)算機(jī)圖形學(xué)中,尤其是在計(jì)算機(jī)游戲中,通常希望直接控制網(wǎng)格的對象或頂點(diǎn)的位置.經(jīng)典的布料建模方法有:有限元法、質(zhì)點(diǎn)彈簧模型以及基于位置動(dòng)力學(xué).有限元方法能夠精確地模擬布料運(yùn)動(dòng)效果的同時(shí),計(jì)算消耗大,遠(yuǎn)達(dá)不到實(shí)時(shí)性的要求;質(zhì)點(diǎn)彈簧模型難以權(quán)衡精度和速度的追求,不適合高分辨率的實(shí)時(shí)模擬;基于位置動(dòng)力學(xué)方法,使用各種約束方程跳過速度的計(jì)算,直接對質(zhì)點(diǎn)位置起作用,使得布料系統(tǒng)在實(shí)時(shí)交互模擬方面占有巨大優(yōu)勢.

基于位置動(dòng)力學(xué)方法的核心是布料內(nèi)部受力保持線性動(dòng)量公式(1)和角動(dòng)量守恒公式(2).

(1)

(2)

其中,mi為質(zhì)點(diǎn)的質(zhì)量,pi為單位時(shí)間內(nèi)位置的變化量,ri為質(zhì)點(diǎn)的旋轉(zhuǎn)半徑.滿足約束方程C(p+Δp)=0后,即可預(yù)測下一幀質(zhì)點(diǎn)位置的變化量△p.由泰勒展開得公式(3).

C(p+Δp)≈C(p)+pC(p)·Δp

(3)

本文引入基于位置動(dòng)力學(xué)方法跳過速度層,直接操縱質(zhì)點(diǎn)位置的變化,提升了布料模擬的速度,更適合高分辨率布料網(wǎng)格的實(shí)時(shí)模擬.在保證布料模擬實(shí)時(shí)性的同時(shí),模擬出更加逼真自然的撕裂效果.

3 布料撕裂算法

3.1 拉伸、碰撞引起的網(wǎng)格質(zhì)點(diǎn)分裂模型

布料模擬中,其撕裂現(xiàn)象與摩擦、碰撞的區(qū)別在于布料網(wǎng)格的改變.當(dāng)網(wǎng)格邊受力超過指定的閾值時(shí),選擇分裂其相鄰的兩個(gè)質(zhì)點(diǎn),如果兩個(gè)質(zhì)點(diǎn)都可以被分裂,那么選擇分裂質(zhì)量高的質(zhì)點(diǎn),完成布料網(wǎng)格撕裂效果.而拉伸與碰撞由于受力方向不同,對于網(wǎng)格質(zhì)點(diǎn)分裂也有區(qū)別.

如圖1所示,在布料受到拉伸力引起的布料撕裂時(shí),拉伸力與布料的處于同一平面上.在分裂質(zhì)點(diǎn)確定之后,分裂出一個(gè)質(zhì)點(diǎn)便可以達(dá)到布料撕裂的效果.

如圖2所示,當(dāng)布料與物體碰撞時(shí),受力與布料處于不同的平面.在分裂質(zhì)點(diǎn)確定之后,質(zhì)點(diǎn)共享的面片數(shù)量確定需要分裂的質(zhì)點(diǎn)數(shù)量.

3.2 破損點(diǎn)周圍的撕裂

初次撕裂中網(wǎng)格質(zhì)點(diǎn)分裂后,被分裂與分裂出的質(zhì)點(diǎn)被稱為破損點(diǎn).張力持續(xù)在破損點(diǎn)附近增加時(shí),撕裂傾向于繼續(xù)擴(kuò)大已撕裂的部分.破損點(diǎn)周圍的質(zhì)點(diǎn)在撕裂過程中受到影響,抗撕裂值降低.

圖1 拉伸引起的網(wǎng)格撕裂Fig.1 Mesh tear caused by stretching

預(yù)先規(guī)定撕裂軌跡的原因是不能有效預(yù)測下一個(gè)撕裂質(zhì)點(diǎn)的位置.本文通過計(jì)算破損部位周圍質(zhì)點(diǎn)撕裂率(tearValue),預(yù)測下一個(gè)最可能被撕裂質(zhì)點(diǎn)位置.其原理是找到與力垂直方向角度相近邊,這條邊是力的主要對抗邊.本文將力方向的垂直軸近似為撕裂線p2-p1,然后根據(jù)點(diǎn)積計(jì)算相鄰粒子被撕裂的概率,如公式(4)中所示.

(4)

其中p1和p2是撕裂邊緣矢量的兩個(gè)頂點(diǎn),p1是當(dāng)前步驟的撕裂點(diǎn),vicinity是p1周圍的質(zhì)點(diǎn),(vicinity-p1)是可用的下一個(gè)撕裂邊緣矢量.在撕裂過程中,下一個(gè)邊與撕裂邊緣之間的角度越大,其撕裂發(fā)生概率隨tearValue線性增加.確定質(zhì)點(diǎn)tearValue最大值之后,修改該質(zhì)點(diǎn)的抗撕裂值(tearRes),方法如公式(5)中所示:

tearRes*=1-tearDeb

(5)

圖2 碰撞引起的網(wǎng)格撕裂Fig.2 Mesh tear caused by collision

3.3 布料撕裂查找算法

本文通過引入Half-edge數(shù)據(jù)結(jié)構(gòu)查找算法,為網(wǎng)格面片提供快速鄰接查詢,解決布料撕裂模擬中計(jì)算消耗大的問題,提升布料撕裂模擬速度.如圖3所示為Half-edge結(jié)構(gòu)圖.

邊e由e1和e2組成,每個(gè)邊(He_edge)的結(jié)構(gòu)體中包括相應(yīng)的邊和下一條邊以及半邊所在的三角面.Half-edge數(shù)據(jù)結(jié)構(gòu)包括He_vert、He_edge以及He_face三種結(jié)構(gòu)體.

實(shí)驗(yàn)數(shù)據(jù)表明:Half-edge數(shù)據(jù)結(jié)構(gòu)的表示方法形成的結(jié)構(gòu)體數(shù)量過多會(huì)增加計(jì)算開支.本文對Half-edge數(shù)據(jù)結(jié)構(gòu)進(jìn)行優(yōu)化:將Half-edge數(shù)據(jù)結(jié)構(gòu)中He_edge、He_face的結(jié)構(gòu)體抽取融合,來減少運(yùn)算中生成的結(jié)構(gòu)體.本文將融合后的數(shù)據(jù)結(jié)構(gòu)定義為ModEdge,如表1所示.

ModEdge數(shù)據(jù)結(jié)構(gòu)抽取出了Half-edge半邊數(shù)據(jù)結(jié)構(gòu)的主要信息,減少布料模擬過程中生成結(jié)構(gòu)體的數(shù)量,達(dá)到提升布料的撕裂模擬運(yùn)算速度的目的.

圖3 Half-edge結(jié)構(gòu)圖Fig.3 Half-edge Structure diagram

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

本文在Windows 10操作系統(tǒng),Unity3D上使用C#實(shí)現(xiàn)了本文所述的算法,硬件系統(tǒng):Intel(R)Core(TM)i7 CPU 4790 3.60GHz,8G RAM和NVIDIA Geforce GTX1060.本文已經(jīng)進(jìn)行了各種實(shí)驗(yàn)來分析所提出方法的性能.

表1 ModEdge 數(shù)據(jù)結(jié)構(gòu)
Table 1 ModEdge deta structure

ModEdge數(shù)據(jù)結(jié)構(gòu)structModEdge{intp1;inttriangleId1;intp2;inttriangleId2;intid;booltear;intpair;floatrest_length;}

表2以評估分裂頂點(diǎn)程序的性能記錄了本文方法與文獻(xiàn)[5]中拉伸造成的撕裂模擬實(shí)驗(yàn)數(shù)據(jù)對比,數(shù)據(jù)表明:當(dāng)分辨率提高后,本文的方法在平均時(shí)間消耗上更少,在100*100的網(wǎng)格模擬中,減少一半的時(shí)間消耗.

表2 性能測試對比
Table 2 Performance test comparison

三角面數(shù)量方法 平均時(shí)間(ms)20?2040?4060?6080?80100?100文獻(xiàn)[5]15183762本文方法1213151730

圖4中,a1…a5是文獻(xiàn)[5]的實(shí)驗(yàn)效果,b1…b5是本文的實(shí)驗(yàn)效果.由布料褶皺的多少可以看出,本文實(shí)驗(yàn)所用的布料分辨率更高,撕裂效果更逼真自然.

圖5中網(wǎng)格質(zhì)點(diǎn)數(shù)為2540,實(shí)驗(yàn)?zāi)M拉伸力造成布料的撕裂效果.固定布料的兩邊,并拉動(dòng)布料的左側(cè).布料在極短的時(shí)間內(nèi)破裂,并發(fā)生回彈的現(xiàn)象.使用改進(jìn)的布料撕裂的算法,能夠?qū)崟r(shí)模擬逼真的撕裂效果.

通過以上實(shí)驗(yàn)可以看出:本文方法使用高分辨率網(wǎng)格模擬布料由于拉伸引起的撕裂,且能滿足實(shí)時(shí)性的需求.

圖6(a)是文獻(xiàn)[11]布料在風(fēng)場中受風(fēng)力影響抖動(dòng)的模擬,圖6(b)是本文模擬風(fēng)場中布料的撕裂過程.因?yàn)椴剂显陲L(fēng)場中受到的風(fēng)力始終在風(fēng)向的小幅度內(nèi)變動(dòng),所以布料在風(fēng)場中受到垂直風(fēng)場方向的切割,引發(fā)布料撕裂的現(xiàn)象.圖6(a)文獻(xiàn)[11]中布料褶皺的模擬僵硬、不自然;圖6(b)為本文方法,使用3600個(gè)質(zhì)點(diǎn)模擬了布料抖動(dòng)現(xiàn)象的同時(shí),加入撕裂效果.

圖4 布料拉伸的撕裂Fig.4 Cloth stretch tear

圖5 雙邊固定布料拉伸的撕裂Fig.5 Bilateral fixed fabric stretch tear

圖7是模擬剛體與布料的交互效果,圖7(a)模擬單個(gè)球體與布料的碰撞.圖7(b)展示兩個(gè)鄰近的球體與布料的碰撞,模擬出兩個(gè)球體碰撞生成一個(gè)撕裂軌跡的效果.圖7(c)模擬不同位置、不同碰撞時(shí)間造成的撕裂效果.多組實(shí)驗(yàn)數(shù)據(jù)表明:本文方法在受到風(fēng)場切割以及剛體碰撞的條件下,都能生成自然的布料撕裂效果.

圖6 風(fēng)場中布料的撕裂Fig.6 Tearing in the wind field

由以上實(shí)驗(yàn)數(shù)據(jù)可以看出,在布料拉伸、碰撞情境下,能夠?qū)崟r(shí)模擬出逼真、自然的撕裂軌跡.

5 結(jié) 語

本文通過優(yōu)化Half-edge數(shù)據(jù)結(jié)構(gòu)查找算法,并計(jì)算破損點(diǎn)周圍質(zhì)點(diǎn)的撕裂率值,成功完成拉伸、碰撞下布料撕裂的實(shí)時(shí)模擬.基于位置動(dòng)力學(xué)方法規(guī)避了速度層的計(jì)算,直接控制布料質(zhì)點(diǎn)的位置,大大縮減了布料質(zhì)點(diǎn)和場景的交互時(shí)間,提高了布料模擬計(jì)算速度;利用幾何法預(yù)測破損點(diǎn)周圍最可能被撕裂的頂點(diǎn),成功解決了撕裂軌跡不真實(shí)、需要提前規(guī)定撕裂軌跡的問題;考慮到布料撕裂模擬過程中,質(zhì)點(diǎn)查找算法的重要性,在Half-edge的基本思想下,融合邊、面結(jié)構(gòu)體,減少撕裂模擬過程中生成的結(jié)構(gòu)體數(shù)量,提升撕裂模擬速度.今后的研究中,我們將繼續(xù)探索撕裂過程中不同屬性布料的撕裂效果,進(jìn)一步增加布料撕裂模擬的真實(shí)性.

圖7 碰撞下的布料撕裂模擬Fig.7 Fabric tearing simulation under collision

猜你喜歡
質(zhì)點(diǎn)數(shù)據(jù)結(jié)構(gòu)風(fēng)場
基于FLUENT的下?lián)舯┝魅S風(fēng)場建模
巧用“搬運(yùn)法”解決連續(xù)質(zhì)點(diǎn)模型的做功問題
“最美風(fēng)場”的贏利法則
能源(2017年8期)2017-10-18 00:47:39
質(zhì)點(diǎn)的直線運(yùn)動(dòng)
質(zhì)點(diǎn)的直線運(yùn)動(dòng)
“翻轉(zhuǎn)課堂”教學(xué)模式的探討——以《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)為例
高職高專數(shù)據(jù)結(jié)構(gòu)教學(xué)改革探討
中國市場(2016年45期)2016-05-17 05:15:48
側(cè)向風(fēng)場中無人機(jī)的飛行研究
TRIZ理論在“數(shù)據(jù)結(jié)構(gòu)”多媒體教學(xué)中的應(yīng)用
《數(shù)據(jù)結(jié)構(gòu)》教學(xué)方法創(chuàng)新探討
河南科技(2014年5期)2014-02-27 14:08:57
瓦房店市| 阿瓦提县| 英德市| 来宾市| 舟山市| 双牌县| 奈曼旗| 清河县| 新乡县| 湘西| 青田县| 嵩明县| 滨海县| 金塔县| 芮城县| 当雄县| 中西区| 鄄城县| 大邑县| 黄陵县| 北京市| 大同县| 开封市| 锡林浩特市| 永丰县| 舞阳县| 德兴市| 巨鹿县| 丹棱县| 石台县| 镇原县| 丰城市| 千阳县| 苍南县| 萨迦县| 新民市| 广宁县| 塘沽区| 科尔| 青海省| 新巴尔虎右旗|