物理引擎设计研究.docx
《物理引擎设计研究.docx》由会员分享,可在线阅读,更多相关《物理引擎设计研究.docx(4页珍藏版)》请在冰豆网上搜索。
龙源期刊网
物理引擎设计研究
作者:
奚焱
来源:
《科学与财富》2011年第11期
[ 摘要]基于物理学原理的计算机动画改变了传统的动画制作方法,使计算机动画中物体的运动更加自然真实。
物理引擎为模拟刚性物体的运动、碰撞和旋转提供了方便。
本文对物理引擎技术进行了介绍。
[ 关键词]物理引擎计算机动画刚体模拟
1、引言
作为计算机图形学的一个重要分支,计算机动画是计算机图形学与艺术相结合的产物,它综合利用计算机科学,艺术,数学,物理和其他相关科学知识在计算机上生成运动的,真实的,绚丽的图像,给人提供了展示个人想象力和艺术才能的新天地。
计算机动画中,人们不仅要求形象的真实感,也要求运动的真实感。
早期的计算机动画依靠动画制作者的经验,采用逐帧手工绘制的方式完成物体的运动动画。
而现实运动往往比较复杂,依靠人的经验难以制作出真实的效果。
于是,人们开始借助真实世界的物理规律来体现运动过程。
基于物理的计算机动画一方面增强了运动动画的真实感;一方面减轻了动画制作者的工作负担,提高了动画制作的效率。
在动画制作中,制作者只需要指定物体的各种属性,初始物理状态,物体的运动动画则可以通过计算自动生成。
随着电子游戏的发展,人们意识到游戏是物理动画应用的另一块热土。
因为在游戏中,一切都是可以实时交互的。
物体间各种真实复杂的交互影响只可能通过模型计算来实现。
然而游戏对实时性的要求非常高;这就使得物理计算必须满足可接受的空间性与时效性。
这一方面通过提供硬件水平来实现;另一方面通过对算法的优化改良甚至简化加以快速实现
2、物理引擎发展历史
2004 年,第一人称射击游戏HalfLife2发售。
HL2第一次将大规模的刚体物理模拟加入到游戏中,并引入了有名的“布娃娃系统”(RagDollSystem)。
“布娃娃系统”是一种关节动画,用于表现无内力作用的人体运动(就好像没有生命的布娃娃),如炸飞到空中的尸体。
HL2的成功使得物理引擎的概念为世人熟知并逐渐成为大型第一人称射击游戏的标准。
一方面,越来越多的各种类型的游戏开始尝试使用物理引擎来加强游戏体验。
另一方面,消费者也对游戏物理模拟有越来越高的需求。
面对日益攀高的游戏制作标准,硬件性能总体上还是很不足的。
这就要求物理引擎的设计即要考虑效果上的实现,也要权衡性能速度。
3、物理引擎技术介绍
物理引擎通过为刚性物体赋予真实的物理属性(动量、扭矩或者弹性)的方式来计算运动、旋转和碰撞反映,以模拟刚体的行为。
并不是每个游戏都必须使用物理引擎,可以通过编程或编写脚本在一定程度上实现简单的牛顿定律,例如加速或者减速。
但是,使用物理引擎可以得到更加真实的结果,对于开发人员来说也比编写行为脚本要更加容易掌握;因为,当游戏需要比较复杂的物体碰撞、滚动、滑动或者弹跳的时候(比如赛车类游戏或者保龄球游戏),通过编程的方法就比较困难了。
好的物理引擎允许有复杂的机械装置,像球形关节、轮子、气缸或者铰链。
有些也支持非刚性体的物理属性,比如流体。
物理引擎可以从另外的厂商购买,而一些游戏开发系统具备完整的物理引擎。
4、物理引擎设计思想
物理引擎的设计包含以下三个方面。
4.1整体框架
物理引擎是一个被游戏引擎使用的框架。
它负责接管游戏中物体的碰撞检测并根据各类物理模型进行处理。
框架是构成一类特定软件可复用设计的一组相互协作的类。
它通常定义了应用体系的整体结构类和对象的关系等等设计参数,以便于具体应用实现者能集中精力于应用本身的特定细节。
框架主要记录软件应用中共同的设计决策,框架强调设计复用,因此框架设计中必然要使用设计模式。
4.2物理模型应用
游戏中不仅需要对各种物理模型进行应用,还需要将这些物理模型整合在一起,这包括:
尽可能统一各种类模型的表现;尽量统一各类模型的计算方法;各类模型间可以产生相互作用;有效的碰撞检测机制。
物理引擎中,提供给游戏引擎使用的产品,产品的定义与接口,计算方法以及碰撞检测策略都是由物理模型决定的;因而物理引擎的本质是物理模型。
物理模型应用不仅包括对不同类型物体的物理模拟;也包括对不同类型物理模型的整合统一,让它们可以在游戏世界中能够产生交互影响。
4.3渲染方案
虽然图像渲染并不包含在物理引擎中,但对某些模拟模型,需要结合特定的渲染方法以达到特定的效果。
5、常见的物理引擎
5.1Havok
Havok ,全称为HavokGameDynamicsSDK,译作Havok游戏动力开发包。
人们经常说到的,与PhysX相提并论的Havok物理模拟引擎,只是Havok引擎中的一部分而已。
Havok 物理引擎。
业界领先的实时碰撞计算和物理仿真解决方案,提供快速高效率的物理模拟计算。
被200多个游戏所采用,且HavokPhysics引擎可以运行在Windows、Linux、
MAC、XBOX360、Playstation3等全平台上。
HavokPhysics是整个Havok引擎的基础。
HavokPhysics 物理引擎是业界功能最全面的物理仿真解决方案,它可以应用在诸如实时碰撞计算、动力学约束求解、车辆综合解决方案等领域。
5.2PhysX
PhysX,读音与Physics相同,是一套由AGEIA(音译为“阿吉亚”或“奥加”)公司开发的物理运算引擎;也是世界三大物理运算引擎之一。
AGEIA公司还为PhysX引擎设计了专门的运算硬件,PhysX物理加速卡。
PhysX物理加速卡的核心被称为PPU,即物理处理器(PhysicsprocessingUnit)。
PhysX 可以由CPU计算,但其程序本身在设计上还可以调用独立的浮点处理器(例如
GPU和PPU)来计算,也正因为如此,它可以轻松完成像流体力学模拟那样的大计算量的物理模拟计算。
PhysX 物理引擎可以在包括Windows,Linux,Xbox360,Playstation3,Mac等在内的全平台上运行。
5.3Bullet
Bullet 是一个开源的物理模拟计算引擎,世界三大物理模拟引擎之一(另外两种是Havok和PhysX)。
广泛应用于游戏开发和电影制作中。
Bullet也是AMD开放物理计划成员之一。
Bullet 是一个跨平台的物理模拟计算引擎。
支持Windows、Linux、MAC、Playstation3、
XBOX360、NintendoWii。
Bullet也整合到了Maya和Blender3D中。
大部分的物理引擎都是通过CPU完成物理模拟计算,目前仅有nVIDIAPhysX可以调用
GPU完成物理模拟计算且将其实用化。
GPU有着CPU无法比拟的并行计算和浮点计算能力,而复杂的物理模拟计算(例如流体模拟和柔性物体模拟)却十分依赖并行计算能力和浮点计算能力。
在与AMD合作后,BulletPhysics物理引擎可以透过OpenCL或者DirectCompute,使用
GPU完成物理模拟计算,这也是AMD开放物理计划的内容之一。
但是这项计划目前尚没有游戏支持,仅有几个技术演示DEMO。
6、结束语
基于物理的计算机动画是从二十世纪八十年代发展起来的一种新的计算机动画技术。
在二十年的发展历程中,已有许多研究者对动力学方程在计算机动画中的应用做了深入广泛的研究,提出了若干行之有效的算法。
物理引擎的发展也是日新月异,越来越多的游戏使用物理引擎模拟物体的运动行为,越来越多的操作系统支持物理引擎。
本文介绍了物理引擎的发展历史、主要作用、设计思路,并简单介绍世界三大物理引擎,除此之外还有很多其他物理引擎例如:
ODE、TOKAMAK、Box2D等。
■
参考文献
[1] 李健.游戏中物理动画应用的研究[D].重庆:
重庆大学,2008.[2]
[3]http:
//zh.wikipedia.org/.