zoukankan      html  css  js  c++  java
  • 刚体动力学

    刚体动力学

      力学研究力(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)

  • 相关阅读:
    python学习笔记- day10-4【问题:为什么python的多线程不能利用多核CPU?】
    python学习笔记-day10-3【日志模块logging】
    python学习笔记-day10-2【多进程,多线程】
    python学习笔记-day10-01-【 类的扩展: 重写父类,新式类与经典的区别】
    day12-HTML基础之DOM操作
    day12-HTML基础之CSS
    HTTP原理
    day12-HTML
    day11-Jenkins
    day11-python学习笔记(二十六)yaml,ddt
  • 原文地址:https://www.cnblogs.com/tekkaman/p/3647566.html
Copyright © 2011-2022 走看看