Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

宽相和窄相检测

想象一下:在一个包含N个物体的场景中,潜在的碰撞对有 N*(N-1)/2 个,即 O(N²) 的复杂度。对于一个拥有数千个物体的现代游戏场景,每秒进行60次这样的暴力检查是完全不可行的。 为了将 O(N²) 的复杂度降低到可控范围,碰撞检测系统通常被设计为一个漏斗状的过滤管线,分为两个主要阶段:

  • 宽相(Broad Phase):此阶段的目标是使用非常快速但可能不精确的方法,大规模地剔除那些“绝对不可能”发生碰撞的物体对。它就像一个粗略的筛子,允许一些“误报”(False Positives,即报告可能碰撞但实际没有),但绝不允许“漏报”(False Negatives)。其输出是一个“潜在碰撞对”列表。

  • 窄相(Narrow Phase):此阶段接收宽相的输出,并对每一个潜在碰撞对进行精确的、基于其真实几何形状的相交测试。这是一个计算成本较高的过程,但只针对少数物体对执行。它的任务是最终确认碰撞是否发生,如果发生,则计算出碰撞的详细信息,即接触流形(Contact Manifold),通常包括接触点(Contact Point)、接触法线(Contact Normal)和穿透深度(Penetration Depth)。这些信息将传递给碰撞响应系统。