2013-03-22 4 views
0

ray가 three.js에서 객체와 교차하는지 확인하려고합니다.IntersectObjects가 결과를 반환하지 않습니다.

내 장면이 설정되어 표시됩니다.

var intersect_objects = []; 

//Initialize scene and object and events 

scene = new THREE.Scene(); 
group = new THREE.Object3D(); 
sphere = new THREE.SphereGeometry(23.8, 60, 60); 

//Add meshes and textures etc.. 

intersect_objects.push(group); 

function onDocumentMouseUp(event) { 

    event.preventDefault(); 

    var mouseX = (event.clientX/window.innerWidth)*2-1; 
    var mouseY = -(event.clientY /window.innerHeight)*2+1; 

    var vector = new THREE.Vector3(mouseX, mouseY, 0.5); 
    projector.unprojectVector(vector, camera); 

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

    var intersects = ray.intersectObjects(intersect_objects); 

    console.log(intersects.length); //Aways 0 

} 

을하지만 0은 확실히는 영역을 교차 항상 intersects.length입니다 : 내가으로 만든 영역을 클릭

다음?

답변

0

교차 코드는 정상적으로 보입니다. "그룹"이 "장면"에 추가되었고 "구"가 "그룹"에 올바르게 추가되었는지 확인하십시오. 나머지 코드는 보지 않고 오류의 원인을 판별하는 것은 불가능합니다. 완전한 코드를 포함하고있는 jsfiddle을 생성 해보십시오.

또한이 문제를 ray.intersectObjects (scene.children)로 테스트하여 충돌이 전혀 없는지 확인하십시오.

+0

Thanks Lee, http://jsfiddle.net/kDQHV/ 나는 창에 '컨테이너'가 있습니다. 나는 mouseX & mouseY가 창 안의 컨테이너를 고려하지 않기 때문에 잘못 계산되었다는 의혹이 있습니다. –

+0

안녕하세요, 그룹을 삭제했습니다. 정상적으로 작동합니다. –

+0

intersectsObject는 메시의 회전을 고려하지 않습니다. –

관련 문제