基於物理模型的窗簾運動實時動畫

2022-10-18 09:36:04 字數 5096 閱讀 8380

成遲薏1 石教英1 徐迎慶2 沈向洋2

1 浙江大學cad&cg實驗室杭州 310027

2 微軟中國研究院北京 100080

email:

摘要:本文提出了一種基於物理模型的實時動態模擬窗簾運動的方法。在以往的研究中,人們提出了許多模擬織物運動的方法,這些方法的乙個主要缺點是複雜度高、計算效率低,無法滿**互設計和實時動畫的要求。

本文提出的方法根據織物的物理特性,採用半剛性樣條結構,將經線和緯線方向的約束分開處理,大量簡化了計算,可以實時地模擬織物的運動。

關鍵詞:基於物理的建模,窗簾,動畫,虛擬實境,碰撞檢測,半剛體

在人們的生活中,織物無處不在,時時可見。如何在計算機上有效和逼真地模擬織物的運動一直是計算機圖形學研究中的乙個具有挑戰性的課題。此外,日益發展的計算機輔助設計及電子商務系統也要求快速、逼真的織物模擬演算法,以幫助設計師使用計算機來高效地設計和生產,並把這些產品放到internet上,使網上選購織物真正成為可能[1]。

傳統cad系統採用剛性模型,能精確模擬機械零件的運動,剛性物體的模擬技術已經非常成熟。但這種剛性模型對織物並不合適。作為一種柔性體,在外力作用下,織物會產生很大的形變,不同材料、不同製造方法,乃至不同裁減、不同縫製的衣料的形變各不相同。

科學家和研究人員做了大量的實驗和研究,獲得了織物在外力作用下形變的精確物理引數,並試圖開發了一些模型描述這些形變,但由於織物的內在特性,這些模型並未得到廣泛應用,主要的困難在於:1 織物本身的物理機械效能是非常複雜的。其材料的多樣性、結構的複雜性、形狀的不規則性、以及個性化產品所產生的密度分布不均勻性等,都給織物的動態模擬帶來很大的困難;2 雖然大量的實驗給出了精確的織物形變引數,但不同方向,不同性質的力涉及不同的形變規則,如何對這些引數進行總結分類,採用一簡化模型概括所有的形變規則,是乙個難點。

現有的模型大都比較複雜,即便是在高效能的工作站上,計算一幀圖象也需要數秒乃至數天時間,這顯然無法滿足實時繪製的需要;3 碰撞檢測是動畫中的經典問題。在織物模擬中,織物一般表示為一張網格曲面,由於它是乙個柔性體,曲面的不同部分具有不同的運動,彼此沒有嚴格的約束,因此除了檢測織物與周圍物體的相交外,還必須檢測織物不同部分之間的相交,即自碰撞問題。碰撞檢測和自碰撞檢測必須進行大量的幾何運算,成為系統的瓶頸之一。

由於以上原因,雖然研究人員在這方面開展了很多任務作,但至今使用計算機對織物進行模擬的技術仍未獲得廣泛應用。weil[2]最早採用余弦曲線及其幾何變換模擬懸垂織物。之後,hinds et al.

[3,4],ng et al.[5]採用純幾何變換模擬特殊情況下織物的變形。hadap et al.

[6]採用紋理與幾何相結合的方法模擬衣服上的褶皺。

純幾何方法需要使用者的干預,並僅能適用一些特殊情況,因此大多織物模擬系統都是基於物理的建模,或將物理建模與幾何方法結合起來。基於物理的建模通過引入質量、力、能量等物理量,將織物各個部分的運動,看成各種力的作用下質點運動的結果。terzopoulos et al.

[7,8]把柔性物體的變形,描述成柔性物體內部組織抵抗形變產生的彈性力、外界作用力和阻尼力共同作用的結果,為柔性物體提出了彈性形變模型,建立了物理基礎。terzopoulos之後,很多任務作都集中在織物的彈性形變模型上[9,10,11],這些方法最終都可以歸結為質點-彈簧模型。thalmann領導的miralab也發展了彈性形變模型,用於虛擬演員的服裝模擬和3d時裝輔助設計[12,13,14],並且他們對布的碰撞檢測及其優化[15,16,17]進行了討論。

breen. et al.研究了不同織物的力學特性[18],提出了織物模擬中質點系統的概念。

質點系統中,用由彈簧相互連線的一組質點來描述織物的狀態,通過優化系統能量最小求解各個質點的位置[19]。

以上基於物理模型的織物模擬,儘管其表達方式、求解辦法有所不同,但都可歸結為:根據牛頓運動定律,給出質點間彈簧形變關係(可以用力的形式表示,也可以用能量表示),得到一偏微分方程(組),最終用數值方法求解該方程(組)。在經典的質點-彈簧模型中,一般每個質點都和其鄰域中的至少8個鄰點用彈簧相連,由此獲得的偏微分方程非常複雜,採用經典的尤拉方法、龍格-庫塔或共軛梯度法求解,需要迭代多次才能收斂到平衡狀態。

baraff et al.[20,21]對方程的求解方法進行了研究,採用隱式迭代,可以把每次迭代的步長拉大,從而減少迭代次數。使用隱式迭代法,在sgi octance r10000 195mhz的處理器上平均需要10秒的時間處理一幀由4530個質點組成的布的動畫(除去記憶體分配、繪製等各種系統開銷)。

隱式迭代法是織物模擬技術的突破,但它仍然無法滿足實時動畫的要求。怎樣才能進一步減少計算時間呢?針對上述問題,我們提出了一種可以有效和逼真地模擬織物運動的物理模型,將織物的經線和緯線方向的形變分離,分別採用半剛性樣條模擬經線和緯線方向的形變。

半剛性樣條兼有剛性和彈性的特點,繼承了剛性模型計算簡單的優點,又能符合織物柔性形變的特性。我們的模型得到的方程形式簡單,不需要任何迭代就可以數值求解,大大減少了計算開銷,達到近實時效果,而且繪製結果表明,其視覺效果是非常逼真的。

本文第二節簡要介紹我們窗簾模擬系統的結構,並引入一些基本概念;第三節在描述半剛性結構的特點的基礎上,提出統一的受力模型;第四節中介紹如何把經線和緯線方向的約束分開並分別處理;第五節提出了一種快速的碰撞檢測演算法;最後給出實驗結果分析及結論。

2.1 基本概念

為描述簡單,首先引入一些基本概念:

根據經線緯線結構,我們將窗簾表面分成矩形網格,每個網格點稱為節點,相鄰節點間通過-段半剛性樣條相連(我們將在第三節中詳細介紹半剛性樣條)。第行, 列的節點表示為,它在世界座標系中的座標表示為,質量為,它受到力表示為。現實生活中一塊布平展開,不受任何外力作用時,它將構成乙個空間平面,沒有任何伸縮變形,我們稱這種自由平展的狀態為初始狀態。

在初始狀態下,每個節點都有一初始位置,以後的各種形變都可看成偏離初始位置的運動,節點的初始位置表示為。經線方向上兩相鄰節點和在初始狀態下的距離表示為:,緯線方向上兩相鄰節點和在初始狀態下的距離為:。

2.2 本文演算法的主要思想

在計算機圖形學中,生動逼真的視覺效果往往比物理精確性更吸引人。雖然微觀力學實驗表明,在外力作用下織物在其經向和緯向會有一些伸縮,但對大多數織物而言,這種伸縮人眼很難觀察到。對於窗簾這樣的懸垂織物來說,可以認為織物在經向和緯向是保長度的。

根據這個假設,我們採用了半剛性樣條模擬織物,半剛性樣條不能壓縮或者拉伸,但能夠在保證長度不變的前提下彎曲。半剛性樣條的不可伸縮的性質,符合織物保長度的物理特性,並使相鄰節點之間的相互作用關係變得簡單,從而可以將緯向和經向的約束分開處理,簡化了計算;而它的可彎曲性,能產生懸垂織物變形時特有的褶皺等效果。

2.3 模擬系統的主要結構

我們的窗簾模擬系統的主要結構為:

while (1)

在下面的幾節中我們將分別介紹這些內容。

3.1 半剛性樣條

觀察在風中飄揚的窗簾,我們發現窗簾在經線方向的運動非常類似於物理上的複雜擺。與通常意義的在重力作用下在平衡位置附近做單自由度的週期振動的單擺不同,窗簾經線方向的運動沒有固定週期,而且是多自由度的。如果我們沿窗簾經線方向將它分成若干段,當分得足夠細,每段長度足夠短時,可以認為它是剛性的,因此,每段都可看成是一根剛性杆末端連線乙個質點球的擺構成,這些擺頭尾相接,連在一起,構成了一根很長的「擺」,我們稱它為複雜擺,並把其中每一段稱為半剛性樣條。

這些半剛性樣條構成了一半剛體系統,在風、重力、阻尼力等外部力的作用下運動,從而決定了在窗簾在經線方向的形態。在緯線方向上,我們也可以採用上述半剛性樣條結構,與經線方向不同的是,窗簾經線方向(即複雜擺)的一端是固定的,而在緯線方向上兩端都是自由的。通過控制半剛性樣條的數目和長短,以及連線半剛性樣條的小球質量大小,我們可以獲得不同材質的窗簾的運動。

半剛性樣條的特點是不能壓縮或者拉伸,但能夠在保證長度不變的前提下彎曲。它與質點-彈簧模型相比,有幾個優點:1 質點-彈簧模型為產生褶皺等區域性效果,通過為每個質點建立區域性方程求解其平衡狀態,雖然能量可以通過彈簧傳遞,但總體來說,質點-彈簧模型只考慮了織物的區域性的形狀,而較少考慮織物的整體形狀;而半剛性樣條保持織物在經向和緯向上長度不變,較好保持了織物的整體特性,同時也能產生褶皺。

2 質點-彈簧系統中,在受力點處會產生很大的變形(>10%),這是不真實的,雖然可以通過增加彈簧的彈性係數解決,但這意味著解方程中迭代次數的增加和收斂減慢,而且也很難控制其伸縮度;在半剛性模型中,不會產生區域性形變過大的情況。3 質點-彈簧模型中,每個質點都和它上下左右至少8個鄰點用彈簧相連,而且根據窗簾的對拉力、剪下、彎曲等作用力的不同反應,不同的力定義了不同的形變引數,而且每種形變模型還有各自的阻尼力模型,由此得到的方程龐大難解;而半剛性模型繼承了多剛體系統的物理特性,為各種外力和內部相互作用力提供了統一的處理方案,而且便於經向和緯向的約束分開處理,由此得到的方程非常容易解,速度快。

下面我們將討論半剛性樣條上統一的受力模型。

3.2 受力模型

窗簾受到內部和外部力的作用,外部作用力包括重力、風力、空氣阻力、與外界物體相碰時的阻礙力,外界物體的支撐力等等;不同的彈性形變系統定義了不同的內部力,如拉力、剪下力、彎曲力,我們的模擬系統中將內部力和外部力統一表示。我們將分別討論內部力和外部力的處理,並特別介紹風力和阻尼力。

3.2.1 內部力

半剛性樣條在其長度方向上不能伸縮,因此兩個相臨節點間的作用力有兩種可能(見圖2):當兩個節點的運動速度相同時,半剛性樣條將產生抵抗收縮的力(圖2中,兩節點之間的相對速度與它們的相對位置間的夾角);當兩個節點的運動速度相反時,半剛性樣條將產生抵抗拉伸的力(圖2中,兩節點之間的相對速度與它們的相對位置間的夾角)。由於半剛性樣條的剛性,內部力可以簡單的分成以上兩類。

對於每個節點而言,計算它所受到的合力,根據牛頓第二運動定律,可求出每個節點的位置:

1)從而整塊窗簾的形狀和運動就確定了。

與質點-彈簧模型不同,半剛性結構產生的內部力與其長度伸縮無關,因此它們可以與外部作用力統一處理。節點所受的合力由圖3表示。其中是與其上層節點的相互作用力;是與其下層節點的相互作用力;是風力;是空氣阻尼力,它與質點速度方向相反;是節點的重力。

3.2.2 風力

空氣動力學和流體力學給出了空氣運動的流場[22,23],但計算複雜,不能滿足實時動畫要求。為此,我們定義了乙個錐形面風源,它對每個節點產生的風力由下式表示:

2)3)

其中a是延長錐形風源的邊得到的圓錐頂點, 它一般在很遠處;c是窗簾上的任意一節點,b是a c與風源面的交點;是錐形風源中心的風力;是連線風源面上b點和窗簾上c點方向風力;是連線b c的向量,即風源與節點間的距離;是代表窗簾材料的稀疏程度,是垂直作用在窗簾表面上的氣流穿過窗簾的百分比;是風源方向與每個節點法線方向的夾角(節點的法線方向定義為所有經過該節點的面的法向的平均);和分別是控制窗簾材料稀疏程度和距離對風力大小的影響的引數。

高考物理運動與平衡模型解析

高中物理課標卷考試模型解析 一 勻速直線運動模型 模型概述 勻速直線運動 兩種方法 公式法與圖象法 模型講解 重點。建構直線運動的物理模型,再現直線運動的物理情景 真題2 2006全國 天空有近似等高的濃雲層 為了測量雲層的高度,在水平地面上與觀測者的距離為d 3.0km處進行一次 觀測者聽到由空氣...

數學建模 大學生擇業模型基於matlab實現版

一 摘要 如今社會,大學畢業生選擇就業的方向有多種,並且還要考慮多種因素。我們應用層次分析法,將決策問題分為3個層次,首先是目標層 大學生如何擇業 其次是準則層 自己進一步深造的機會 單位今後的發展前景 本人的興趣愛好 單位所處的地域 單位的聲譽 單位的經濟效益 工資和福利待遇等 最後是方案層 機構...

基於素質模型的員工培訓

培訓內容整合開發模式素質模型中包含了許多共性的素質,都涉及到了個人 人際 管理技能等三個方面。因此,基於素質模型將培訓的內容劃分為3個模組 自我管理模組 人際關係模組和組織管理技能模組。5.1 自我管理模組自我管理指的是內部的或與環境相互影響的過程,這可以引導我們在不同時間不同環境中的活動和行為,自...