2013-06-11 3 views
1

picking ray를 작성하여 three.js의 3D 바디가 클릭되었는지 확인하려고합니다. 그것은 순간에 작동하지 않으며 나는이 Three.js raycast produces empty intersects array과이 three.js Raycaster intersectObjects 팁을 따랐습니다.Three.js 피킹 배열 캐스팅

내 현재 코드는 이것이다 :

function checkClick() { 
       // On every click, check for body hit 
       clickInfo.x = event.clientX; 
       clickInfo.y = event.clientY; 

       var x = (clickInfo.x/window.innerWidth) * 2 - 1; 
       var y = -(clickInfo.y/window.innerHeight) * 2 + 1; 

       var objects = []; 
       objects.push(model); 
       var raycaster = projector.pickingRay(directionVector.clone(),camera); 
       var intersects = raycaster.intersectObjects(scene.children); 
       if (intersects.length) { 
        alert("found something"); 
       } 
       else { 
        alert("found nothing"); 
       } 
      } 

내가 projector.pickingRay 전에 모든 것을 혼자 계산하는 데 필요한 사용자가 위의 두번째 링크 된 예부터 나에게 일을 많이 절약 할 것을 지금 배웠다. 그러나 그것은 효과가 없습니다. 나는 어떤 JS 오류도 얻지 못한다. 단지 "발견 된 것"메시지 (교차 배열은 비어있다)이다. 나는 raycaster.intersectObjects가 배열을 매개 변수로 필요로하기 때문에 객체에 추가하는 장면 (모델)에 하나의 단일 객체를 가지고 있습니다. 여전히 작동하지 않습니다. 그렇다면 먼저 연결된 예제의 팁을 따라 scene.children을 대신 사용했습니다. 아직도 그것은 항상 "아무것도 발견하지 못했습니다". 왜? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

도움을 주셔서 감사합니다.

+0

전체 코드의 실제 예제에 대한 링크를 게시하여 문제의 원인을 쉽게 파악할 수 있도록하십시오. –

+0

@ Lee Stemkoski : 나는 이것을 실사 예제로 업로드하고 싶습니다. 그러나 .obj 파일을 사용할 수있는 freehoster를 알지 못하기 때문에 그럴 수 없습니다. 당신이 저에게 하나를 말할 수 있다면, 나는 살아있는 예제를 업로드 할 수 있습니다! – Shiuyin

+0

DropBox는 어떻습니까? –

답변

-1

여기에 마우스가 움직일 때 3D 오브젝트의 색상이 변경되는 실제 예제에 대한 링크가 있습니다. 아마도이 코드는 사용자의 필요에 맞게 조정될 수 있습니까?

http://stemkoski.github.io/Three.js/Mouse-Over.html

는 희망이 도움이!

+1

나는 이전에이 예제를 이미 발견했지만 단순히 코드를 복사하는 것이 효과가 없으며 unprojectVector 등의 메소드를 사용하고 있습니다. 최신 버전에서는 그냥 사용할 수 있어야하므로 지금까지 배운 내용보다 오래되었습니다. projector.pickingRay (directionVector.clone(), camera); 작동해야합니다. 그러나 그렇지 않습니다! – Shiuyin