本文介绍: – 物理引擎的用途: – 碰撞检测 – 解决碰撞、其它约束限制 – 更新所有物体的世界坐标(world Transform)

Collision Detection

  • 碰撞检测:东西是否撞上了
碰撞检测的两个阶段 方法
粗筛 1. 直接用AABB找到相交的刚体

2. 找到潜在的重叠刚体对

1. BVH Tree

2. Sort and Sweep

细筛 1. 进一步检测重叠

2. 得到相交信息

1. 相交点

2. 相交法线

3. 穿透深度

1. Basic Shape Intersection Test

2. MinkowskiDifference-based Methods

3. Separating Axis Theorem

  1. Basic Shape Intersection Test
圆与圆碰撞 圆与胶囊体碰撞 胶囊体与胶囊体碰撞
在这里插入图片描述 在这里插入图片描述 在这里插入图片描述
  1. MinkowskiDifference-based Methods
碰撞 未碰撞
在这里插入图片描述
在这里插入图片描述
  1. Separating Axis Theorem(SAT)
  • 一定能找到一根轴,分离两个凸包
碰撞 不碰撞
2D 情况 在这里插入图片描述 在这里插入图片描述
3D 情况 在这里插入图片描述 在这里插入图片描述
  • 连续碰撞检测 Continuous Collision Detection(CCD)

Collision Resolution

  • 如何处理碰撞?分离
方法 具体方法
加入Penalty Force分离 加一个反向的惩罚力
转为约束问题 解决速度约束 不断尝试给一个冲量
解决位置约束 见 ragdoll – joint constraints

应用与实践

Character controller

  • 反物理的系统:摩擦力无穷大
  • 用 Kinematic Actor
    • 不受物理规则影响
    • 推动别的物体
  • 形状
    • 双层胶囊
  • Sweep test
    • 与物体碰撞后,往旁边平移
  • Stepping 爬楼梯
    • 尝试往上提,再往前走

Ragdoll

在这里插入图片描述

  • 人体的 joint 约束(joint constraints)
Hinge

铰链

Ball-and-socket 球窝 Pivot 枢轴 Saddle

鞍状

Condyloid

髁状突

Gliding

滑行

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注