Havok,全稱為Havok Game Dynamics SDK,譯作Havok游戲動力開發(fā)包。一般稱為Havok,是一個用于物理(動力學)效應模擬的游戲引擎,為電子游戲所設(shè)計,注重在游戲中對于真實世界的模擬。使用撞擊監(jiān)測功能的Havok引擎可以讓更多真實世界的情況以最大的擬真度反映在游戲中。它包含PhysX、FX及其他一系列著名的物理模擬與運算引擎,被廣泛地應用于游戲、軟件和電影當中。
內(nèi)容簡介
人們經(jīng)常說到的,與PhysX相提并論的Havok物理模擬引擎,只是Havok引擎中的一部分而已。
Havok成立于1998年,總部位于愛爾蘭首都都柏林。2000年在游戲開發(fā)者大會上發(fā)布了Havok 1.0 。2.0版本在2003年的游戲開發(fā)者大會上發(fā)布;4.5版本在2007年3月釋出,最新版本為5.5 ,引擎基于C/C++而成。2007年9月,英特爾宣布收購Havok,之后不久,Intel宣布Havok引擎開放源代碼并允許游戲開發(fā)人員免費使用。
Havok專注于游戲的仿真技術(shù)。其包含的Havok Physics物理引擎是物理模擬計算引擎界的領(lǐng)軍者,世界三大物理引擎之首。(排名第二的是nVIDIA PhysX,第三的是Bullet)。
自2000年Havok 1.0版本發(fā)布以來,采用Havok引擎開發(fā)的游戲(全平臺)已超過280種。由于Havok的開放性以及不依賴特定硬件支持的特點,很多游戲大作都采用Havok引擎。例如:《瘋狂麥克斯》、《星際爭霸2》、《暗黑破壞神Ⅲ》、《激戰(zhàn)2》、《戰(zhàn)地:叛逆連隊2》、《失落的星球2》、《半條命2》(半條命雖然使用source做的,但是source是基于havok引擎的、《細胞分裂》、《生化危機5》、《孤島驚魂2》、《輻射3》、《求生之路》、《正當防衛(wèi)》、《波斯王子:遺忘之沙》、《爭分奪秒》、《星球大戰(zhàn):原力釋放2》、《閃點行動:龍之崛起》、《帝國時代3》、《黑道圣徒4》、《熱血無賴》、《現(xiàn)代戰(zhàn)爭4:決戰(zhàn)時刻》等。這與PhysX游戲都是較為冷門的情況大不相同。
Havok是英特爾公司旗下產(chǎn)業(yè),但是仍然與AMD公司保持良好的合作關(guān)系;Havok引擎是AMD”開放物理計劃“的核心成員之一(另兩個成員是Bullet和Pixelux DMM),計劃中可以利用AMD Radeon HD4000系列以上的顯卡進行物理加速計算。不過這項計劃尚在開發(fā)中,除了幾個演示DEMO外,尚沒有游戲支持。
主要組成
Physics
Havok物理引擎。業(yè)界領(lǐng)先的實時碰撞計算和物理仿真解決方案,提供快速高效率的物理模擬計算。被200多個游戲所采用,且Havok Physics引擎可以運行在Windows、Linux、麥金塔、XBOX360、playstation3等全平臺上。Havok Physics是整個Havok引擎的基礎(chǔ)。
Havok Physics物理引擎是業(yè)界功能最全面的物理仿真解決方案,它可以應用在諸如實時碰撞計算、動力學約束求解、車輛綜合解決方案等領(lǐng)域。
Havok Physics基于CPU計算,尤其是在英特爾收購Havok之后,Havok特別針對多核多線程CPU進行優(yōu)化。多線程CPU的普及以及Havok Physics引擎本身的高效率特點,使得Havok僅僅依靠CPU計算就能達到很好的物理模擬效果。
FX
針對爆炸效果等大計算量的物理模擬,Havok曾經(jīng)推出過Havok FX引擎。Havok FX引擎也是一種物理模擬計算解決方案,由CPU+GPU聯(lián)合計算完成。GPU負責爆炸等大計算量的物理模擬。英偉達與ATI都曾經(jīng)與Havok就Havok FX進行過深入的合作。但是英特爾收購Havok后,由于Intel本身不能生產(chǎn)獨立的GPU,Havok FX發(fā)展就陷入停滯,雖然Intel官方?jīng)]有宣布Havok FX引擎下馬,但實際上Havok FX已經(jīng)被Intel雪藏。
這也就意味著,ATI顯卡雖然理論上支持Havok FX物理加速,但是由于Havok引擎中GPU計算部分已經(jīng)停滯發(fā)展,所以ATI顯卡的Havok物理加速只是有槍無彈,缺少游戲支持。這也是后來AMD啟動“開放物理計劃”的原因之一。
動作引擎
Havok動作引擎。是一種高效靈活的動作開發(fā)工具。在全平臺上提供經(jīng)過優(yōu)化的回放和實時融合特性,并能與Havok Physics引擎完美合作,提高游戲的可玩性。
Havok動作引擎的特點包括:高效動畫壓縮和解壓;運動混合;根據(jù)速度、方向和重量提供動作控制;動作緩和曲線支持等。
如果沒有Havok Animation,游戲中車輪不會轉(zhuǎn)動,兩腿不會邁開,士兵也不會換彈匣或者蹲、站、跳、臥倒、側(cè)傾。最新版的動作引擎帶來流暢的動作,在使用寒霜引擎的ruby demo中,僅ruby臉部就有上百個可動部件,這是前所未有的。值得一提的是很多好萊塢電影大片也是使用Havok Animation。
Behavior
Havok行為引擎。它可以讓游戲中的虛擬人物學會新的行為、動作、戰(zhàn)術(shù)。你是否曾注意到,在一些采用havok的游戲中,就像《光暈3》和《半條命2》,友好的虛擬人物會轉(zhuǎn)身面向你,會和你產(chǎn)生互動。敵人則不僅會沖向你開火,他們也會尋找 掩護,在《彩虹6號:盾牌行動》之類的戰(zhàn)術(shù)游戲中,敵人甚至擁有包抄、迂回等戰(zhàn)術(shù)。集成在寒霜引擎中的Havok Behavior更為強大,例如你會看到虛擬人物弓腰通過,攀爬,或者跳過障礙,遇到爆炸物選擇躲避或是撿起來扔回去。
Cloth
Havok布料模擬引擎。Havok Cloth不是說這個引擎只能模擬布匹的物理特性,而是能模擬一切柔性物體。如衣服,裙子,斗篷,外套、頭發(fā)、尾巴、旗幟、橫幅、窗簾、植物等等。
Havok Cloth的基本特性包括基于物理的布料模擬、多線程與平臺優(yōu)化、拉伸/阻尼/彎曲等布料行為屬性、基于人物模型的布料創(chuàng)建工具等等。
加入AMD開放物理計劃的Havok引擎,就是這個Havok Cloth引擎。AMD曾經(jīng)展示過一個由HD4870X2組建的,基于ATI Stream和OpenCL,運用Havok Cloth引擎的演示視頻。
剛體破壞
Havok剛體破壞引擎。這是一種高效的跨平臺的剛體破壞仿真引擎。Havok剛體破壞引擎采用Collision Detection碰撞檢測系統(tǒng),這將有別于以往傳統(tǒng)游戲中的hitbox系統(tǒng)。適合造成動態(tài)破壞。
帶來前所未有的高范圍破壞,可完全毀壞游戲內(nèi)的所有物體(載具、建筑、橋梁、樹木.....)和部分地形
帶來前所未有的高精度破壞,你可以削去飛行中飛機的翅膀或者其他什么地方,也可以炸壞房屋一角,這一切都不是程序編輯好的,不是調(diào)用破壞后的模型和 貼圖,你可以決定破壞什么部位。
《戰(zhàn)地 叛逆連隊2》使用寒霜引擎渲染,寒霜引擎中集成了內(nèi)部版本的Havok Destruction 2.0版本。這使得游戲中高達99%的建筑都可以被破壞掉。
AI
Havok人工智能引擎。在2009年游戲開發(fā)者大會上,Havok展示了Havok引擎家族的新成員:Havok人工智能引擎。
Havok AI可以幫助游戲開發(fā)者更好的進行游戲中人工智能的開發(fā),借助Havok AI SDK開發(fā)者可以更容易的設(shè)計出更出色、聰明的游戲角色。比如這套工具就包含自動路徑搜索功能,可以讓游戲角色迅速、動態(tài)的自主進行路徑規(guī)劃。在GDC2009上就展示了一段,士兵躲避著炮火自動搜索安全路徑穿過道路的片段,給與會者留下了很深的印象。此外,它還包括各種通用件的組合、網(wǎng)絡(luò)化的智能集成等。
引擎介紹
游戲
比較著名的Havok引擎游戲包括:《阿拉瑪王國:懲罰》《戰(zhàn)地3》、《極品飛車:亡命天涯》《星際爭霸2》、《暗黑破壞神Ⅲ》、《戰(zhàn)地:叛逆連隊2》、《上古卷軸4:湮沒》、《馬克思 佩恩2》、《光暈3》、《半條命2》、《細胞分裂》、《生化危機5》、《F.E.A.R》 、《孤島驚魂2》、《輻射3》、《阿凡達》、《求生之路》、《正當防衛(wèi)》、《波斯王子:遺忘之沙》、《孢子》、《爭分奪秒》、《紅色派系:游擊戰(zhàn)》、《失落的星球2》《現(xiàn)代戰(zhàn)爭4:決戰(zhàn)時刻決勝時刻》等。
目前為止,在全平臺上,共有353種游戲使用Havok引擎。超過了PhysX的309種。Havok仍然是物理模擬引擎界的領(lǐng)軍者。
其中PC平臺的Havok游戲共163個。
下面為全平臺Havok引擎游戲列表:
軟件
3ds MAX、奧多比 Atmosphere、virtools等。
電影
《特洛伊》《黑客帝國》等。
主要對比
英偉達顯卡用戶應該會有印象,只要打開PhysX模式,游戲就會卡,特別是最早的那個尖峰戰(zhàn)士2的物理島關(guān)卡,不管你是不是在 做什么大事,就算呆著不動也卡,這是因為physx是以API實現(xiàn)的,是一個外部插件,不能和游戲引擎完美的結(jié)合起來,需要不斷的檢測你有沒有觸發(fā)每一個 條件,這需要大量的浮點運算,所以浮點運算能力強的顯卡運算起來只是費勁,CPU模式打開它就只有個位數(shù)的幀了。而且physx只能執(zhí)行nv官方提供的幾 套算法,自由度不高.
而havok是一套功能豐富的游戲開發(fā)組件,開發(fā)者可以根據(jù)需要把其中幾項功能封裝到自己引擎的底層,由于是CPU運算X86指令集,還能執(zhí)行很多開發(fā)者 自己發(fā)明的代碼,工作模式是引擎內(nèi)部的觸發(fā)式,所以有些情況下會看到你都看到BFBC2里面炮彈擊中墻了幾毫秒,墻才碎有延遲。如果你不斷的同時擊碎什么 東西,就不會有延遲了,因為游戲會自動切換到一個觸發(fā)頻率高的模式。有些havok游戲默認就工作在這個模式
大多數(shù)游戲用的都是 havok的同一套剛體力學模擬破壞系統(tǒng),布料/頭發(fā)的柔體力學模擬&氣動方面的流體力學模擬插件都沒發(fā)揮出來
在破壞的精度上,havok和physx是一樣的,都可以精確到未來10年也發(fā)揮不出來的級別,不過兩者在實際應用中發(fā)揮出的功力都不行。實現(xiàn)方法都是將一個物體劃分為若干個碰撞模塊,每個模塊可以分別被從這個物體的整體上擊碎下來,然后這個碎塊還繼續(xù)帶有碰撞檢測屬性. 一般游戲里會設(shè)置他們幾十秒后自動消失,而《戰(zhàn)地 叛逆連隊2》里幾乎立刻沒了
理論能達到的程度就是對著一個模型人開一槍,可以射出一個有空腔的洞,而不是將模型人擊碎成幾塊,或者在屏幕上消失。這需要模型人由幾十萬個碰撞檢測模塊 組成
最重要的就算physx這種靠api實現(xiàn)的算法,在不同api的硬件上無法實現(xiàn),不適合制作多人游戲,總不能你N卡可以看到一堵墻碎成粉末但是A卡用戶只是看到墻體憑空消失吧?
同樣是havok,版本也千差萬別,而physx不同版本區(qū)別不大,而且havok不光是 物理模擬,是一整套游戲開發(fā)組件,包括AI(行為),動作等在內(nèi)的都有涉及
參考資料 >