相机之后的ThreeJS相机鼠标方向。位置()&看着()

时间:2016-02-25 22:07:07

标签: 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,
        -((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。)。

enter image description here

一旦我改变相机位置并设置lookAt,它就会变得怪异(2.)。从鼠标开始不再绘制箭头了。以下是我如何更改位置并设置lookAt位置:

// DONT WORK
camera.position.set(500,50,150);
camera.lookAt(new THREE.Vector3(0,0,0));
camera.updateMatrixWorld(true);
mouseDir();
render();

仅设置相机位置才能正常工作:

// WORKS
camera.position.set(500,50,150);
camera.updateMatrixWorld(true);
mouseDir();
render();

仅设置lookAt位置也可以正常工作:

// WORKS
camera.lookAt(new THREE.Vector3(0,0,0));
camera.updateMatrixWorld(true);
mouseDir();
render();

我也尝试在渲染位置和lookAt调用后绘制鼠标方向,也不起作用。

我在r74。我试着整天想出来,希望有人能告诉我搜索的方向。

1 个答案:

答案 0 :(得分:0)

dir应该是相机位置:

var dir = camera.position;
scene.add(new THREE.ArrowHelper(dir, origin));