3threeJS相机鼠标方向在Camera.position()之后(&;看()

3threeJS相机鼠标方向在Camera.position()之后(&;看(),camera,three.js,mouse,direction,Camera,Three.js,Mouse,Direction,下面的代码对我来说很好,使用ThreeJS ArrowHelper在画布上将当前鼠标位置绘制为箭头。我用鼠标方向做什么在这里并不重要 function mouseDir () { var bbox = canvas.getBoundingClientRect(); var mouse3D = new THREE.Vector3 ( ((currentMouseX - bbox.left) / bbox.width) * 2 - 1, -((curr

下面的代码对我来说很好,使用ThreeJS ArrowHelper在画布上将当前鼠标位置绘制为箭头。我用鼠标方向做什么在这里并不重要

function mouseDir () {
    var bbox = canvas.getBoundingClientRect();
    var mouse3D = new THREE.Vector3 (
        ((currentMouseX - bbox.left) / bbox.width) * 2 - 1,
        -((currnetMouseY - bbox.top) / bbox.height) * 2 + 1,
        0.5
    );

    // perspective camera
    var dir = mouse3D.unproject(camera).sub(camera.position).normalize();
    scene.add(new THREE.ArrowHelper(dir, camera.position));     // draws arrow helper showing mouse direction
}
绘制的箭头指向正前方,因此我只能看到箭头的头部,这是完全正确的(1)

一旦我改变了相机的位置并设置了lookAt,它就会变得很奇怪。箭头不再直接从鼠标上画出。以下是我如何更改位置和设置注视位置:

// DONT WORK
camera.position.set(500,50,150);
camera.lookAt(new THREE.Vector3(0,0,0));
camera.updateMatrixWorld(true);
mouseDir();
render();
var dir = camera.position;
scene.add(new THREE.ArrowHelper(dir, origin));
只有设置相机位置才能正常工作:

// WORKS
camera.position.set(500,50,150);
camera.updateMatrixWorld(true);
mouseDir();
render();
仅设置注视位置也可以正常工作:

// WORKS
camera.lookAt(new THREE.Vector3(0,0,0));
camera.updateMatrixWorld(true);
mouseDir();
render();
我还尝试在渲染位置和注视调用后绘制鼠标方向,但效果不佳


我在r74。我一整天都在想这个问题,希望有人能告诉我搜索的方向。

dir应该是相机的位置:

// DONT WORK
camera.position.set(500,50,150);
camera.lookAt(new THREE.Vector3(0,0,0));
camera.updateMatrixWorld(true);
mouseDir();
render();
var dir = camera.position;
scene.add(new THREE.ArrowHelper(dir, origin));