14

threeJSを使用してシーン内のカメラを制御しようとしています。現在、キーボードの左右のキーを使用して、オブジェクトの周りを円を描くようにカメラを設定しています。しかし、誰かが私がどのようにズームするか知っていますか?これが私の現在のコードです:

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);

}
4

2 に答える 2

22

カメラを動かさずに実際のズームが必要な場合は、カメラの視野(fov)パラメーターで遊ぶことができます。

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

参照: http: //jsfiddle.net/bvcCB/87/

カメラをターゲットの近く(または遠く)に移動する場合は、カメラの位置からターゲットまでのベクトルを計算し、そのベクトルに沿ってカメラの位置を移動します。

于 2012-04-28T08:27:18.240 に答える
19

r69から、camera.zoomを使用できるようになりました。

camera.zoom = zoomFactor;
camera.updateProjectionMatrix();
于 2015-11-24T23:13:17.873 に答える