VRP-Physics物理系統

物理引擎,簡單的說就是計算3D場景中,物體與場景之間,物體與角色之間、物體與物體之間的運動互動和動力學特性。在物理引擎的支持下,VR場景中的模型有了實體,一個物體可以具有質量、可以受到重力、可以落在地面上、可以和別的物體發生碰撞、可以受到用戶施加的推力、可以因為壓力而變形、可以有液體在表面上流動……

關鍵特性

1)高效的碰撞檢測算法

作為物理引擎的基礎,VRP的物理引擎系統具有優秀的碰撞檢測效率。在進行物理模擬之前,VRP會重新組織模型面片到計算最最佳化的格式,並且能存儲為檔案,讓再次模擬的時候無需重新計算。碰撞檢測之前也經過數次過濾:場景過濾>碰撞組過濾>動/靜物體過濾>包圍合過濾>碰撞檢測,最大可能的排除了碰撞檢測時候的計算冗餘。

2)真實的模擬剛體動力學特性

VRP場景能夠模擬真實的剛體運動,運動物體具有密度、質量、速度、加速度、旋轉角速度、衝量等各種現實的物理動力學屬性。在發生碰撞、摩擦、受力的運動模擬中,不同的動力學屬性能得到不同的運動效果。

3)任意的運動材質

VRP運動物體可以具有不同的運動材質(如橡皮、鐵球、冰塊),用戶可以任意指定物體的彈性、靜摩擦力、動摩擦力、空氣摩擦阻尼等多種參數達到模擬世界萬物在剛體運動中具有的不同效果。

4)支持多種高速運算的碰撞替代體

除了對模型的面片進行預處理參與碰撞檢測,VRP還提供了盒形、球形、圓柱形、膠囊型、凸多面體五種在模型形狀大致相同的情況下可以使用的替代碰撞體,這些碰撞體擁有高效的碰撞計算效率,大大提高物理模擬的實時性。

5)多種動力學互動手段

用戶和物理場景的互動,VRP不僅提供了自由的、真實的動力學互動手段:用戶可以對任意物體的任意位置施加推力、扭力、衝力等;也可以對物體動態設定速度、角速度、密度等參數。

6)支持 Continuous Collision Detection連續碰撞檢測 如果某個物體運行速度過快,可能會導致該物體無法和得到正確的碰撞檢測,比如當一個運動速度很快的子彈穿越了一個鋼板,因為運動速度過快而無法檢測到碰撞的通道效應將會產生。連續碰撞檢測可以將物體每兩幀之間的碰撞檢測連續化,保證在運動路線中出現的物體都能參與到碰撞檢測。

7)大規模運動場景進行局部調度計算

物理引擎和圖形引擎在局部調度方面的不同是:當你看不見一個物體的時候,他仍然在運動,也就說仍然在計算。當物理場景過大,運動剛體數量過多的時候,這樣的計算量是龐大的。VRP的物理引擎中,可以讓運動穩定的物體(如靜止下來的物體、勻速轉動的物體、勻速運動的物體)在碰撞檢測組和非碰撞檢測組之間動態的調度,排除了在不會產生碰撞的物體之間進行碰撞計算的計算冗餘(比如兩個靜止下來的物體)。同時,VRP還提供了腳本接口讓用戶也能參與到動態調整物體碰撞管理。

8)提供多種物體的運動約束連線

物理場景中的任何物體可以通過連線的方式把運動關聯起來。比如把一個門以鉸鏈的方式安置在了門框上面,這樣,門只能繞著鉸鏈的軸旋轉,而門受到的其他方向的力將會因為鉸鏈傳遞給門框。VRP的物理系統中,提供了鉸鏈連線、球面連線、活塞連線、點線上上的連線、點在面上的連線、粘合連線、距離連線等多種連線方式來關聯兩個物體的運動。

並且在VRP的物理系統中,物體的運動關聯是可斷的。當兩個關聯起來的物體,受到了比較大的拆分力,運動的關聯將會自動中斷,就像一個門受到很大的力後,鉸鏈斷裂後的效果:門離開門框飛了出去。

9)可以模擬場景重力、環境阻尼等環境特性

作為虛擬現實的優勢,我們可以模擬一些難以達到的或者不存在的物理環境。比如在水下、太空、月球上的運動模擬。通過對場景的重力、環境阻尼等因素進行調節能達到各種物理實驗環境。

10)逼真的流體模擬

VRP提供有流體的模擬,場景中的流體粒子不僅能夠參與碰撞,還具有流體自己的動力學特性:粒子之間吸附力、粒子之間的排斥力、流體的流動摩擦力等,能達到逼真的流體效果。可直接套用到管道、排水系統、噴泉、泄洪等案例中去。

11)支持硬體加速

支持PPU加速,對於大規模運動模擬有了硬體支持。

12)支持各種碰撞事件的自定義設定和實時回響 在場景中的物體發生碰撞的時候,用戶可以獲得通知。並且用戶可以自己設定感興趣的碰撞對象和並且能對事件綁定腳本,這樣可以實現在碰撞發生時能產生聲音、接觸發生時播放動畫的效果。

13)真實的布料模擬

VRP具有相當方便的布料模擬系統。用戶可以將任何三角形格線的模型設定為布料,模擬過程中,布料以模型頂點為基礎,實時生成頂點動畫,每個三角形面片都將參與碰撞檢測與力反饋。布料模擬中,不僅可以設定布料的抗彎係數,抗拉係數來模擬不同材質的布料,還能給封閉的布料充滿氣體形成氣球。布料能輕鬆與用戶發生互動,甚至可以在受到破壞力的時候被撕裂。

14)自由的力場模擬

能在場景中模擬颳風、水流時候的現象。物體處於力場中,可以因為角度不同,受到的力大小也不同,比如在迎風站立時受到較大的風力,側風站立時則受到較小的風力。力場所作用的範圍也可以隨意定製,可以讓用戶在出門以後受到風力場,而進屋以後卻沒有風,感覺家的溫暖。

15)汽車等交通工具模擬

能隨意的構造汽車結構,可以根據由任意車輪來驅動、導向行駛,具有實時的碰撞檢測和碰撞力度的反饋。

16)柔體模擬

實時計算的模型各個面的受力生成柔體的頂點動畫效果,逼真程度相當驚人。柔體能固定到任何剛體內部,也能將一個剛體固定到柔體內部充當柔體骨架;柔體和布料一樣,同樣具有撕裂特性,可以用來模擬一些比如器官切割等效果。

17)方向力的模擬

所生成的模型應該考慮外界力的作用,如果把這個問題考慮周到了,那就很好的。

套用歸納

1)什麼是物理引擎

物理引擎和3D圖形引擎是兩個截然不同的引擎,但是它們兩者又有著密不可分的聯繫,一起創造了虛擬現實的世界。在虛擬現實世界中,人們的需求已經從觀看離線渲染的3D卡通片的方式過渡到了使用實時渲染技術的VR互動瀏覽方式,這一步的邁進主要歸功於3D圖形引擎的發展。然而,只有圖形引擎的VR模擬只是一些三角形面片的塗色顯示而已,虛擬世界中的物體只具有一個外表,沒有內在的實體,就像一堆幽靈彼此之間無法相互作用,用戶更不能和他們產生具有逼真的動作互動。物理引擎,簡單的說就是計算3D場景中,物體與場景之間,物體與角色之間、物體與物體之間的運動互動和動力學特性。在物理引擎的支持下,VR場景中的模型有了實體,一個物體可以具有質量、可以受到重力、可以落在地面上、可以和別的物體發生碰撞、可以反套用戶施加的推力、可以因為壓力而變形、可以有液體在表面上流動……。

2)物理引擎的套用領域

1) 遊戲領域

近年來,物理元素越來越多的融入到遊戲中,《半條命2》、《虛幻競技場3》等物理大作的出現已帶給玩家巨大的感官衝擊,物理引擎也被植入PS2、XBOX等電視遊戲機中用來增加遊戲的真實感。物理引擎在遊戲中起到的作用是不能忽視的:角色是否能穿越牆面,子彈是否擊中目標、風吹動草叢等畫面都是需要進行大量物理計算。在遊戲世界中,電腦要即時的演算物體碰撞、下落、反轉等物理邏輯的畫面,這些功能都是物理引擎來完成。在沒有物理引擎的時候,無論樓房受到怎樣的攻擊都只會按照設計好的動畫方案崩潰,畫面也比較簡陋;現在,大樓會根據攻擊的方向、力度,倒向不同方向,同時落下數以千記的塵埃和碎片,產生更為真實和震撼的畫面。遊戲所有對象都是“可破壞的”,對象的毀壞都真實地依據“彈體”、“材料”和“物理”三方面來考量。每個作戰單位不但有更逼真的動作互動,甚至連遊戲中的所有建築物場景也是可以破壞的,所以玩家別以為只是把作戰單位躲避到建築物後方就不會受到傷害,因為建築物一直受到攻擊也是會損壞的。士兵和載具因不同部位受創引起損傷而影響相關的行動、建築因爆炸而出現部件結構式的連環塌陷、地面和牆體因槍林彈雨和轟炸形成的彈道坑窪等物理效果都表現地淋漓盡致。至今已有300多款遊戲引用了專業的物理引擎。

2) 虛擬教學

物理引擎可以讓虛擬現實在教學方面的套用得到更深入的發展。在沒有物理引擎的虛擬教學環境中,虛擬實驗環境只能起到認識學習的目的,也就是說用戶可以從各個角度觀察實驗,按照預定的動畫播放試驗得到結果,而不能更加真實的互動參與實驗。在具有物理引擎的虛擬實驗環境中,用戶可以直接置身於實驗環境中,通過現場實時互動得到試驗成果,不僅能達到認識教學的目的,還能培養使用者的實際操作經驗。對於一些價格昂貴、結果嚴重或者甚至根本無法實現的教學環境的虛擬教學實驗完全可以達到替代作用。

在中學物理教學實驗中,同學們不僅可以在虛擬實驗室中自己組裝單擺、選擇自由落體物質的材料、對斜面設定不同摩擦係數的材質,還可以將試驗環境搬到月球、深海或者設定世界為零摩擦狀態,可以幫助同學進一步的認識物理運動本質。

醫學方面,虛擬現實技術可以進行新一代醫學儀器的使用教學,比如在模擬微創手術的時候,學員操作的是同樣的設備,然而目標卻不是活生生的、致命的人體,是取而代之的虛擬器官。為了反映所操作的虛擬儀器對人體器官所產生的影響,物理引擎將會根據操作者的動作,器械與器官碰撞的力度、人體各種器官的脆弱程度來實時的計算試驗結果,統計每次試驗對病人將會造成的危害,不僅讓學員熟悉對儀器的操作,還能根據實驗經驗避免儀器對敏感器官的碰觸。

駕校學習中,虛擬現實的套用已經比較廣泛,而具有物理引擎的虛擬駕駛系統能讓學員進一步的體驗駕駛的真實感。帶有物理引擎的虛擬駕駛系統中,當汽車駛過地上的一個坑道、在高地不平的地面行駛、撞車時候的受力方位和車體的變形、撞到行人、汽車、樹樁、廣告牌的感受和表現也迥然不同,轉彎時候汽車的打滑現象、造成的輪胎磨損程度等都能一一反映。不僅如此,物理引擎還可以收集每次虛擬駕駛過程中的某些關鍵力學數據作為對一個學員的考核參考。

3) 互動展示

如今的三維技術正逐步走入網頁,廠商可以將他們的物件製作為三維模型讓用戶全自由度的觀察。但是,簡單的三維顯示技術在實現一些動態物體的展示方面顯得力不從心,用戶能得到的動態互動都是一些預先設定好的動畫效果,不能參與到與展示環境的動態互動,讓虛擬作品的真實性大打折扣。比如一個裝飾品網站正在網上虛擬展示他們的風鈴,除了有優秀的圖形引擎來表達其漂亮的外觀外,還需要具有一個物理引擎來讓用戶可以互動的撥弄風鈴,讓用戶體會到風鈴舞動起來時的優美,以及碰撞產生時候叮叮噹噹的悅耳聲。又比如在進行水龍頭、淋浴噴頭的3D物品展示時,不僅可以讓用戶互動的調節噴發的水流大小,還可以讓虛擬角色的伸手過去“感受”水流的碰撞,增加更真實的互動。

房地產展示時候,通過物理引擎,可以設定一些互動的體育設施、一些可以拉動的彈簧門以及窗簾、一些可以參與嬉戲的噴泉、能使用起來的虛擬檯球桌、能踩踏變形的草地……,所有這些均能讓用戶感受到一個動態的充滿生機的小區,而不是一個個的靜止模型或動態貼圖。

4) 軍事模擬

軍事訓練中的實戰訓練不可替代,但是虛擬場景演習也相當重要,在降低演習成本、布置實戰戰術方面都有著相當重要的作用,在美國早已經將虛擬軍事訓練作為士兵培訓的必修訓練。物理引擎在軍事模擬中的作用顯得更加重要,比如在一個戰場地形中,虛擬的炸彈在某個地方產生爆炸後,物理引擎能計算出各個虛擬陸戰隊員的位置被該爆炸波及的程度,結構脆弱的掩體將會因為該爆炸而塌陷,從而通過虛擬演示能更好的規劃戰壕、掩體或者進攻線路的抉擇。通過物理引擎的模擬,虛擬演示可以精確到每一顆具有不同穿透力的子彈打在目標後的反映,手雷因受重力和空氣阻尼在空中飛行軌跡以及落地後的影響範圍,不同威力的炸彈能導致了不同的破壞結果等。 消防和災難救助演習中,物理引擎起著關鍵性的作用。比如在消防虛擬訓練中,物理引擎不僅能真實的實時模擬煙霧和火勢的走向,在救助行動中,一些脆弱的結構,也會因為被焚燒或者踩踏而倒塌,增加救助行動的真實度。消防員更能主動撞開一些通道,或者挪動一些石塊清理救助路線,當然這些行動如果動搖了所支撐的上層結構時,虛擬場景同樣也會毫不留情的塌陷下來。

5) 工程試驗

工程試驗中,複雜結構的受力分析是相當複雜的。當不同的桿件通過各種連線約束構造出一個結構後,物理引擎能夠輕鬆的模擬出該結構體的力學傳遞。當結構受到某個方向的破壞力,虛擬結構能從最脆弱的部位開始崩潰。從而可以輔助工程人員決策工程重點、預防結構坍塌,在桿件搭建,橋樑施工等工程中都起著重要作用。

6) 管道流體模擬

管道設施在建築和城市規劃中都占有相當重要的份量。物理引擎在這方面可以實時的計算液體或者氣體是如何在這些管道內流淌,比如觀察建築在某層積水後,水流會如何通過管道排放,發生火災後產生的濃煙又是如何走向,工廠的排污水流又如何被淨化,大壩泄洪後,水流將沿著河床如何流淌。

7) 動畫製作

物理引擎在動畫製作中的套用已經相當成熟,3DMAX和MAYA都已集成了成熟的物理模組。雖然動畫製作軟體的離線物理計算到虛擬現實中的實時物理計算,動畫製作軟體和虛擬現實軟體中的物理引擎用到的計算的方法和技術有著顯著的不同,但都有著共同的目的: (1)把動畫師從關鍵幀動畫解放出來,動畫師不再需要一幀一幀調節動畫,不需要定製每個物體在空中的飛行時間和路徑,方便的骨骼IK系統,對動畫師來說,物理引擎為他們節省了大量的時間; (2)讓動畫更具有真實感,物理引擎讓動畫中的每個細節都能參與計算,帶碰撞的粒子效果、具有擴散性的煙霧、具有吸附力的水面、爆炸碎塊的碰撞以及產生的結果、颳風時引起的細節效果……。

相關詞條

相關搜尋

熱門詞條

聯絡我們