1、游戏开发与编程,第五讲,游戏开发物理学(1),游戏中的物理效果 模型的物理描述 质点动力学的几个模型 例子程序解析 参考网址 下一讲主要内容,游戏中的物理效果,场景布置方面 旗帜或布料的飘动或抖动 水纹 草被拂动(吹动) 物体被击碎 物体被挤压或碰撞变形 角色操作与效果方面 人物或车辆在上坡和下坡时,行进的速度变化 物体(如烟火、球、导弹等)受初速度和重力作用下的运动 人的跳跃 物体滚动和滑动所受阻力 车转弯 车与人(静止物)相撞 子(导)弹击中目标 ,典型的游戏,对于三维游戏来说,如果没有物理效果,这个游戏就是比较失败的赛车,如极品飞车 体育竞技类,如台球、足球 第一人称射击 ,以CS为例,
2、角色动画以及场景中的所有可动物体均采用了Havok的物理引擎,可以打烂的盆盆罐罐、可以击碎的木桶和桌椅、可以滚动的废旧轮胎又如Ragdoll效果、人物骨架模拟系统以及零零星星作用在小物件上的重力、脆性、韧性等方面的细节CT长廊通往T基地的木门外,有两个油桶,CT在布防的时候用消声的USP将其击倒,便刚好挡在木门缝隙的正面,T在涌出木门时必须跳起,以避免Ragdoll的影响,这样就能在一定程度上阻止T方对长廊的快攻,赢取一定的时间。,跳跃,在CS:Source中,由于Ragdoll效果的加入,玩家将不能站在圆形或者可动的物体表面,试图跳上这些物体的时候会有明显的滑落感觉。团队推进到一些高点以及屋
3、脊上变得困难。但由于CS:Source中也许是对重力参数做出了修正,也许是因为某些地形的关系,在1.6中齐眉高的木箱是绝对不可能跳上去的,但在CS:Source中只要采用技巧稍微高一点的旋跳即可推进到这些物体的顶端,玻璃击碎的效果,汽车攻击战斗画面,幽灵行动画面,模型的物理描述,基本属性 质量 质心 转动惯量 几何形状 状态描述 位置 姿态 线速度 角速度 加速度 几何形状 ,物理引擎即是确定每一时刻模型的状态,牛顿定律,第一定律物体在无外力作用下,会保持静止不动,或持续作匀速直线运动 第二定律物体加速度与作用于该物体上的合力成正比,其加速度方向与作用力方向相同 第三定律对于所有作用在物体上的
4、力(作用力),都会有一个大小相同但方向相反的作用力,且作用力与反作用力处于同一条直线上,质点动力学,牛顿定律 弹簧阻尼模型 摩擦力 流体动阻力,第二定律,弹簧阻尼模型,摩擦力,流体动阻力,简单的绳子模型,绳子由一组质点组成 质点之间由弹簧阻尼连接起来 一端固定 运动过程受空气阻力 绳子初始处于水平,下面有固定平面 在绳子落到平面上后,弹性接触,在平面内摩擦力,两个例子程序解析,Nehe39 Nehe40,质点,class Mass public:float m; / The mass valueVector3D pos; / Position in spaceVector3D vel; / V
5、elocityVector3D force; / Force applied on this mass at an instanceMass(float m) / Constructorthis-m = m;void applyForce(Vector3D force)this-force += force; / The external force is added to the force of the massvoid init()force.x = 0;force.y = 0;force.z = 0;void simulate(float dt) vel += (force / m)
6、* dt; / Change in velocity is added to the velocity./ The change is proportinal with the acceleration (force / m) and change in timepos += vel * dt; / Change in position is added to the position./ Change in position is velocity times the change in time;,质点容器类,维护质点关系模型,参考网址与书籍,David M. Bourg 游戏开发物理学 2004 http:/ http:/ http:/ http:/ http:/ 粒子系统 粒子系统的应用 汽车运动模拟 数值积分,