Ray和intersectRayTriangle如何工作?

时间:2012-09-13 19:13:45

标签: java android libgdx

所以基本上我想检查来自大炮撞击地形的激光束。要么我不理解雷的概念或什么是错的。 我们来看看这行代码

Intersector.intersectRayTriangle(intersectorRay, new Vector3(0.5f,1,0), new Vector3(0.5f,-1,0), new Vector3(1,0,0), hitPoint);

intersectorRay的起点为0,0,0,方向为1,0,0所以我认为它从点0,0指向“直线右”。 那么考虑到三角形顶点的坐标,它应该与它相交吗?代码返回false。

另一方面,此行返回true:

Intersector.intersectRayTriangle(intersectorRay, new Vector3(0.5f,1,0), new Vector3(0.5f,-1,0), new Vector3(-1,0,0), hitPoint);

对其他示例的测试证明,只有当Ray的原点在三角形内部时才会返回true(在这种情况下很明显它会碰到某些东西......)。

我做错了什么? 我从9月6日起使用最新的每晚版本的libgdx。

1 个答案:

答案 0 :(得分:1)

我将在这里说出它在第一个例子中返回false的原因是因为光线没有穿过三角形的面,因为它与x3平面相同雷正在射击。

相反,如果你的三角形位于一个zy平面上(或任何其他不完全是射线射向平面的平面),我怀疑你会得到你期望的结果。