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

时间:2013-05-10 06:20:37

标签: javascript three.js raycasting

我使用光线投射方法检测轨道两侧的不同彩色条带,并通过计算距离将我的汽车物体保持在适当位置。但问题是射线始终指向全局坐标系中的恒定方向,并且不随着汽车对象的移动(旋转)而变化。如果光线方向在汽车的参考系中我可能无法弄清楚该怎么办。目前我在做这个

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

汽车的移动位于X-Z平面

有人可以指出解决方案吗?

1 个答案:

答案 0 :(得分:1)

您的光线投射正在世界空间中完成,因此您需要正确的世界空间矢量。

我假设汽车是场景的孩子,而不是其他旋转物体。

要构建一个指向汽车在世界坐标系中前进方向的单位矢量,首先构建一个单位矢量,指向汽车在其局部坐标系中前进的方向 - 无论发生在哪里你的情况:

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

然后将相同的旋转应用于应用于汽车的矢量。

vector.applyQuaternion( car.quaternion );

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