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을 대신 사용했습니다. 아직도 그것은 항상 "아무것도 발견하지 못했습니다". 왜? 내가 도대체 뭘 잘못하고있는 겁니까?
도움을 주셔서 감사합니다.
전체 코드의 실제 예제에 대한 링크를 게시하여 문제의 원인을 쉽게 파악할 수 있도록하십시오. –
@ Lee Stemkoski : 나는 이것을 실사 예제로 업로드하고 싶습니다. 그러나 .obj 파일을 사용할 수있는 freehoster를 알지 못하기 때문에 그럴 수 없습니다. 당신이 저에게 하나를 말할 수 있다면, 나는 살아있는 예제를 업로드 할 수 있습니다! – Shiuyin
DropBox는 어떻습니까? –