Javascript 相对于全局坐标系而非局部坐标系的光线投射方向

Javascript 相对于全局坐标系而非局部坐标系的光线投射方向,javascript,three.js,raycasting,Javascript,Three.js,Raycasting,我使用光线投射方法检测轨道两侧的不同色带,并通过计算距离将我的汽车物体保持在适当的位置。但问题是光线总是指向全局坐标系中的恒定方向,并且不随汽车对象的移动(旋转)而改变。如果光线方向在汽车的参考坐标系中,我就不知道该怎么做了。目前我正在这样做 var ray=新的三点光线投射器(汽车位置,新的三点矢量3(-1,0,0),0,50) 汽车在X-Z平面上运动 有人能指出解决方案吗?您的光线投射是在世界空间中进行的,因此您需要正确的世界空间向量 我假设汽车是场景的子对象,而不是其他旋转对象 要在世界坐

我使用光线投射方法检测轨道两侧的不同色带,并通过计算距离将我的汽车物体保持在适当的位置。但问题是光线总是指向全局坐标系中的恒定方向,并且不随汽车对象的移动(旋转)而改变。如果光线方向在汽车的参考坐标系中,我就不知道该怎么做了。目前我正在这样做

var ray=新的三点光线投射器(汽车位置,新的三点矢量3(-1,0,0),0,50)

汽车在X-Z平面上运动


有人能指出解决方案吗?

您的光线投射是在世界空间中进行的,因此您需要正确的世界空间向量

我假设汽车是场景的子对象,而不是其他旋转对象

要在世界坐标系中构造一个指向汽车行驶方向的单位向量,首先构造一个指向汽车在其局部坐标系中行驶方向的单位向量——无论在您的情况下发生了什么:

var vector = new THREE.Vector3( -1, 0, 0 );
然后对该矢量应用与汽车相同的旋转

vector.applyQuaternion( car.quaternion );

编辑:更新为three.js r.66

非常感谢@WestLangley。。这个问题已经解决了。。但是被检测的条带与预期的wat相反,即使用Vector3(1,0,0)和viceversa检测世界空间-ve x上的条带。。我仍然可以在我的逻辑中使用它们,但我想知道为什么会发生这种情况。如果你有其他问题,你需要再发一个问题。我建议您提供一个简单的实时示例(jsfiddle.net)来演示这个问题。。。thnx。。。将提出另一个问题