bv检测

分析碰撞检测库Opcode

ぐ巨炮叔叔 提交于 2020-01-01 22:06:19
一.概述 Opcode 是一个开源的碰撞检测库,其最大的特点是占用内存少(与其他的碰撞检测库相比而言),对一个完全二叉树中的每个三角形仅用 20 字节,所以它的文档中说是“ Memory-optimized bounding-volume hierarchies ”。 在碰撞检测中,利用检测树( Bounding-volume hierachies )结构进行碰撞排除是最普遍的方法(如 RAPID , SOLID , QuickCD,PQP 都是如此), Opcode 也不例外, Opcode 中默认的包围盒是 AABB 。就是说若用 Opcode 进行一个 Mesh 的碰撞检测,则它会为此 Mesh 建立 AABB 树。 Opcode 可以对以下情况作出检测: - Mesh-mesh - Sphere-mesh - Ray-mesh - AABB-mesh - OBB-mesh - Planes-mesh 二.检测过程 调用 Opcode 的代码做检测时主要包含三部分: 1. 为 Mesh 生成碰撞树 这涉及到 Opcode 中的 Model 类和 OPCODECREATE 类, Opcode 建立碰撞树分两步:首先建立一般的树(这个树最后被遗弃),然后利用一般的树建立一个优化的树。 Opcode 可以建立的四种树(关于这几种树在后面的内存优化部分会讲到): - Normal