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

?

基于質(zhì)點(diǎn)彈簧模型的實(shí)時(shí)布料模擬

2018-04-26 01:47:06余方姝楊欣
現(xiàn)代計(jì)算機(jī) 2018年5期
關(guān)鍵詞:質(zhì)點(diǎn)布料彈簧

余方姝,楊欣

(1.四川大學(xué)視覺(jué)合成圖形圖像技術(shù)國(guó)防重點(diǎn)學(xué)科實(shí)驗(yàn)室,成都 610065;2.四川大學(xué)計(jì)算機(jī)學(xué)院,成都 610065)

0 引言

在虛擬現(xiàn)實(shí)技術(shù)日益發(fā)展的過(guò)程中,布料模擬已逐漸成為一個(gè)研究熱點(diǎn),模擬出的布料在電子游戲、影視動(dòng)漫、服裝設(shè)計(jì)等各方面展現(xiàn)了越來(lái)越多的應(yīng)用[1]。布料是日常生活中隨處可見(jiàn)的物品,它具有高度的形變特性、延展性、整體性,且具備分布均勻的質(zhì)量。如何在計(jì)算機(jī)中正確模擬出布料的這些物理特性,一直以來(lái)都是科學(xué)家們研究的重點(diǎn)。本文將布料模擬過(guò)程分成建模和計(jì)算兩個(gè)方面來(lái)介紹。

1 布料建模

目前,常用的布料模型構(gòu)造方法有以下幾種:

基于幾何的建模方法:幾何方法不考慮布料根據(jù)動(dòng)力學(xué)表現(xiàn)的運(yùn)動(dòng)特性,采用幾何方程來(lái)表現(xiàn)布料褶皺、折疊等幾何效果。該方法計(jì)算開(kāi)銷小,但無(wú)法反映布料彈性,不夠逼真。

基于物理的建模方法:根據(jù)布料的物理規(guī)律,使用質(zhì)點(diǎn)來(lái)對(duì)布料進(jìn)行模擬,將布料的質(zhì)量分散到質(zhì)點(diǎn)上,同時(shí),使用質(zhì)點(diǎn)間的相互作用來(lái)模擬布料的物理性質(zhì),有粒子系統(tǒng)和彈簧質(zhì)點(diǎn)模型等方法。

基于混合特性的建模方法:這種方法結(jié)合了將幾何建模和物理建模結(jié)合,使用幾何方法模擬布料輪廓,然后用物理方法模擬細(xì)節(jié),產(chǎn)生快速而精確的效果,但在真實(shí)性上還是低于物理方法。

綜合效率和真實(shí)性的考慮,本文采用彈簧質(zhì)點(diǎn)模型進(jìn)行建模。

1.1 彈簧質(zhì)點(diǎn)模型

1995年X Provot建立了經(jīng)典的彈簧質(zhì)點(diǎn)模型[2]。模型將一塊布料劃分成m×n的均勻矩形網(wǎng)格,如圖1所示。每個(gè)網(wǎng)格頂點(diǎn)都是一個(gè)虛擬質(zhì)點(diǎn),質(zhì)點(diǎn)有相同質(zhì)量,用來(lái)模擬質(zhì)量均勻的布料。每個(gè)質(zhì)點(diǎn)與其周圍質(zhì)點(diǎn)通過(guò)無(wú)質(zhì)量彈簧相連接。一共有三種性質(zhì)的彈簧:

連接左右相鄰 [i,j]與[i+1,j]、上下相鄰[i,j]與[i,j+1]的彈簧叫結(jié)構(gòu)彈簧,用來(lái)模擬布料橫縱向的力,阻止布料在這兩個(gè)方向過(guò)度拉伸形變。

連接對(duì)角線方向[i,j]與[i+1,j+1]的彈簧叫剪切彈簧,用來(lái)模擬布料內(nèi)傾斜方向的力,阻止布料斜方向的過(guò)度形變,模擬布料的延展性。

連接水平豎直方向間隔[i,j]和[i+2,j]、[i,j]和[i,j+2]質(zhì)點(diǎn)的彈簧叫彎曲彈簧,用來(lái)模擬布料在被彎曲和折疊時(shí),抵抗彎曲的力。

圖1 彈簧質(zhì)點(diǎn)模型

1.2 彈簧質(zhì)點(diǎn)模型受力分析

在彈簧質(zhì)點(diǎn)模型中,任意質(zhì)點(diǎn)[I,j]在t時(shí)刻的位置是Pi,j(t),力學(xué)方程由其在當(dāng)前位置受到的合力Fi,j(t)決定。根據(jù)牛頓第二定律:

其中,m(Pi,j)表示當(dāng)前質(zhì)點(diǎn)的質(zhì)量,a(Pi,j)表示當(dāng)前質(zhì)點(diǎn)在t時(shí)刻的加速度。而質(zhì)點(diǎn)所受到的合力Fi,j()t是由質(zhì)點(diǎn)受到的彈簧質(zhì)點(diǎn)模型內(nèi)部的力和外部作用力組成的:

其中內(nèi)力FInternal是其內(nèi)部的三種彈簧產(chǎn)生。根據(jù)胡克定律,在非過(guò)度拉伸情況下彈簧的應(yīng)力和其形變呈線性關(guān)系,公式如下:

其中Fn表示當(dāng)前彈簧產(chǎn)生的力,k是彈簧的勁度系數(shù),是一個(gè)常數(shù),與彈簧的材質(zhì)相關(guān)。X代表彈簧發(fā)生形變的長(zhǎng)度,即形變后的長(zhǎng)度減去原長(zhǎng)。由此可知,質(zhì)點(diǎn)[I,j]受到的內(nèi)力就是連接它的彈簧產(chǎn)生的彈力的合力:

同時(shí),質(zhì)點(diǎn)還會(huì)受到外部的作用力,如重力、空氣阻力等:

其中,重力 Fgravity=m(Pi,j)g,阻力 Fair=-Kavi,j,Ka為空氣阻力系數(shù),vi,j為質(zhì)點(diǎn)速度矢量。

在對(duì)質(zhì)點(diǎn)進(jìn)行受力分析后,就進(jìn)入對(duì)布料力學(xué)運(yùn)動(dòng)方程的計(jì)算了。

2 積分方程

2.1 傳統(tǒng)積分方程簡(jiǎn)介

顯式歐拉積分是最容易實(shí)現(xiàn)數(shù)值積分的方法之一。假設(shè)不了模型中可劃分成m個(gè)質(zhì)點(diǎn),時(shí)間步長(zhǎng)為h,質(zhì)點(diǎn)的質(zhì)量用對(duì)角矩陣M∈R3m×3m表示,質(zhì)點(diǎn)位置用q表示。任選一個(gè)質(zhì)點(diǎn),在tn時(shí)刻其所在的位置為qn,則 f(qn)為質(zhì)點(diǎn)在tn時(shí)刻受到的力,vn為質(zhì)點(diǎn)在tn時(shí)刻的速度,那么使用顯式積分求解下一刻tn+1的運(yùn)動(dòng)可表示為:

顯式積分計(jì)算簡(jiǎn)單,但用tn時(shí)刻的速度計(jì)算tn+1時(shí)刻的位置帶來(lái)一定的誤差,影響其準(zhǔn)確度。

隱式歐拉積分是計(jì)算布料運(yùn)動(dòng)常用的積分,可用公式表示為:

由(8)和(9)兩個(gè)公式可得:

上式中qn和qn-1是已知量,而此時(shí)要qn+1的值,就需要求解 fn+1的值。

為了求解這個(gè)經(jīng)典的非線性方程,我們根據(jù)Baraff和Witkin在1998年提出的線性化力的方法[3]:

假設(shè)用x表示qn+1,然后用y表示2qn-qn-1,x是未知量,而y是已知量,可構(gòu)建出臨界式:

此時(shí),方程轉(zhuǎn)換成求g(x)最小值的問(wèn)題。該方法是由Martin在2011年提出的變分法隱式歐拉積分[4]。

2.2 本文方法

本文主要思想是使用塊坐標(biāo)下降法通過(guò)重新整理模型的能量E來(lái)計(jì)算其力學(xué)方程。在布料模擬中,大部分的能量來(lái)源于彈性勢(shì)能,其公式為:

其中,x代表彈簧變化的長(zhǎng)度。此時(shí),對(duì)布料模型而言,其單個(gè)彈簧的彈性勢(shì)能可表示為:

pi和 pj代表彈簧兩端的質(zhì)點(diǎn),l是彈簧的原長(zhǎng)。

然后令l=|d|,則:

則,解彈性勢(shì)能方程轉(zhuǎn)變成最小化問(wèn)題:

考慮到場(chǎng)景中有多個(gè)彈簧,而彈簧和質(zhì)點(diǎn)在實(shí)現(xiàn)過(guò)程中,會(huì)采用矩陣表示整個(gè)數(shù)據(jù),我們將能量方程更新為矩陣形式:

其中,s是彈簧的總數(shù),pi1和pi2代表當(dāng)前第i根彈簧兩端的質(zhì)點(diǎn),x是包含全部質(zhì)點(diǎn)的向量,L和J分別代表:

其中,Ai是彈簧i的入射向量,Ai,i1=1,Ai,i2=-1,其他值為0;Si代表第i個(gè)彈簧;I是單位矩陣。

然后將其帶入公式(12),可以將上式轉(zhuǎn)換成最優(yōu)化問(wèn)題:

其中,b是一個(gè)向量,表示外部力合力產(chǎn)生的慣性,是一個(gè)常量。將上式收斂到最小值所得到的x即時(shí)隱式歐拉積分的解。

解最小化方程使用的方法是塊坐標(biāo)下降法:首先用預(yù)估位置初始化x的值,然后使用當(dāng)前x的值計(jì)算d,第二步固定d的值,使用計(jì)算出的d值計(jì)算x,重復(fù)該步驟直到達(dá)到最大迭代次數(shù),就能得到下一步質(zhì)點(diǎn)的位置。

此外,為了對(duì)算法進(jìn)行加速,采用了預(yù)計(jì)算方法處理算式中與過(guò)程無(wú)關(guān)的量。算式中M+h2L使用質(zhì)量矩陣,時(shí)間步長(zhǎng),彈簧勁度系數(shù)矩陣計(jì)算,而這些值都是固定的,同樣J的計(jì)算也是固定的,這樣就可以在初始化階段計(jì)算出兩組數(shù)據(jù)的值,避免在迭代過(guò)程中加入大量的矩陣運(yùn)算,減少計(jì)算開(kāi)銷。

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

實(shí)驗(yàn)?zāi)M了固定四角平行放置的矩形布料在被放開(kāi)右側(cè)兩角后,在空中飄動(dòng),然后在空氣阻力作用下恢復(fù)靜止?fàn)顟B(tài)的效果。如圖2,展示了布料物理規(guī)律下的運(yùn)動(dòng)過(guò)程,布料在被解開(kāi)兩角后,自然墜落,左右飄動(dòng),效果真實(shí)。圖3展示了布料模擬的細(xì)節(jié),圖中可以清晰看到布料產(chǎn)生的褶皺和彎曲現(xiàn)象,與真實(shí)布料效果相似。在滿足真實(shí)感的同時(shí),布料的幀率為300-400幀,此時(shí)模型的三角面片為1k能達(dá)到能夠達(dá)到實(shí)時(shí)渲染效果。當(dāng)布料三面片個(gè)數(shù)達(dá)到10k時(shí),如圖4所示,布料細(xì)節(jié)更明顯,更具真實(shí)感的同時(shí),幀率同樣達(dá)到實(shí)時(shí)渲染要求。

圖2 布料運(yùn)動(dòng)過(guò)程

圖3 布料模擬細(xì)節(jié)及幀率

圖4 布料模擬細(xì)節(jié)(三角面片數(shù)10k)

4 結(jié)語(yǔ)

本文的布料模擬方法采用預(yù)計(jì)算處理彈簧質(zhì)點(diǎn)模型數(shù)據(jù),使用塊坐標(biāo)下降法計(jì)算隱式積分,對(duì)彈簧質(zhì)點(diǎn)模型位置進(jìn)行預(yù)測(cè),在兼顧真實(shí)感的同時(shí),對(duì)繪制效率也有較好的提升,能夠被運(yùn)用于電子游戲、影動(dòng)畫(huà)產(chǎn)業(yè)中。但同時(shí),本文未對(duì)布料碰撞進(jìn)行研究,包括布料自碰撞和布料和物體間的碰撞進(jìn)行研究,包括布料自碰撞和布料和物體間的碰撞,需要在接下來(lái)的工作中進(jìn)行研究和完善。

參考文獻(xiàn):

[1]陳輝,沈毅.關(guān)于織物仿真技術(shù)的綜述[J].絲綢,2005(8).

[2]Xavier Provot.Deformation Constraints in a Mass-Spring Model to Describe Rigid Clothbehavior[C].In Proceedings of Graphics Interface,Quebec:Canadian Information Processing Society,1995,12(6):147-154.

[3]D Baraff,A Witkin.Large Steps in Cloth Simulation[J].Conference on Computer Graphics&Interactive Techniques,1998:43-54.

[4]S Martin,B Thomaszewski,E Grinspun,M Gross.Example-Based Elastic Materials[J].In Acm Siggraph,2011,30(4):1-8.

猜你喜歡
質(zhì)點(diǎn)布料彈簧
用布料拼圖形
巧用“搬運(yùn)法”解決連續(xù)質(zhì)點(diǎn)模型的做功問(wèn)題
析彈簧模型 悟三個(gè)性質(zhì)
燒結(jié)機(jī)布料器的改進(jìn)優(yōu)化
山東冶金(2019年5期)2019-11-16 09:09:36
如何求串聯(lián)彈簧和并聯(lián)彈簧的勁度系數(shù)
質(zhì)點(diǎn)的直線運(yùn)動(dòng)
質(zhì)點(diǎn)的直線運(yùn)動(dòng)
時(shí)間彈簧
按約定付賬
愛(ài)你(2015年2期)2015-11-14 22:43:29
高爐重量布料準(zhǔn)確度的提高
天津冶金(2014年4期)2014-02-28 16:52:58
日照市| 夏邑县| 苏州市| 永善县| 中江县| 安仁县| 建阳市| 庄河市| 东乡| 邵东县| 黑河市| 囊谦县| 丰都县| 庆元县| 堆龙德庆县| 沁阳市| 林芝县| 泾阳县| 娱乐| 慈溪市| 漳平市| 江北区| 大港区| 辛集市| 屯留县| 安达市| 林甸县| 曲阜市| 拉萨市| 延长县| 公安县| 高阳县| 日喀则市| 确山县| 沈阳市| 晋中市| 习水县| 卓资县| 屏南县| 岳池县| 稻城县|