Вопрос по javascript – масштабирование камеры в ThreeJS без трекбола или другой библиотеки управления камерой

9

Я пытаюсь использовать ThreeJS для управления камерой в моей сцене. В настоящее время камера настроена на орбиту по кругу вокруг моего объекта, используя левую и правую клавиши на клавиатуре. Но кто-нибудь знает, как я буду масштабировать? Вот мой текущий код:

<code>camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 10000 );
camera.position.set(0,20,35);
var rotSpeed = .02;

function checkRotation(){

    var x = camera.position.x,
        y = camera.position.y,
        z = camera.position.z;

    if (keyboard.pressed("left")){ //MH - find a way to do this in a switch statement 
        camera.position.x = x * Math.cos(rotSpeed) + z * Math.sin(rotSpeed);
        camera.position.z = z * Math.cos(rotSpeed) - x * Math.sin(rotSpeed);
    } else if (keyboard.pressed("right")){
        camera.position.x = x * Math.cos(rotSpeed) - z * Math.sin(rotSpeed);
        camera.position.z = z * Math.cos(rotSpeed) + x * Math.sin(rotSpeed);
    } else if(keyboard.pressed("up")){
        //zoom in
    } else if (keyboard.pressed("down")){
        //zoom out
    }

    camera.lookAt(scene.position);

}
</code>

Ваш Ответ

2   ответа
15

camera.zoom = zoomFactor;
camera.updateProjectionMatrix();
Error: User Rate Limit Exceeded.updateProjectionMatrix()!
18

то вы можете поиграть с параметром поля зрения (fov) камеры:

  camera.fov *= zoomFactor;
  camera.updateProjectionMatrix();

Увидеть:http://jsfiddle.net/bvcCB/87/

Если вы хотите переместить камеру вблизи (или далеко) от цели, то рассчитайте вектор от положения камеры до цели и переместите положение камеры вдоль этого вектора.

Error: User Rate Limit Exceeded mheavers

Похожие вопросы