计算哪个子对象被光线或碰撞击中?

时间:2016-06-05 17:57:23

标签: python game-physics blender bulletphysics

我有一个使用子弹物理的系统,它使用复合刚体物理,

射击对象儿童的光线投射,只需返回对象,(不是子对象)

要解决这个问题,我使用从命中点到子对象的距离,但这有点天真,因为碰撞体积可以是在3轴上缩放的球体,立方体,胶囊等。

我可以获得对象本地的x,y和z边界维度

我如何使用此信息来检测光线击中了哪个子对象?

我正在考虑对这一点进行某种检查,以及子形状的界限,但它需要非常快,并且使用python。

2 个答案:

答案 0 :(得分:0)

两种可能解决问题的解决方案。

单独的对手

首先,将碰撞器分开并为每个碰撞器分别设置不同的对象,然后以编程方式链接对象并将它们并排移动。这样就不会有<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" /> <div class="wrapper container-fluid"> <div class="row"> <div class="col-xs-2 one">ONE</div> <div class="col-xs-8 two"> <div class="three">THREE</div> <div class="four">FOUR</div> <div class="five">FIVE</div> <div class="six">SIX</div> </div> <div class="col-xs-2 seven">SEVEN</div> </div> </div>

迭代碰撞

第二个选项的计算成本可能更高,当发生碰撞时,逐个禁用对撞机并重新制作射线,直到找到哪个对撞机最近。

答案 1 :(得分:0)

不透明所有碎片,投射光线 - &gt;找到谁被击中 - &gt;重新审视所有部分似乎是唯一的解决方案,但我不确定它会有多贵**

或在组装时构建BVH树,其中面被索引到对象.....得到击中面 - &gt;检查顶点索引得到hitObject .....?