DirectXCollision-有没有获得更多交叉口信息的方法?

DirectXCollision-有没有获得更多交叉口信息的方法?,directx,collision-detection,collision,directx-11,directxmath,Directx,Collision Detection,Collision,Directx 11,Directxmath,我一直在做一个简单的3D刚体模拟器,现在我需要处理物体之间的碰撞。到目前为止,与DirectXTK的SimpleMath一起使用新的DirectXMath是一个巨大的帮助 我一直在使用DirectXCollision库中的BoundingBox和BoundingOrientedBox类,它们非常适合确定两个对象是否相交,但除此之外不提供任何其他信息。我需要能够检索接触点和相交法线,以便正确计算刚体响应 我的问题是-是否有任何方法可以使用DirectX库检索这些信息,或者我应该学习它并实现我自己的

我一直在做一个简单的3D刚体模拟器,现在我需要处理物体之间的碰撞。到目前为止,与DirectXTK的SimpleMath一起使用新的DirectXMath是一个巨大的帮助

我一直在使用DirectXCollision库中的BoundingBox和BoundingOrientedBox类,它们非常适合确定两个对象是否相交,但除此之外不提供任何其他信息。我需要能够检索接触点和相交法线,以便正确计算刚体响应

我的问题是-是否有任何方法可以使用DirectX库检索这些信息,或者我应该学习它并实现我自己的方法?

是和否

使用DirectX数学库,您可以获得非常基本的形状与非常基本的形状(如三角形平面)相交的详细信息。但对于更复杂的交点,如光线盒、长方体等,您只有基本的(“真、假”或“-1、0、1”)信息

因此,解决方案:

  • 您可以基于DirectX数学库原语为长方体推出自己的交集函数。您将重新发明轮子(部分),但这将允许您保持现有计算代码不变。虽然不需要编写太多代码,但您需要在算法中大量使用goggle,并将其牢记在心。最后,它可能真的很难看
  • 您可以使用另一个库,例如Bullet,其中现在有大量可用的交叉点类型。它们已经过调试,准备就绪。但是,如果DirectX数学代码是深度集成的,那么您可能需要彻底删除所有的DirectX数学代码
  • 您可以为现有接口创建一个抽象层(适配器)。无论是现在还是将来,您都可以快速交换任何您喜欢的实现。但这必须以一种聪明的方式来完成,因为这种额外的间接层次会减慢你的超快速数学。这是一个相当多的编码和后期调试和痛苦,但它是值得的
希望能有所帮助。
快乐编码!;)

我会探索一些类似的东西,我曾想过使用一个库,但我认为这对我的问题来说是一个沉重的解决方案。我会看一看子弹,似乎是更好的子弹之一谢谢你,放下。我想我会选择最后一条路线,现在插上子弹进行交叉口检测,以后可能会自己开。