射线投射方向相对于全球坐标系,而不是局部坐标系



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

var ray = new THREE.RayCaster(car。position, new THREE.Vector3(-1,0,0),0,50);

汽车的运动在X-Z平面

谁能指出一个解决方案?

你的光线投射是在世界空间中完成的,所以你需要正确的世界空间向量。

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

要构造一个在世界坐标系中指向汽车行驶方向的单位矢量,首先构造一个在其本地坐标系中指向汽车行驶方向的单位矢量——无论在你的情况中是什么:

var vector = new THREE.Vector3( -1, 0, 0 );

然后对该矢量施加与汽车相同的旋转。

vector.applyQuaternion( car.quaternion );

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

最新更新