刚体动力学

刚体动力学

  力学研究力(force)怎样影响物体的行为。在游戏引擎中,我们通常特别关注物体的动力学(dynamics),即它人如何随时间移动。游戏中几乎只关注动力学中的经典刚体动力学(classical rigid body dynamics)。模拟中的刚体是完美的固体,不会变形。物理引擎也确保游戏世界中的刚体运动符合多个约束(constraint)。最常见的约束是非穿透性(non-penetration),即物体不能互相穿透。当发现物体互相穿透时,物理系统要尝试提供真实的碰撞响应(collision response)。这是物理引擎与碰撞系统紧密关联的主因之一。

  距离以米(meter/m)度量,质量以千克(kilogam/kg)度量,时间以秒(second/s)度量。此秒杀为MKS系统。刚体的运动可拆分为线性动力学(linear dynamics)旋转动力学(angular dynamics)质心(center of mass,CM/COM)

  弹簧所产生的力,与其从自然静止位置拉伸的距离成正比。F(t)=-kx(t)。

  在2D世界中,所有旋转是绕Z轴发生的。二维刚体的定向(orientation)可以用一个角度表示。

  转动惯量(moment of inertia)代表物体旋转的难改程度。力矩(torque)是一个力对旋转的贡献程度。

  在三维中,刚体的旋转质量由3X3矩阵表示,称为惯性张量(inertia tensor)。此矩阵的主对角性上的元素(Ixx、Iyy、Izz)是刚体绕3个主轴的转动惯量。此矩阵的主对角线以外的元素称为惯量积(product of inertia)。三维中的定向用四元数表示。

  一个物体的能量等于动能+势能。碰撞过程中动能守恒,一部分能量由碰撞流失。

  布娃娃(ragdoll)是模拟人体在死亡或失去知觉时的动作,即整个身体是瘫软的。制作布娃娃的方法是,把一组刚体连接起来,每个刚体代表身体的半刚性部位。例如,我们可能使用胶囊模拟足、小腿等。

  铰链约束(hinge constraint)限制旋转只能绕铰链旋转(只余一个旋转DOF)。无限制铰链容许物体旋转无限个圈。有限铰链令物体只能在预设的角度内绕轴旋转。

  刚体的驱动有3种模式:

    1)物体驱动(physics-driven)

    2)游戏驱动(game-driven):物体系统把对象当作含无穷质量的刚体。

    3)固定刚体(fixed body)

  有时候子弹是以光线投射实现的。在开火的那一帧,我们进行一次光线投射,判断击中了什么物体,并立即把相关影响施于受击的物体。但光线投射方式并没有交待抛射物的行程时间。也没有处理轨道因引力而造成的稍微下隆。

  使用ragdoll时,当角色失去知觉时,布娃娃系统就会介入。

  高级物理功能:

    1)形变体(deformable body)

    2)布料(cloth)

    3)头发(hair)

你可能感兴趣的:(刚体动力学)