如何将Three / js相机控制从First Person切换到Orbit并返回

时间:2015-05-13 05:16:56

标签: javascript 3d three.js

您可以毫无问题地从Three.js Orbit Controls切换到FirstPerson控件。但是当你从第一人称转到轨道时,显示器会陷入'mousedown'模式。

您需要做什么才能无缝地在First Person和Orbit控件之间来回切换?

带演示的jsBin

http://jsbin.com/jekebo/2/edit?html,js,output

这两个功能

function setControlsFirstPerson() {

    camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 1000 );
    camera.position.set( -150, 20, 0 );
    controls = new THREE.FirstPersonControls( camera, renderer.domElement );
    controls.lookSpeed = 0.05;
    controls.movementSpeed = 50;

}


function setControlsOrbit() {

    camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 1000 );
    camera.position.set( 100, 100, 100 );
    controls = new THREE.OrbitControls( camera, renderer.domElement );

}

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:1)

它无效,因为您要将第二个参数发送到OrbitControls。这出于某种原因似乎停止了终止事件被解雇。

controls = new THREE.OrbitControls( camera, renderer.domElement );

没有它,似乎按预期工作:

controls = new THREE.OrbitControls( camera );

我已经开始编辑你的jsbin,改变发送给两个控件的构造函数的参数。

http://jsbin.com/fabalomave/1/edit?js,output

我还更改了相机的创建和更改方式,以便每次更改所需的相机时都不会创建新的相机和控件实例,而只是存储引用并更改相机并控制全局{{1 }和camera变量引用。