看看图片。
我有一台相机(棕色)和它的光线(红色)。据我所知,雷有一个方向和无限的长度(如果你不自己设置)。但是现在我需要确定从相机点开始并在它穿过地板时结束的光线矢量。我怎样才能做到这一点?
答案 0 :(得分:1)
我已经花了一段时间使用JMonkeyEngine,但你在这里尝试执行的计算是碰撞 - 知道这个名字可以帮助你know what to search for.
你需要确保你的地板是可碰撞的,然后你应该能够使用相机射线的碰撞来找到它与地面相交的点,使用getContactPoint
碰撞方法。
答案 1 :(得分:0)
听起来你正在尝试解决线 - 平面交点问题。解决方案是射线撞击地板平面的点。 确定起点(在相机处)与此交点之间的距离将为您提供矢量的长度。
在JMonkey(我不熟悉)中,似乎有很好的方法可以找到两个对象之间的碰撞,只要它们是“可碰撞的”。
可碰撞
com.jme3.collision.Collidable接口声明了一个方法,该方法返回两个Collidables之间发现的碰撞次数:collideWith(Collidable other,CollisionResults results)。 com.jme3.collision.CollisionResults对象是可比较的com.jme3.collision.CollisionResult对象的ArrayList。 您可以迭代CollisionResults以识别碰撞中涉及的其他各方。 请注意,jME对所有碰撞进行计数,这意味着与盒子相交的光线将被计为两次点击,一次在光线进入的前面,另一次在光线射出的背面。
另请参阅:hub.jmonkeyengine.org/wiki/doku.php/jme3:advanced:collision_and_intersection
然后,正如Glenatron所说,你需要使用碰撞的getContactPoint()
方法来获得空间中的实际点。然后,您的矢量由光线的原点和接触点定义。