游戏物理公式总结
在讲解物理引擎工作原理前,我们快速复习一下相关的物理知识。在游戏开发中,物理模拟涉及很多方面,比如物体的碰撞,特效的粒子,液体,烟雾等。为了描述这些效果,我们通常基于不同的力学体系,下面简单介绍一下。
质点运动学(Particle Kinematics)
描述的对象用质点描述,质点无大小、无形状、不可旋转,仅描述运动轨迹,不考虑力的作用。在游戏中应用:特效粒子系统、动画轨迹等。物理量包括:
位置:
速度:
加速度:
质点动力学(Particle Dynamics)
描述对象是质点,不考虑旋转和形状影响,与质点运动学区别是考虑外力作用。通过牛顿第二定律更新状态,涉及的物理量包括:位置,速度,外力,质量,加速度。游戏中,考虑重力、风力、弹簧的质点效果。
刚体动力学(Rigid Body Dynamics)
对象具有形状,但是不可变形。考虑旋转影响。通过线速度和角度描述运动状态。外力和力矩可以改变运动状态。可以描述碰撞和约束情况。在游戏中多数可交互的物体,例如角色、车辆、道具。
随时间可以变换的物理状态量:位置,姿态(四元数),线速度,角速度。
不随时间变化的物理量:质量,碰撞形状,局域坐标下的惯性张量。
由上面变量推导出其他变量:
线动量
角动量
线加速度和角加速度
主要涉及的方程:
平移运动:
旋转运动:
冲量改变速度和角速度:
弹性体 / 柔体动力学(Deformable Body Dynamics)
对象通过网格来表示形变,通过内部应力和应变关系来改变运动状态。可模拟游戏中布料,绳子,果冻类软体角色和道具。主要涉及的物理量: 网格点位置和速度
内部应力,弹性模量、泊松比。
使用的物理方程:
流体力学(Fluid Dynamics)
研究对象为连续介质,通过速度场、压力场和密度场来描述,通过下面微分方程进行求解。流体可以通过粒子和网格两种方法进行求解。在游戏中,液体和河流的模拟经常使用。 连续性方程:
Navier-Stokes 方程:
多体系统动力学(Multibody Dynamics)
多个刚体,通过关节和约束连接,组成一个系统。在系统的运动状态变化时,通过刚体动力学和约束求解器。主要涉及的物理量包含:刚体的状态量,约束位置和约束力,以及约束推导出的冲量。游戏中载具,连接的关节等。主要原理方程是: 其中为约束雅可比矩阵。
现代游戏引擎
现代的游戏物理引擎,主要是建立在多体系统动力学基础上,通过约束求解器求解系统运动状态变化的。