• 軟體動力學

    編輯
    本詞條由“匿名用戶” 建檔。

    軟體動力學

    編輯

    軟體動力學計算機圖形學的一個領域,專注于對可變形物體(或軟體)的運動和屬性進行視覺逼真的物理模擬。應用主要是在電子游戲電影中。與模擬剛體不同,軟體的形狀可以改變,這意味著物體上兩點的相對距離不是固定的。雖然點的相對距離不是固定的,但預計身體會在一定程度上保持其形狀(不像流體)。軟體動力學的范圍相當廣泛,包括模擬肌肉、脂肪、頭發和植被等軟有機材料,以及其他可變形材料,如服裝和織物。通常,這些方法僅提供視覺上似是而非的模擬,而不是準確的科學/工程模擬,盡管與科學方法存在一些交叉,特別是在有限元模擬的情況下。目前有幾個物理引擎提供軟體模擬軟件

    可變形實體

    編輯

    體積固體軟體的模擬可以通過使用多種方法來實現。

    彈簧/質量模型

    兩個節點作為質點,由彈簧和阻尼器的并聯電路連接。

    在這種方法中,身體被建模為一組點質量(節點),由理想的失重彈性彈簧連接,遵循胡克定律的一些變體。節點可以從對象表面的二維多邊形網格表示的邊緣導出,也可以從對對象內部結構建模的節點和邊緣的三維網絡(或什至一維系統鏈接,例如正在模擬繩索或發束)。可以在節點之間添加額外的彈簧,或者修改彈簧的力定律,以達到預期的效果。應用牛頓第二定律包括彈簧施加的力和任何外力(由于接觸、重力、空氣阻力、風等)的點質量給出節點運動的微分方程組,通過標準數值求解求解ODE的方案。三維質量彈簧晶格的渲染通常使用自由形式變形來完成,其中渲染的網格嵌入晶格中并隨著晶格的演變而扭曲以符合晶格的形狀。假設所有的點質量都為零一可以得到拉伸網格法旨在解決與彈性網格行為相關的幾個工程問題。這些有時被稱為質量彈簧阻尼器模型。在受壓軟體中彈簧質量模型與基于理想氣體定律的壓力相結合。

    單元節點的運動方程是通過對每個單元上的應力場進行積分并將其通過牛頓第二定律與節點加速度相關聯來獲得的。

    Pixelux(數字分子物質系統的開發者)對其軟體使用基于有限元的方法,使用四面體網格并將應力張量直接轉換為節點力。渲染是通過一種形式的自由變形來完成的。

    能量最小化方法

    這種方法受到變分原理和表面物理學的啟發,這表明受約束的表面將采用最小化變形總能量的形狀(類似于肥皂泡)。用表面的局部變形來表達表面的能量(能量是由拉伸和彎曲的組合引起的),表面上的局部力是通過對位置的能量微分來給出的,產生一個運動方程,它可以以標準方式解決。

    形狀匹配

    在該方案中,懲罰力或約束應用于模型以將其驅動到其原始形狀(即材料表現得好像它具有形狀記憶)。為了保持動量,必須正確估計物體的旋轉,例如通過極坐標分解。為了近似有限元模擬,可以將形狀匹配應用于三維格子和混合的多個形狀匹配約束。

    基于剛體的變形

    變形也可以由傳統的剛體物理引擎處理,使用由約束連接的多個剛體的網絡對軟體運動進行建模,并使用(例如)矩陣調色板蒙皮生成用于渲染的表面網格。這是HavokDestruction中用于可變形對象的方法。

    布料模擬

    編輯

    計算機圖形學的上下文中,布料模擬是指以二維連續彈性膜的形式模擬軟體,即為此目的,可以忽略紗線層面上真實布料的實際結構(雖然建模布料在紗線層面上已經嘗試過)。通過渲染效果,這可以產生視覺上似是而非的紡織品和服裝模擬,用于視頻游戲、動畫和電影的各種環境中。它還可用于模擬除紡織品以外的二維材料片,例如可變形金屬板或植被。在電子游戲中,它通常用于增強穿著衣服的動畫角色的真實感。

    布料模擬器通常基于質量彈簧模型,但必須區分基于力和基于位置的求解器。

    基于力的布料

    所述質量-彈簧模型(從獲得的多邊形網格布的表示)確定作用在所述節點上在每個時步(與重力和施加的力的組合)內的彈簧力。牛頓第二定律給出了可以通過標準ODE求解器求解的運動方程。要創建具有現實剛度的高分辨率布料是不可能的,但是使用簡單的顯式求解器(例如正向歐拉積分),除非時間步長對于交互式應用程序來說太小(因為眾所周知,顯式積分器在數值上是足夠硬時不穩定系統)。因此,必須使用隱式求解器,需要求解大型稀疏矩陣系統(例如通過共軛梯度法),這本身在交互式幀速率下也可能難以實現。另一種選擇是使用具有低剛度的顯式方法,使用臨時方法來避免不穩定和過度拉伸(例如應變限制校正)。

    基于位置的動力學

    為了避免對ODE系統進行昂貴的隱式求解,許多實時布料模擬器(特別是PhysX、HavokCloth和MayanCloth)使用基于位置的動力學(PBD),一種基于約束松弛的方法。質量-彈簧模型被轉換為一個約束系統,它要求連接節點之間的距離等于初始距離。該系統通過直接移動節點以滿足每個約束來順序和迭代地求解,直到獲得足夠堅硬的布料。這類似于Gauss-Seidel質量-彈簧模型的隱式矩陣系統的解。必須注意在每個時間步中以相同的順序求解約束,以避免虛假振蕩,并確保約束不違反線性和角動量守恒。可以應用額外的位置約束,例如將節點保持在所需的空間區域內(例如足夠接近動畫模型),或通過形狀匹配保持身體的整體形狀。

    可變形物體的碰撞檢測

    編輯

    模擬軟物體與其環境的真實交互對于獲得視覺逼真的結果可能很重要。布料自交在某些應用中很重要,可用于制作可接受的逼真模擬服裝。這在交互式幀速率下實現具有挑戰性,特別是在檢測和解決兩個或多個可變形對象之間的自碰撞和相互碰撞的情況下。

    碰撞檢測可以是離散的/后驗的(意味著物體在預定的時間間隔內及時前進,然后檢測到并解決任何穿透),或連續的/先驗的(物體只前進直到發生碰撞,并且碰撞是在繼續之前處理)。前者更容易實現且速度更快,但如果對象移動得足夠快,則會導致無法檢測碰撞(或檢測虛假碰撞)。實時系統通常必須使用離散碰撞檢測,以及其他特殊方法來避免未能檢測到碰撞。

    檢測具有明確定義的“內部”的布料和環境對象之間的碰撞很簡單,因為系統可以明確檢測布料網格頂點和面是否與身體相交并相應地解決它們。如果不存在明確定義的“內部”(例如,在與不形成封閉邊界的網格發生碰撞的情況下),則可以通過擠壓構造“內部”。由四面體定義的軟體的相互碰撞或自碰撞很簡單,因為它簡化為檢測固體四面體之間的碰撞。

    然而,通過離散碰撞檢測來檢測兩個多邊形布料之間的碰撞(或布料與其自身的碰撞)要困難得多,因為在一個時間步長之后沒有明確的方法來局部檢測已經穿透的布料節點是否在“錯誤”的一面與否。解決方案包括使用布料運動的歷史來確定是否發生了交叉事件,或者對布料狀態進行全局分析以檢測和解決自交叉。Pixar提出了一種方法,該方法使用配置空間中網格交叉點的全局拓撲分析來檢測和解決布料的自穿入問題。目前,對于實時布料系統來說,這通常在計算上過于昂貴。

    軟體動力學

    為了有效地進行碰撞檢測,必須盡快識別肯定不會發生碰撞的圖元并從考慮中丟棄以避免浪費時間。使用的方法包括:

    • 邊界卷層次結構(AABB、OBB樹、球體樹)
    • 網格,無論是統一的(使用哈希提高內存效率)還是分層的(例如Octree、kd-tree)
    • 連貫性利用方案,例如使用插入排序的掃描和修剪,或使用前跟蹤的樹-樹碰撞。
    • 混合方法涉及各種這些方案的組合,例如粗AABB樹加上在碰撞葉子之間具有一致性的掃描和修剪。

    其他應用

    編輯

    可以通過軟體動力學方法模擬的其他效果是:

    • 可破壞材料:脆性固體的斷裂、軟體的切割和布料的撕裂。在有限元法特別適合于模擬骨折,因為它包括在材料中,其物理上是當斷裂發生什么決定內部應力的分布的一個現實的模型,根據斷裂力學
    • 塑性(xxx變形)和熔化
    • 模擬頭發、毛皮和羽毛
    • 用于生物醫學應用的模擬器官

    計算機圖形環境中模擬流體通常不會被視為軟體動力學,軟體動力學通常僅限于對傾向于保持其形狀和形式的材料進行模擬。相比之下,流體呈現出任何包含它的容器的形狀,因為粒子通過相對較弱的力結合在一起。

    內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/128626/

    (4)
    詞條目錄
    1. 軟體動力學
    2. 可變形實體
    3. 彈簧/質量模型
    4. 能量最小化方法
    5. 形狀匹配
    6. 基于剛體的變形
    7. 布料模擬
    8. 基于力的布料
    9. 基于位置的動力學
    10. 可變形物體的碰撞檢測
    11. 其他應用

    輕觸這里

    關閉目錄

    目錄
    91麻精品国产91久久久久