three.js - X Y位于单击平面的INSIDE位置

时间:2014-01-25 12:41:40

标签: javascript 3d three.js

所以我可以使用raycaster在鼠标下获取当前对象(这种情况下是一个平面),但是我希望在平面内的鼠标位置获得准确的X和Y.

var vector = new THREE.Vector3( ( event.clientX / window.innerWidth ) * 2 - 1, - ( event.clientY / window.innerHeight ) * 2 + 1,
    0.5 );

projector.unprojectVector( vector, camera );

var raycaster = new THREE.Raycaster( camera.position, vector.sub( camera.position ).normalize() );

var intersects = raycaster.intersectObject(plane, true);

if (intersects.length > 0) {
    console.log(intersects[0].point);
}

如果我的200x200平面朝向摄像头,则intersects[0].point.x的范围从-100到+100。但是当我旋转飞机时,我得到了混合的结果。

无论飞机在现场的哪个位置,我怎样才能获得-100到+100的x值?

1 个答案:

答案 0 :(得分:2)

要在使用Raycaster时获取对象的本地坐标系中的相交点,请执行以下操作:

var vector = new THREE.Vector3().copy( intersects[ 0 ].point );

intersects[ 0 ].object.worldToLocal( vector );

console.log( 'local point: ', vector );

three.js r.65