Notifications
Article
东汉末年枭雄志之游戏物理引擎
Updated 20 days ago
950
1
东汉末年战火连绵,各路英雄并起,斗智斗勇,而后天下三分。在游戏物理引擎的世界中亦是如此。
在今年的游戏开发者大会2019(GDC)上,Unity 宣布将Havok物理引擎纳入麾下,这不仅仅意味着所有Unity 用户都能使用这款著名的物理引擎,是不是也意味着Unity 在未来可以支持更多的模拟后端,来满足不同的使用需求呢?一时让人产生无限遐想......
追溯游戏引擎发展史,游戏引擎已经进化成为由许多个相互联系又相互独立的子系统耦合而成的复杂系统,主要包括图形渲染系统、资源管理系统、音频与视频系统、物理引擎系统、网络通信系统、脚本系统、人工智能系统等等。这其中物理引擎是游戏引擎技术的主要组成部分,它侧重实现游戏世界中的物理效果,如基本的运动建模、光影效果、碰撞检测以及复杂的群组控制、流体模拟、粒子特效等。从而使得游戏虚拟世界中的表现效果具有真实感。随着游戏行业的迅猛发展,游戏玩家对游戏中表现效果的真实性与合理性提出了越来越高的要求,因此在游戏体验中如何缩小游戏世界与真实世界的对比差距,游戏的物理引擎起到了决定性的作用。
因为自己也在尝试架构一个简单的3D游戏引擎,物理系统可以说占了游戏引擎源码中很大的百分比,此系统不但需要写很多代码而且还需要维护!庆幸坊间有许多高质量的物理引擎可供选择,列出几款做下介绍。有强如魏蜀吴三国的PhysX、Havok、Bullet(坊间流传说法不一,个人比较认同:三大物理引擎,其实Bullet如果拿三国作比较,相当于赤壁之战之前的蜀国(PhysX-魏国,Havok-吴国)),也会简单的介绍开源如南蛮王孟获的物理引擎PAL,当然还有其他的强如董卓马超的西凉势力如DMM物理引擎等等。
PhysX原称AGEIA,被NVIDIA招安收购之后,称为:NVIDIA PhysX。NVIDIA将PhysX引擎集成到CUDA架构的物理运算中,这样就可以是GeForce 8/9及GT200系列全部都支持PhysX引擎, 所有目前已使用PhysX技术的游戏都支持新版驱动程序,如果装有支持CUDA平台的显卡,游戏将自动选取显卡进行物理加速运算,否则仍会使用性能较慢的CPU进行运算。此外,PhysX并不只使用于游戏市场,同时亦会运用 CUDA通用运算领域上,应用更广。无论是GPU还是CPU、PPU、Cell(PS3)都可以通过HAL翻译层来实现软、固质体动力(Soft or Rigid Body Dynamics)、通用碰撞侦测(Universal Collision Detection)、有限元素分析(Finite Element Analysis)、流体动力(Fluid Dynamics)、毛发模拟(Hair Simulation),以及更更高级开发平台APEX中的更先进的布料模拟(Cloth Simulation)、自然模拟(Natural Motion)等在内新颖技术。通过过CUDA通用接口,PhysX引擎将NVIDIA GPU中的Thread Scheduler(线程管理器)模拟成Control Engine(控制引擎CE),而Streaming Processors来模拟Vector Processing Engine(矢量处理引擎,VPE),其中CE控制引擎负责任务的指派,相当于PhysX中的主管机构,而真正的物理运算任务则是由VPE矢量引擎来完成,最后通过Data Movement Engine(数据移动引擎DME)输出。
最后简单介绍下AGEIA于2002年由五名技术成员成立。在2005年5月,它在游戏开发者论坛中发表了世界上第一颗采用硬件加速的物理处理器-PhysX,令这间寂寂无名的公司一夜成名。公司名字 "AGEIA" 是取自五名创办人来自的不同地区,分别为美国(America)、德国(Germany)、埃及(Egypt)、印度(India)和美洲(America)。2008年2月4日,NVIDIA宣布收购AGEIA。将来,支援CUDA技术的显卡,就可以硬件支援PhysX加速。PhysX 提高PC、Xbox 360、PlayStation 3 以及Will的版本。
值得注明的是Unity内置NVIDIA PhysX物理引擎。目前为止,在全平台上(PC,Xbox,Playstation)共有约百种已发布的游戏采用了PhysX引擎。其中在PC平台上,共有460个游戏采用PhysX引擎(部分如下表所示)。
Havok是商业物理SDK的绝对标准了,他提供丰富的功能集,并在所有的支持平台上都有极好的性能特征,Havok由一个核心碰撞/物理引擎,加上数个可选的产品构成。这些可选产品包括载具物理系统、为可破坏环境建模的系统,以及一个全功能动画SDK,此动画SDK直接与Havok的布娃娃系统整合。Havok可以在PC、Xbox 360、PlayStation 3 以及Will的版本上运行,并且已经为这些平台个别优化。
自从Havok引擎发布以来,它已经被应用到超过150个游戏之中。最早,使用Havok引擎的游戏大多数都是第一人称射击类别,但随着游戏开发的复杂度与规模越来越大,其他类型的游戏也想要有更加真实的物理表现,而且这款引擎是最早支持DirectX 9的物理引擎之一,是目前世界上最快、最方便的跨平台游戏图形解决方案,也是现今应用最为广泛的物理引擎之一,大量PS2、Xbox平台的游戏采用了Havok引擎。已经有将近100款游戏使用Havok引擎,大家看下面的列表就能够明白Havok引擎的成功是有目共睹的。
《帝国III:发现时代》是第一款支持DircetX 9.0C(Sharder Model3.0)的即时战略大作。有越来越多的其他类型的游戏采用Havok引擎,例如为即时战略游戏类型,Ensemble Studios的帝国时代III与暴雪娱乐的星际争霸II;竞速类型,世嘉公司的音速小子与新力发行的摩托风暴。在软件3D Studio Max和Maya 3D中也能看到已经打包为插件的Havok引擎。
如今Unity也宣布将Havok物理引擎纳入麾下。在当今主机世代中,Havok驱动了超过一半的Top游戏,出色的满足了用户的物理模拟需求。使用Havok的代表游戏如下:
Bullet是一个同时用于游戏以及电影行业的开源碰撞检测及物理程序库。其碰撞引擎和动力学模拟整合在一起,但碰撞引擎也提供了钩子供独立使用或整合至其他物理引擎。Bullet支持连续碰撞检测(continuous collision detection,CCD)。此功能对检测细小高速移动的物体很有帮助。Bullet也是一个跨平台的物理模拟计算引擎。支持Windows、Linux、MAC、Playstation3、XBOX360、Nintendo Wii。Bullet也整合到了Maya和Blender 3D中。在与AMD结盟合作后,Bullet Physics物理引擎可以透过OpenGL或者DirectCompute,使用GPU完成物理模拟计算,这也是AMD开放物理计划的内容之一。
DMM是位于瑞士日内瓦的Pixelux Entertainment 公司开发的一个独一无二的物理引擎(Digital Molecular Matter/数字分子物质)。DMM使用有限元素法去模拟可形变及可破会的物体。DMM包含离线及运行时组件。通过使用 DMM,艺术家将能够创建出外形逼真的物体,同时这些物体还能够移动和针对外力做出反应,就如同是真的一样。植物可以在模拟的微风催过时轻轻摇摆;玻璃可以裂成尖锐的碎片;木材可以弯曲和断裂;石墙可以倾倒坍塌。DMM 甚至支持模拟出肌肉组织,从而使得人物动画能够具备更高级别的真实度。它于2008年面世,曾用于LucasArts 的《星球大战:原力解放(Star Wars: The Force Unleashed)》中,更值得一提的是Pixelux DMM Pluging,基于Pixelux DMM引擎的插件。可以与Maya软件完美结合。在电影《阿凡达》使用了Pixelux DMM插件。
PAL虽然被列于物理引擎之下,但抽象层提供了一个不容忽视的有趣功能。PAL 提供了一个应用中的多个物理引擎的统一接口,这就使得开发人员无需移植就可以为特定的应用使用正确的物理引擎。PAL 的插件架构支持几个先进的开源物理引擎,比如 Bullet、Newton 、OpenTissue、Tokamak 等等。它还支持一些商业的物理引擎,比如在游戏开发领域很流行的 Havok。PAL 的缺点是由于它偏重于通用抽象,因此会限制某个物理引擎所提供的功能。
当然还有多如十八路诸侯之物理引擎,不胜枚举,如下所示
梦想在路上的Melody
浪漫主义Unity爱好者&UUG西安负责人 - Programmer
6
Comments
Kevin Gu
Staff
20 days ago
UIWidgets Developer
有意思!
3