子弹物理中物体之间的最小距离

Miminum distance between objects in Bullet Physics

本文关键字:距离 子弹 之间      更新时间:2023-10-16

是否有可能计算子弹物理中两个碰撞对象之间的最小距离?

凹面物体呢?也许它需要凸分解?

甚至点到物体的距离计算器也很有用。

作为库的作者告知,在子弹头链接中没有正距离信息。从碰撞测试中提取这些信息很容易,但是您需要自己修改Bullet碰撞检测。对于不同的形状对,有许多碰撞算法,但每一种算法都在某个阶段处理有关距离的信息。

然而,还有另一种获得两个物体之间近似距离的推荐方法。你可以从第一个物体的中心到第二个物体的中心进行射线测试,存储碰撞点(它应该位于第二个物体的船体上)。接下来执行反向测试(从第二个对象到第一个对象)并计算两个存储点之间的距离。当然你需要检查被击中的对象是否就是你想要计算距离的对象。如果它们之间有障碍物,它将不起作用。

要执行射线测试,您需要btCollisionWorldrayTest(const btVector3 &rayFromWorld, const btVector3 &rayToWorld, RayResultCallback &resultCallback)方法。用法示例可以在这里找到。

如果你想要更准确,你可以使用convexSweepTest法进行扫球测试,而不是投射一条射线。

你需要注意,这些方法只提供近似解,因为不能保证命中点是最接近的。然而,它们对于大多数应用来说已经足够了。