我有一个物体(平面),它是相机的一个孩子,因此它“固定在屏幕上” .
plane = new THREE.Mesh(new THREE.PlaneGeometry(10, 10, 10, 10), material);
plane.position.set(0,0,-5);
camera.add(plane);
在这个飞机上,我有另一个我要移动的物体,我正在向飞机发送光线投射 .
if(INTERSECTED){
handleEvent();
raycaster.setFromCamera(mouse, camera);
var intersects = raycaster.intersectObject( plane);
if(intersects.length>0){
//what is happening here?
//these points are definitely not on the plane!
var x = intersects[0].point.x;
var y = intersects[0].point.y;
var z = intersects[0].point.z;
INTERSECTED.position.set(x,y,z);
console.log(x,y,z);
}
}
光线撞击飞机的位置对我来说没有任何意义!
请帮帮我,我被困住了!谢谢!
这是小提琴:
jsfiddle.net/74jLjz6q/2
PS:我发现这个帖子,有类似的问题,相机是另一个物体的孩子..我找不到任何帮助我的问题..
1 回答
哦,我是通过追踪和错误得到的:
它必须是另一种方式(世界到本地) .
我不确定我是否真的理解这个......
所以,这些点是在世界空间中提供的 . (..因为THREE.Raycaster总是吗?)并且它必须在本地空间,因为飞机是相机的孩子 .
是对的吗?
(我必须手动减去相机和飞机之间的距离 . )
更新和工作小提琴(立方体最终停留在飞机上!:)):
http://jsfiddle.net/74jLjz6q/9/