2016-09-08 5 views
0

Я звоню, когда я нажимаю на сцену.RayCaster останавливает обнаружение объекта, когда я вызываю camera.lookAt()

function onMouseDown(event) { 
    controls.update(); 
    var position = new THREE.Vector3(); 
    position.setFromMatrixPosition(scene.group.children[0].matrixWorld); 
    position.normalize(); 
    console.log(position); 

    var raycaster = new THREE.Raycaster(); // create once 
    var mouse = new THREE.Vector2(); // create once 

    mouse.x = (event.clientX/renderer.domElement.width) * 2 - 1; 
    mouse.y = - (event.clientY/renderer.domElement.height) * 2 + 1; 
    //console.log(mouse); 

    raycaster.setFromCamera(mouse, camera); 

    console.log(raycaster.ray.direction); 

    var intersects = raycaster.intersectObjects(scene.group.children , false); 
    if (intersects.length > 0) { 
     intersects[ 0 ].object.material.color.set(0xff0000); 
     console.log(intersects); 
    } 
} 

первоначально, когда я не применяется без вращения на клик работает, но как только я называю

scope.target.x = offset * Math.sin((scope.phi + iphi) * Math.PI/180) * Math.cos((scope.theta + itheta) * Math.PI/180); 
scope.target.y = offset * Math.cos((scope.phi + iphi) * Math.PI/180); 
scope.target.z = offset * Math.sin((scope.phi + iphi) * Math.PI/180) * Math.sin((scope.theta + itheta) * Math.PI/180); 

scope.camera.lookAt(scope.target); 

RayCaster не возвращают объект.

Я также заметил, что мой raycaster дает тот же вектор направления в том же месте экрана даже после вращения.

Тогда я попытался применить ротацию на raycaster вручную

var e = new THREE.Euler(((controls.phi-90)/180)*Math.PI, 0, (controls.theta/180)*Math.PI, 'XYZ'); 
raycaster.setFromCamera(mouse, camera); 
raycaster.ray.direction.applyEuler(e); 

но теперь я получаю пересечение в соседнем месте, не в точном местоположении объекта.

ответ

0

Проблемы я был не обновляя мир координат, основанный на вращении камеры вызывающего

camera.updateMatrixWorld(); 

на обновлении камеры решить эту проблему.

 Смежные вопросы

  • Нет связанных вопросов^_^