Havok物理引擎不完全指南--从入门到放弃

时间:2024-02-16 16:05:30

Havok概述

img

  Havok,全称为Havok Game Dynamics SDK,译作Havok游戏动力开发包。人们经常说到的,与PhysX相提并论的Havok物理模拟引擎,只是Havok引擎中的物理部分而已。

  Havok成立于1998年,总部位于爱尔兰首都都柏林。2000年在游戏开发者大会上发布了Havok 1.0 。2.0版本在2003年的游戏开发者大会上发布;4.5版本在2007年3月释出,最新版本为5.5 ,引擎基于C/C++语言而成。2007年9月,Intel宣布收购Havok,之后不久,Intel宣布Havok引擎开放源代码并允许游戏开发人员免费使用。

  Havok专注于游戏的仿真技术。其包含的Havok Physics物理引擎是物理模拟计算引擎界的领军者,世界三大物理引擎之首。(排名第二的是NVIDIAPhysX,第三的是Bullet)。

  自2000年Havok 1.0版本发布以来,采用Havok引擎开发的游戏(全平台)已超过280种。由于Havok的开放性以及不依赖特定硬件支持的特点,很多游戏大作都采用Havok引擎。例如:《星际争霸2》、《暗黑破坏神3》、《战地:叛逆连队2》、《失落的星球2》、《半条命2》、《细胞分裂》、《生化危机5》、《孤岛惊魂2》、《辐射3》、《求生之路》、《正当防卫》、《波斯王子:遗忘之沙》、《争分夺秒》、《星球大战:原力释放2》、《闪点行动:龙之崛起》等。

  Havok是Intel公司旗下产业,但是仍然与AMD公司保持良好的合作关系;Havok引擎是AMD”开放物理计划“的核心成员之一(另两个成员是Bullet和PixeluxDMM),计划中可以利用AMD Radeon HD4000系列以上的显卡进行物理加速计算。不过这项计划尚在开发中,除了几个演示DEMO外,尚没有游戏支持。

​ 北美时间 2015 年 10 月 2 日,微软宣布已经收购 Intel 旗下游戏开发引擎公司 Havok。

​ 在2019年游戏开发者大会2019(GDC)上,Unity宣布将Havok物理引擎加入到Unity中,在Package Manager包管理器上发布其预览版本包,这意味着所有Unity用户都能使用起这款著名的物理引擎。在当今主机世代中,Havok驱动了超过一半的顶尖游戏,出色地满足了用户的物理模拟需求。

Havok的组成

Havok其实由七个部分组成

Havok Physic

  Havok物理引擎。业界领先的实时碰撞计算和物理仿真解决方案,提供快速高效率的物理模拟计算。被200多个游戏所采用,且Havok Physics引擎可以运行在Windows、Linux、MAC、XBOX360、Playstation3等全平台上。Havok Physics是整个Havok引擎的基础。

  Havok Physics物理引擎是业界功能最全面的物理仿真解决方案,它可以应用在诸如实时碰撞计算、动力学约束求解、车辆综合解决方案等领域。

  Havok Physics基于CPU计算,尤其是在Intel收购Havok之后,Havok特别针对多核多线程CPU进行优化。多线程CPU的普及以及Havok Physics引擎本身的高效率特点,使得Havok仅仅依靠CPU计算就能达到很好的物理模拟效果。

img

Havok FX

  针对爆炸效果等大计算量的物理模拟,Havok曾经推出过Havok FX引擎。Havok FX引擎也是一种物理模拟计算解决方案,由CPU+GPU联合计算完成。GPU负责爆炸等大计算量的物理模拟。Nvidia与ATI都曾经与Havok就Havok FX进行过深入的合作。但是Intel收购Havok后,由于Intel本身不能生产独立的GPU,Havok FX发展就陷入停滞,虽然Intel官方没有宣布Havok FX引擎下马,但实际上Havok FX已经被Intel雪藏。

  这也就意味着,ATI显卡虽然理论上支持Havok FX物理加速,但是由于Havok引擎中GPU计算部分已经停滞发展,所以ATI显卡的Havok物理加速只是有枪无弹,缺少游戏支持。这也是后来AMD启动“开放物理计划”的原因之一。

Havok Animation

  Havok动作引擎。是一种高效灵活的动作开发工具。在全平台上提供经过优化的回放和实时融合特性,并能与Havok Physics引擎完美合作,提高游戏的可玩性。

  Havok动作引擎的特点包括:高效动画压缩和解压;运动混合;根据速度、方向和重量提供动作控制; 动作缓和曲线支持等。

  如果没有Havok Animation,游戏中车轮不会转动,两腿不会迈开,士兵也不会换弹匣或者蹲、站、跳、卧倒、侧倾。最新版的动作引擎带来流畅的动作,在使用寒霜引擎的ruby demo中,仅ruby脸部就有上百个可动部件,这是前所未有的。值得一提的是很多好莱坞电影大片也是使用Havok Animation。

Havok Behavior

  Havok行为引擎。它可以让游戏中的虚拟人物学会新的行为、动作、战术。你是否曾注意到,在一些采用havok的游戏中,就像《光晕3》和《半条命2》,友好的虚拟人物会转身面向你,会和你产生互动。敌人则不仅会冲向你开火,他们也会寻找 掩护,在《彩虹6号:盾牌行动》之类的战术游戏中,敌人甚至拥有包抄、迂回等战术。集成在寒霜引擎中的Havok Behavior更为强大,例如你会看到虚拟人物弓腰通过,攀爬,或者跳过障碍,遇到爆炸物选择躲避或是捡起来扔回去。

Havok Cloth

  Havok布料模拟引擎。Havok Cloth不是说这个引擎只能模拟布匹的物理特性,而是能模拟一切柔性物体。如衣服,裙子,斗篷,外套、头发、尾巴、旗帜、横幅、窗帘、植物等等。

  Havok Cloth的基本特性包括基于物理的布料模拟、多线程与平台优化、拉伸/阻尼/弯曲等布料行为属性、基于人物模型的布料创建工具等等。

  加入AMD开放物理计划的Havok引擎,就是这个Havok Cloth引擎。AMD曾经展示过一个由HD4870X2组建的,基于ATI Stream和OpenCL,运用Havok Cloth引擎的演示视频。

Havok Cloth引擎演示

Havok Destruction

  Havok刚体破坏引擎。这是一种高效的跨平台的刚体破坏仿真引擎。Havok刚体破坏引擎采用Collision Detection碰撞检测系统,这将有别于以往传统游戏中的hitbox系统。适合造成动态破坏。

  带来前所未有的高范围破坏,可完全毁坏游戏内的所有物体(载具、建筑、桥梁、树木.....)和部分地形

  带来前所未有的高精度破坏,你可以削去飞行中飞机的翅膀或者其他什么地方,也可以炸坏房屋一角,这一切都不是程序编辑好的,不是调用破坏后的模型和 贴图,你可以决定破坏什么部位。

  《战地 叛逆连队2》使用寒霜引擎渲染,寒霜引擎中集成了内部版本的Havok Destruction 2.0版本。这使得游戏中高达99%的建筑都可以被破坏掉。

img

Havok AI

  Havok人工智能引擎。在2009年游戏开发者大会上,Havok展示了Havok引擎家族的新成员:Havok人工智能引擎。

  Havok AI可以帮助游戏开发者更好的进行游戏中人工智能的开发,借助Havok AI SDK开发者可以更容易的设计出更出色、聪明的游戏角色。比如这套工具就包含自动路径搜索功能,可以让游戏角色迅速、动态的自主进行路径规划。

​ 在GDC2009上就展示了一段,士兵躲避着炮火自动搜索安全路径穿过道路的片段,给与会者留下了很深的印象。此外,它还包括各种通用件的组合、网络化的智能集成等。

支持Havok引擎的游戏与软件

全平台Havok引擎游戏

​ 比较著名的Havok引擎游戏包括:《战地3》、《*飞车:亡命天涯》《星际争霸2》、《暗黑破坏神3》、《战地:叛逆连队2》、《上古卷轴4》、《马克思 佩恩2》、《光晕3》、《半条命2》、《细胞分裂》、《生化危机5》、《F.E.A.R》 、《孤岛惊魂2》、《辐射3》、《阿凡达》、《求生之路》、《正当防卫》、《波斯王子:遗忘之沙》、《孢子》、《争分夺秒》、《红色派系:游击战》、《失落的星球2》等  

甚至是辐射4和ns上的塞尔达荒野之息,也是应用到了Havok物理引擎!!!

​ 目前为止,在全平台上,共有353种游戏使用Havok引擎。超过了PhysX的309种。Havok仍然是物理模拟引擎界的领军者。

这是几年前的统计了,现在估计不止了。

使用Havok引擎的软件:

  3ds MAX、Adobe Atmosphere等

使用Havok引擎制作的电影

  《特洛伊》《黑客帝国》等


Havok与PhysX的简单比较

二者关系:竞争对手

​ 2007年,在Intel收购了物理引擎界的领军者Havok后,Nvidia也收购了排名第二的AGEIA。正式将PhysX技术划入旗下。

​ 2008年,Intel使出了扩展Havok物理引擎市场的杀手锏——免费!即使是使用Havok引擎开发商业游戏也完全不需要付费。Havok在授权文档中称,Intel将全数负担所有游戏开发商购买Havok引擎授权的费用。

​ 而intel宣称Havok可以免费使用后,NVIDIA也紧随其后将其开源。

PhysX开源地址:https://github.com/NVIDIAGameWorks/PhysX

效果

​ 所谓PhysX物理加速,是指相对于CPU来讲,GPU加快了PhysX物理引擎的计算速度,仅支持N卡,但也可多平台。

​ Havok引擎具有嵌入性和高效性的特点,随着CPU多线程技术的发展,其仅依靠CPU就能带来良好的物理效果。它可以用CPU计算也可以用GPU计算,而且支持多平台A卡N卡。

宣传及知名度

​ Havok Physic只是个物理引擎,跟硬件无关、操作系统无关,也就是“没后台”,没人愿意打广告(东家Intel不生产最终成品,不最终收钱,所以也不愿意)。

​ 大部分游戏也是使用过Havok Physic,且再加上它被宣布免费,于是何必浪费一个广告位置给Havok呢?

Havok在宣传方面可太惨了,知名度真的低

​ Havok相比physx来说广告打得少很多,于是在普通人眼中名气没有physx那么大,但它仍是一个很好的物理引擎。

​ Havok的历史悠久,使用的开发商比较多,特别是游戏都是PS3XBOX360PC三版本同时出,用Havok的优势更明显(从支持Havok的游戏清单里面就能看出来)

  同样是havok,版本也千差万别,而physx不同版本区别不大,而且havok不光是 物理模拟,是一整套游戏开发组件,包括AI(行为),动作等在内的都有涉及 。


Havok教程

​ 目前国内学习最关键一点是教程非常少,所以新手入门难,所以我在阅读Havok的技术教程文档后部分文档进行了翻译,可在我的博客看到。

​ 然后我查阅了不少资料和博客,包括国内外的,终于找到了难得的Havok相关教程。下面有个不错的英文免费教程,建议配合浏览器的自动翻译进行学习。

​ 最近Unity与Havok的合作也让我看到了比较方便地将Havok运用到Unity上的曙光,之前本来就是这个想法,只是学习过程艰难。

SDK文档和代码:

​ 可以去官网注册请求授权免费的Havok的sdk:https://www.havok.com/about-us/,或者上百度贴吧找到好心人分享的sdk整合包

教程及学习推荐(主要是Havok Physic)

国内:

  1. Havok入门教程:https://me.csdn.net/shangguanwaner
  2. Havok类讲解和应用:https://me.csdn.net/u012942555
  3. Havok笔记:https://blog.csdn.net/ZJU_fish1996
  4. Havok物理引擎与Unity3D的结合:https://blog.csdn.net/Kaitiren/article/details/75041968
  5. 优酷上的Havok的中文视频教程http://i.youku.com/havokengine
  6. Unity中的Havok物理https://blogs.unity3d.com/2019/11/06/havok-physics-in-unity/
  7. 游戏开发者大会2007上Havok演示视频: http://v.youku.com/v_show/id_cg00XMjkxMTc1Ng==.html
  8. 游戏开发者大会2019(GDC)上,Unity宣布将Havok物理引擎加入到Unity中:https://v.qq.com/x/page/w3020iatevv.html

国外:

  1. 《 Havok物理引擎教程系列》https://mmmovania.blogspot.com/2014/03/havok-physics-engine-tutorial-series.html

  2. 《 Havok物理引擎教程系列》的支持存储库:https://github.com/mmmovania/HavokPhysicsTutorials

  3. 一个利用OpenGL和Havok Physics的简单C ++游戏引擎:https://github.com/wobbier/source3-engine

部分资料参考自百度百科

转载标明出处:作者AMzz 博客: https://www.cnblogs.com/AMzz/