2015-01-17 4 views
4

내 three.js 장면에서 일부 큐브가 있습니다. 마우스로 상자를 선택할 수있는 가능성을 사용자에게 제공하고 싶습니다. Three.js/교차점

이 중요한 코드 (나는 Three.js를 버전 69 사용) : 나는 큐브를 클릭하면

function init() { 
    [...] 
    camera = new THREE.PerspectiveCamera(VIEW_ANGLE,ASPECT,NEAR,FAR); 
    [...] 
    // in a 'for' iteration, I a many boxes in a 'objects' array : 
     abox = new THREE.Mesh(geometry, material); 
     objects.push(abox); 
    [...] 
    vector = new THREE.Vector3(0,0,0); 
    raycaster = new THREE.Raycaster(); 
    animate(); 
    document.addEventListener('mousedown', onDocumentMouseDown, false ); 
} 


function onDocumentMouseDown(event) { 
    event.preventDefault(); 
    if (camera instanceof THREE.OrthographicCamera) { 
     vector.set((event.clientX/window.innerWidth) * 2 - 1, - (event.clientY/window.innerHeight) * 2 + 1, - 1); 
     vector.unproject(camera); 
     dir.set(0, 0, - 1).transformDirection(camera.matrixWorld); 
     raycaster.set(vector, dir); 
    } else if (camera instanceof THREE.PerspectiveCamera) { 
     vector.set((event.clientX/window.innerWidth) * 2 - 1, - (event.clientY/window.innerHeight) * 2 + 1, 0.5); 
     vector.unproject(camera); 
     raycaster.set(camera.position, vector.sub(camera.position).normalize()); 
    } 

    var intersects = raycaster.intersectObjects(objects , false); 

    if (intersects.length > 0) { 

     var intersect = intersects[ 0 ]; 

     // change color of the face 
     intersect.object.material.color.setHex(Math.random() * 0xFF0000); 

     renderer.render(scene, camera); 

     } 

    } 

, 선택한 점 (교차)가 정확히 (근처가 아니라 정확히)하지 않습니다 어디 나는 클릭했다. 교대, 번역 (Orthographic or Perpective 카메라를 사용해 보았습니다 .... 같은 문제)이 있습니다.

어떤 도움을 환영합니다. WestLangley 나에게 제안으로

감사

+0

http://stackoverflow.com/questions/13542175/three-js-ray-intersect-fails-by-adding-div/13544277#13544277가 도움이되는지 확인하십시오. – WestLangley

+0

완벽합니다. 고마워요! –

답변