游戏引擎架构 第12章 碰撞及刚体动力学笔记

碰撞测试及解析几何

1. 点与球体的相交

判断点p是否在球体内,生成球心到该点的矢量,然后根据矢量长度与球半径判断。

2. 球体与球体相交

基本同上

3. 分离轴定理

若能找到一个轴,两个凸形状在该轴投影不重叠,则不想交。

三维中,投影线变为投影面。

4. AABB与AABB的相交(判断线段与立方体是否相交)

包围体类型包括球体、轴对齐包围盒(AABB)、有向包围盒(OBB)、8-DOP以及凸壳

检测在每个轴上的最小,最大坐标。如果在3个轴上的区间都重叠,则AABB是相交的,否则不相交。

5. GJK算法

依赖于闵可夫斯基差,A图形中点,与B图形中点成对相减,得到的差集合就是闵可夫斯基差

如果相减,其中包含0,则为相交。

两个凸图形的闵可夫斯基差也是凸图形。

算法流程:

从闵可夫斯基的凸包内,尝试找一个包含原点的四面体,如果找到,则相交。

性能优化

1. 空间划分,不属于同一区域,停止检测

2. 时间一致性

3. 粗略阶段,中间阶段,精确阶段

碰撞查询

光线投射,形状投射

刚体动力学,比较基础,这里就不做介绍了。

一般来说,物理世界存在多个刚体,可以分为三种情况。

1. 0个刚体

2. 1个刚体(大多数情况)

3. 多个刚体

特别注意:

可破坏体

猜你喜欢

转载自blog.csdn.net/nineship/article/details/106986337
今日推荐