Presentation is loading. Please wait.

Presentation is loading. Please wait.

第15章 游戏中的物理引擎.

Similar presentations


Presentation on theme: "第15章 游戏中的物理引擎."— Presentation transcript:

1 第15章 游戏中的物理引擎

2 物理引擎 物理引擎通过给物体赋予真实的物理属性来模拟物体的运动,包括碰撞、移动、旋转等。
并不是所有的游戏都必须使用独立的物理引擎,一些简单的游戏的物理功能可以通过自行开发碰撞检测及实现力学公式来实现对刚体及质点的模拟。 当游戏需要实现比较复杂的刚体碰撞、滚动或者弹跳时,通过全部自行编程的方式实现就非常困难,成本也很高。可以使用独立的物理引擎来模拟物体的运动,使用物理引擎不仅可以得到更加真实的结果,对于开发人员来说也比自行开发要耗时短、效率高。 一款好的物理引擎不仅会帮助实现碰撞检测、力学公式模拟,而且还会提供很多机械结构的实现,如滑轮、齿轮、铰链等。 更高级的物理引擎不但可以提供刚体的模拟,甚至还可以提供软体及流体的模拟,这些都能帮助游戏提升真实感和吸引力。

3 常见的物理引擎 物理引擎 名称 Havok PhysX Bullet Box2D ODE 持有公司/ 人员 Intel Nvidia AMD
物理引擎 名称 Havok PhysX Bullet Box2D ODE 持有公司/ 人员 Intel Nvidia AMD Erin Catto Russell Smith 是否开源 是否支持 C/C++ 最新版本 5.5 2.1.2 2.78 0.11.1 文档情况 详细 尚可 一般

4 1. Havok Havok成立于1998年,总部位于都柏林。在2000年游戏开发者大会上发布了Havok 1.0 ,最新版本为Havok5.5,该引擎基于C/C++。2007年9月,Intel宣布成功收购Havok。之后,Intel宣布Havok引擎开放源代码并允许游戏开发人员免费用于非商业用途。 由于Havok的开放性和不依赖特定硬件的特点,很多大型游戏均使用Havok引擎。其中著名的有星际争霸2、暗黑破坏神3等。 2011年3月6号,Intel宣布Havok引擎开始支持Android。

5 Havok引擎工作流程

6

7 2. PhysX PhysX不仅可以由CPU计算,而且其程序本身在设计上可以使用独立的浮点处理器来计算。正是由于这个原因,其可以非常轻松地完成像流体力学那样计算量非常大的物理模拟计算。该引擎可以在Windows,Linux,Xbox360,Playstation3,Mac等多种平台上运行。 到目前为止在X86-PC平台上,共有222种游戏采用PhysX引擎。被大家熟知的有雪域危机、虚幻竞技场3。

8

9

10

11

12

13

14

15

16

17

18 3. Bullet Bullet是一款开源的物理引擎,是AMD开放物理计划成员之一。同时其也是一个跨平台的物理引擎,支持Windows、Linux、MAC、Playstation3、XBOX360以及Nintendo Wii等主流平台。 使用Bullet物理引擎开发的游戏主要有侠盗猎车4,其效果如图10-5所示。同时使用该引擎制作的电影也不乏好莱坞大作,如2012就是使用的该引擎。

19 4. ODE ODE(Open Dynamic Engine)是一款免费的具有工业品质的刚体动力学引擎。其可以非常好的仿真现实中物体的移动、旋转等,具有快速、强健和可移植性,并且内置碰撞检测系统。ODE 目前可以支持球窝、铰链、滑块、定轴、角电机和 hinge-2等连接类型,还可以支持各种碰撞形式(如球面碰撞和平面碰撞)和多个碰撞空间。 应用不如前几种广泛。

20 5. Box2D Box2D是一款非常著名的2D物理引擎,主要用于2D刚体仿真。 有C++、Flash和Java等版本。
非常受欢迎的游戏《愤怒的小鸟》就是基于该引擎开发的。

21 2D的王者JBox2D JBox2D是开源的物理引擎Box2D的Java版本,可以直接用于Android。由于JBox2D的图形渲染使用的是Processing库,因此在Android平台上使用JBox2D时,图形渲染工作只能自行开发。该引擎能够根据开发人员设定的参数,如重力、密度、摩擦系数和弹性系数等,自动地进行2D刚体物理运动的全方位模拟。

22 Box2D核心概念 刚体(rigid body) 一块十分坚硬的物质,它上面的任何两点之间的距离都是完全不变的。 形状(shape)
一块十分坚硬的物质,它上面的任何两点之间的距离都是完全不变的。  形状(shape) 一块严格依附于物体(body)的 2D碰撞几何结构(collision geometry)。形状具有摩擦(friction)和恢复(restitution)的材料性质。 约束(constraint) 一个约束(constraint)就是消除物体自由度的物理连接。在 2D中,一个物体有 3个自由度。如果把一个物体钉在墙上(像摆锤那样),那就把它约束到了墙上。这样,此物体就只能绕着这个钉子旋转,所以这个约束消除了它 2个自由度。  接触约束(contact constraint) 一个防止刚体穿透,以及用于模拟摩擦(friction)和恢复(restitution)的特殊约束。接触约束会自动被Box2D创建。  关节(joint) 它是一种用于把两个或多个物体固定到一起的约束。Box2D支持的关节类型有:旋转,棱柱,距离等等。关节可以支持限制(limits)和马达(motors)。  关节限制(joint limit) 一个关节限制 (joint limit)限定了一个关节的运动范围。例如人类的胳膊肘只能做某一范围角度的运动。  关节马达(joint motor) 一个关节马达能依照关节的自由度来驱动所连接的物体。例如,你可以使用一个马达来驱动一个肘的旋转。  世界( world) 一个物理世界就是物体,形状和约束相互作用的集合。Box2D支持创建多个世界,但这通常是不必要的。


Download ppt "第15章 游戏中的物理引擎."

Similar presentations


Ads by Google