資源描述:
《物理引擎和圖形引擎介紹》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、物理引擎和圖形引擎介紹2015-21引言[1][2]物理引擎是一個(gè)仿真物理系統(tǒng)的軟件,它使虛擬世界中的物體運(yùn)動符合真實(shí)世界的物理定律,對虛擬現(xiàn)實(shí)中的物體進(jìn)行運(yùn)動學(xué)、動力學(xué)、其它物理學(xué)仿真等。在虛擬現(xiàn)實(shí)系統(tǒng)開發(fā)中,開發(fā)人員可以使用物理引擎與渲染引擎相結(jié)合的方法,不但可以縮短開發(fā)周期,而且可以產(chǎn)生良好的效果。隨著虛擬現(xiàn)實(shí)技術(shù)的發(fā)展,物理引擎已廣泛應(yīng)用在游戲、動畫、電影、工程仿真和軍事模擬等諸多領(lǐng)域。在以往的游戲中,例如一位士兵往一個(gè)油桶旁邊扔一個(gè)手雷,手雷爆炸,引起了油桶的爆炸。不過這個(gè)過程顯得相當(dāng)死板,不管是把手雷丟在油桶的左邊還是右邊,油桶都只會按照設(shè)計(jì)者預(yù)先設(shè)計(jì)好的腳本方式爆炸,不會
2、有區(qū)別。加入物理引擎后,它完全突破了以往按預(yù)定腳本執(zhí)行的方式,在游戲中的物體都遵守物理定律來運(yùn)行,這樣手雷扔在油桶的左邊或右邊都會產(chǎn)生不同的爆炸效果,石塊會朝不同的角度飛濺起來,煙霧也會慢慢冒起來,使游戲更加富有真實(shí)感。通常物理引擎可以分成兩類:高精度物理引擎和實(shí)時(shí)物理引擎。高精度物理引擎要求計(jì)算出精度很高的物理對象,通常用于工程仿真或用電腦制作電影中的動畫。在視頻游戲中,物理引擎通過簡化其運(yùn)算復(fù)雜度,降低其精度來滿足游戲中對實(shí)時(shí)性的需求,以增加動畫的真實(shí)感。物理引擎使用對象屬性(速度、加速度、動量、沖量、碰撞、力、力矩、阻尼、扭矩或彈性等)來模擬剛體的運(yùn)動、旋轉(zhuǎn)和碰撞等行為,這不僅可
3、以得到更加真實(shí)的結(jié)果,對于開發(fā)人員來說也比編寫行為腳本要更加容易掌握。好的物理引擎允許模擬復(fù)雜的機(jī)械裝置,像球形關(guān)節(jié)、輪子、氣缸或者鉸鏈等。有些還支持非剛性體的物理屬性,如軟體、流體等。物理引擎只關(guān)心動力學(xué)微分方程的求解,而為了獲得逼真的仿真環(huán)境,還需要圖形引擎的配合。輸入場景信息(包括物體的形狀、物理參數(shù)和位置等),通過物理引擎計(jì)算出場景中所有物體的形狀和位置,再由圖形引擎渲染它們,最終將它們顯示在計(jì)算機(jī)上。目前常用的物理引擎有Havok、PhysX、Bullet、ODE、Newton、Vortex和TOKAMAK等,常用的圖形引擎有OGRE、OSG、OpenGVS和Vtree等。本
4、文將介紹物理引擎Havok、PhysX、Bullet、ODE和圖形引擎OGRE、OSG的背景、功能、用法及其在工程仿真領(lǐng)域中的應(yīng)用,以及物理引擎和圖形引擎聯(lián)合應(yīng)用的方法。171物理引擎1.1Havok[1][3]Havok公司成立于1998年,總部位于愛爾蘭首都都柏林。該公司在2000年游戲開發(fā)者大會上發(fā)布了Havok1.0,在2003年的GDC上發(fā)布了2.0版本,在2007年3月發(fā)布4.5版本,最新版本為5.5。引擎基于C/C++語言而成。2007年9月,Intel宣布收購Havok之后不久,Intel宣布Havok引擎開放源代碼并允許游戲開發(fā)人員免費(fèi)使用。?自從Havok引擎發(fā)布以
5、來,它已經(jīng)被應(yīng)用到數(shù)百個(gè)游戲之中。最早,使用Havok引擎的游戲大多數(shù)都是第一人稱射擊類別,但隨著游戲開發(fā)的復(fù)雜度與規(guī)模越來越大,其他類型的游戲也想要有更加真實(shí)的物理表現(xiàn),有越來越多的其他類型的游戲采用Havok引擎。應(yīng)用Havok的著名游戲有:《暗黑破壞神III》、《星際爭霸II》、《半條命2》、《刺客信條:兄弟會》、《馬克思·佩恩2》、《凱恩與林奇:死人》、《凱恩與林奇2:伏天》、《榮譽(yù)勛章:太平洋突襲》、《斬除妖魔》、《帝國時(shí)代III》、《極度恐慌》、《細(xì)胞分裂:混沌法則》、《光環(huán)2》、《光環(huán)3》、《大亂斗SmashBrothersX》以及《上古卷軸IV:湮沒》等。?使用Havo
6、k的軟件有3DMark06、3DMarkVantage、3dsMax、AdobeAtmosphere和AdobeShockwave等。Havok具有以下主要功能:●碰撞檢測(包括連續(xù)的物理體)●MOPP技術(shù)(大碰撞網(wǎng)格的簡潔表達(dá))●動力學(xué)和約束的求解●車輛動力學(xué)●數(shù)據(jù)序列和布景工具支持●內(nèi)置診斷反饋虛擬調(diào)試器Havok注重在仿真和游戲中對現(xiàn)實(shí)世界物理行為的模擬,提供了大量的應(yīng)用程序編程接口(API),用于剛體建模、碰撞檢測和實(shí)時(shí)動力學(xué)計(jì)算等。利用該引擎,可快速建立虛擬三維物理世界,以及物理世界中的物理實(shí)體,并向物理實(shí)體添加物理屬性,完成仿真系統(tǒng)的實(shí)時(shí)計(jì)算,并檢測計(jì)算結(jié)果。“幀”是仿真系
7、統(tǒng)中的單幅畫面,兩個(gè)連續(xù)幀之間的時(shí)間間隔稱為幀時(shí)間。Havok物理引擎的工作流程就是在上一幀渲染完畢之后,以及下一幀渲染開始之前的幀時(shí)間內(nèi),將外部設(shè)備的輸入信號轉(zhuǎn)化為物理世界中具有物理屬性的實(shí)體的受力,根據(jù)實(shí)體間的約束信息,進(jìn)行碰撞檢測以及活動實(shí)體的受力分析,求出加速度和角加速度等,最后對時(shí)間進(jìn)行積分求出實(shí)體在下一幀中的位置和姿態(tài)。求解完畢之后交付圖形引擎渲染,并進(jìn)入下一個(gè)計(jì)算過程。對于交互式仿真系統(tǒng),物理引擎還要有接收外部設(shè)備的輸入信號并轉(zhuǎn)化