OpenSceneGraph - 如何检测两个Node相互交叉?

时间:2017-07-06 09:10:26

标签: openscenegraph

试图在OpenSceneGraph中的两个节点之间进行冲突。我想要确保两个节点相交。怎么做。我显示如下我的功能来检测碰撞。

git br -D later-branch

1 个答案:

答案 0 :(得分:0)

OpenSceneGraph有BoundingSphereBoundingBox。后者仅用于Geometry个节点(除非您自己实现一点),因此BoundingSphere是最简单的方法。这不会给出模型的正确交集,但是在两个球体之间,每个球体都在模型中心居中并且具有半径,使得球体完全包含所有模型(/子图)。即如果模型的中心是(0,0,0)并且加速点是(1,1,1),那么半径将是sqrt(3)

您可以通过调用BoundingSphere来查询节点的getBound(),并且可以通过在其中一个球体上调用intersects并使用另一个作为参数来查询两个球体的交集

在你的情况下,它就像这样

if(ob1->getBound().intersects(ob2->getBound()))
{
    trPos[2] += 0.01;
}