• 
    

    
    

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

      ?

      拉伸、碰撞情景下布料撕裂的實(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ǎ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ì)算代價太大.2009年,Metaaphanon N 等人[4]使用標(biāo)準(zhǔn)連續(xù)表單模型和紗線級模型,模擬出逼真的布料撕裂邊緣的磨損效果.正是因?yàn)閮蓪幽P偷氖褂?實(shí)驗(yàn)?zāi)M速度達(dá)不到實(shí)時.2014年,Souza M S等人[5]提出一種使用Half-edge結(jié)構(gòu)的查找方法解決布料的撕裂模擬,提高了計(jì)算速度,但是降低了真實(shí)感.國內(nèi)方面,2016年,唐勇等人[6]提出一種多形態(tài)布料與物體實(shí)時碰撞與檢測的方法,成功處理了布料與物體之間的碰撞問題.同年,Bi W 等人[7]研究了人體視覺對不同屬性的布料感知的恒定常數(shù),主要分析視覺系統(tǒng)在抵消了外力的影響后,對布料屬性的感知,但對于不同屬性的布料在風(fēng)場中的模擬缺乏真實(shí)感.2017年,Camille Schreck等人[8]提出了一種交互式建模背景下的撕紙方法,通過幾何信息來自動檢測撕裂路徑上潛在的撕裂點(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ì)算布料碰撞的同時降低了時間成本,但未考慮底層網(wǎng)格對頂層網(wǎng)格質(zhì)點(diǎn)的自適應(yīng)變化.所以目前的層次模型不適合布料撕裂的模擬.

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

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

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

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

      (1)

      (2)

      其中,mi為質(zhì)點(diǎn)的質(zhì)量,pi為單位時間內(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)

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

      3 布料撕裂算法

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

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

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

      如圖2所示,當(dāng)布料與物體碰撞時,受力與布料處于不同的平面.在分裂質(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)附近增加時,撕裂傾向于繼續(xù)擴(kuò)大已撕裂的部分.破損點(diǎn)周圍的質(zhì)點(diǎn)在撕裂過程中受到影響,抗撕裂值降低.

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

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

      (4)

      其中p1和p2是撕裂邊緣矢量的兩個頂點(diǎn),p1是當(dāng)前步驟的撕裂點(diǎn),vicinity是p1周圍的質(zhì)點(diǎn),(vicinity-p1)是可用的下一個撕裂邊緣矢量.在撕裂過程中,下一個邊與撕裂邊緣之間的角度越大,其撕裂發(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組成,每個邊(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ù)量過多會增加計(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)分辨率提高后,本文的方法在平均時間消耗上更少,在100*100的網(wǎng)格模擬中,減少一半的時間消耗.

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

      三角面數(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拉伸力造成布料的撕裂效果.固定布料的兩邊,并拉動布料的左側(cè).布料在極短的時間內(nèi)破裂,并發(fā)生回彈的現(xiàn)象.使用改進(jìn)的布料撕裂的算法,能夠?qū)崟r模擬逼真的撕裂效果.

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

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

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

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

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

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

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

      5 結(jié) 語

      本文通過優(yōu)化Half-edge數(shù)據(jù)結(jié)構(gòu)查找算法,并計(jì)算破損點(diǎn)周圍質(zhì)點(diǎn)的撕裂率值,成功完成拉伸、碰撞下布料撕裂的實(shí)時模擬.基于位置動力學(xué)方法規(guī)避了速度層的計(jì)算,直接控制布料質(zhì)點(diǎn)的位置,大大縮減了布料質(zhì)點(diǎn)和場景的交互時間,提高了布料模擬計(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)動
      質(zhì)點(diǎn)的直線運(yùn)動
      “翻轉(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
      岗巴县| 蚌埠市| 潜江市| 萨嘎县| 荃湾区| 佳木斯市| 郁南县| 棋牌| 明星| 大名县| 龙江县| 浦城县| 天峨县| 廉江市| 奉节县| 保亭| 巍山| 皋兰县| 运城市| 蒙阴县| 海盐县| 丹阳市| 崇礼县| 莫力| 左贡县| 禄丰县| 尼玛县| 岳普湖县| 尼木县| 沐川县| 天峨县| 平罗县| 蒲江县| 武穴市| 徐汇区| 错那县| 阳东县| 新巴尔虎右旗| 平谷区| 中牟县| 新河县|