物理引擎
物理引擎通过赋予刚性对象真实的物理属性来计算运动、旋转和碰撞反映。没有必要为每个游戏都使用物理引擎—简单的“牛顿”物理(比如加速和减速)一定程度上也可以通过编程或者写脚本来实现。但是,当游戏需要更复杂的物体碰撞时、滚动、滑动或弹跳时(例如赛车游戏或保龄球游戏)编程难度更大。物理引擎使用对象属性(动量、扭矩或者弹性)来模拟刚体行为,这样不仅可以得到更真实的结果,而且比编写行为脚本更容易被开发者掌握。一个好的物理引擎允许复杂的机械装置,比如球形接头、轮子、气缸或者铰链。有些还支持非刚体的物理属性,比如流体。物理引擎可以从其他厂商购买,有些游戏开发系统有完整的物理引擎。不过需要注意的是,虽然有些系统说在特性列表中有物理引擎,但实际上是一些简单的加速和碰撞检测属性。
由来
游戏里没有这种东西“物理效果”It 它不允许人们看到运动It 它还在动It 那里只是一堆僵硬的东西。要搞清楚这个问题,其实很简单在以前的游戏中,比如一个油桶破了,物理引擎就会按照游戏设计者事先设计好的脚本爆炸,这也是为什么在以前的3D游戏中,那些物体只会按照原计划做规定的动作。
It 自从游戏中加入了物理引擎后,一切都不同了物理引擎完全突破了以往按照预定脚本执行的方式,而是要求3D游戏中的那些物体按照物理参数运行。这样做的好处是,如果你的显卡和处理器足够强大,物理引擎可以模拟现实世界中各种物体运动的规律。不过所谓的“物理引擎”它不 我指的不是真正的物理效应物理引擎类似于之前理解的3D游戏引擎它是一个面向游戏开发者的平台,让游戏开发者只需要几行代码就可以给游戏添加烟雾等效果,非常方便。
举个简单的例子,几年前没有物理引擎的时候,那个FPS游戏里,一个士兵在一个油桶旁边扔了一个手雷,手雷爆炸,导致油桶爆炸。但是,这个过程相当死板无论手榴弹是扔在油桶的左侧还是右侧,油桶都只会按照预先设计好的样子爆炸,不会有什么区别。如果有实体发动机,扔在油桶左侧或右侧的手榴弹会有不同的爆炸效果,石头会以不同的角度飞溅,烟雾会慢慢升起…通过物理引擎,实现这些对象之间交互的效果是相当简单的。这是物理计算的初步印象虽然这个设计有点意思,但总让人觉得物理引擎的效果仅限于爆炸后石头乱飞的那些场景,有点单调。
应用
当NVIDIA宣布正式收购Ageia和该公司 的PhysX物理硬件和软件组件,每个人都期待NVIDIA会推出一些关于物理计算的新东西。果然,现在当NVIDIA发布Forceware 177的时候,.79,也就是说GeForce 8/9和GT200系列GPU都支持PhysX引擎。这是因为NVIDIA将PhysX引擎集成到CUDA架构的物理运行中。这样显卡就可以自动进行物理加速操作。当然,PhysX在游戏中的应用只是物理引擎众多应用中的一种在整个CUDA通用计算领域,都会有物理引擎,比如计算天体在相互引力作用下的运动轨迹。
这次GDC09上展示的Havok物理引擎包括三个场景,分别是爆破、布料和AI计算。演示平台采用i7 965至尊版处理器,配HD4870X2显卡,运行效果流畅。不过唯一的惊喜是Havok物理引擎并不是专门为ATI显卡设计的,它可以支持OpenCL架构(布料演示是基于OpenCL架构开发的)也就是说,NVIDIA s GeForce 8以上的显卡也很有可能支持Havok物理引擎。
技术
PhysX在游戏中有粒子、流体、软体、接头和织物的五种应用。
粒子
所谓质点运动,主要是指大规模的物理运动,比如前面提到的用手榴弹引爆油桶后形成的碎石头、冲击波造成的飞尘效果,如果全部用传统CPU计算,无疑是相当困难的。
流体
而流体运动更多的是展现水从水管中喷出,击中物体后,物体的表现,比如木箱被掀翻。而且翻倒的木箱每次都向不同的方向翻倒比如在N ⅵ DIA LOGO形状的玻璃容器中,用鼠标控制玻璃容器的位置,让容器中的液体流动这种流动的效果与现实中的非常接近。
软体
在nⅵ dia展示的演示画面中,还有一个“食人花”的场景。It 这是一朵巨大的食人花(也可以说是花形怪物)被抓住后,玩家用激光攻击食人花,然后这朵花“花”就会作出反应。这种柔软的身体扭动起来很像现实生活中见到的蛞蝓之类的昆虫,感觉还挺恶心的。
物理
至于在关节和面料上的应用,文章开头已经提到,美女在t台上以夸张的肢体姿态行走动作虽然夸张,但没有虚假成分在里面,这是传统3D游戏很难做到的。并且裙子随着关节的运动而摆动。
可见,所谓物理效果,就是模仿游戏中真实物理世界的运动方式在游戏中,每个人甚至可以感觉到盒子、石头、布和那些恶心的无脊椎动物的触感是什么。游戏之所以能做到这么多动态效果,是因为物理操作。