2014-01-25 2 views
0

그래서 레이캐스터를 사용하여 마우스 아래 현재 객체 (이 경우 비행기)를 가져올 수 있지만 정확한 X 및 Y를 얻고 싶습니다. 비행기 안의 마우스 위치.three.js - 클릭 한 평면의 안쪽에있는 XY 위치

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 크기의 비행기가 100 -100에서 다음에 intersects[0].point.x 범위를 카메라 헤드에 직면하는 경우. 그러나 비행기를 돌릴 때 나는 혼합 결과를 얻습니다.

비행기가 장면에있는 것과 상관없이 x 값을 -100에서 +100까지 어떻게 얻을 수 있습니까? Raycaster를 사용하는 경우

답변

3

객체의 로컬 좌표 시스템의 교차 지점을 얻으려면 다음을 수행하십시오

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

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

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

three.js를 r.65

+0

완벽한, 감사합니다! – user2994359

+0

안녕하세요 @WestLangley,이 메서드는 회전 된 평면에 대해 작동하지만 .updateMatrixWorld가 교차 객체에서 호출 된 경우에는 작동하지 않습니다. 기대 되는가? three.js r85. –

+1

@MichaelRibbons 문제가있는 경우 모든 관련 정보와 함께 새로운 질문을 게시하십시오. – WestLangley

관련 문제