如何将 Three/js 相机控制从第一人称切换到轨道并返回
How to switch Three/js camera controls from First Person to Orbit and back
您可以毫无问题地从 Three.js 轨道控制切换到第一人称控制。但是当你从第一人称视角转到轨道时,显示会卡在 'mousedown' 模式。
你需要做什么才能在第一人称和轨道控制之间无缝切换?
带有演示的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 );
}
感谢任何帮助。
它不起作用,因为您正在将第二个参数发送到 OrbitControls。由于某种原因,这似乎停止了结束事件的触发。
controls = new THREE.OrbitControls( camera, renderer.domElement );
没有它,它似乎按预期工作:
controls = new THREE.OrbitControls( camera );
我已经编辑了您的 jsbin,更改了发送给两个控件的构造函数的参数。
http://jsbin.com/fabalomave/1/edit?js,output
我还更改了相机的创建和更改方式,这样每次更改所需的相机时都不会创建新的相机和控件实例,而只是存储一个引用并更改全局 camera
和controls
变量指的是。
您可以毫无问题地从 Three.js 轨道控制切换到第一人称控制。但是当你从第一人称视角转到轨道时,显示会卡在 'mousedown' 模式。
你需要做什么才能在第一人称和轨道控制之间无缝切换?
带有演示的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 );
}
感谢任何帮助。
它不起作用,因为您正在将第二个参数发送到 OrbitControls。由于某种原因,这似乎停止了结束事件的触发。
controls = new THREE.OrbitControls( camera, renderer.domElement );
没有它,它似乎按预期工作:
controls = new THREE.OrbitControls( camera );
我已经编辑了您的 jsbin,更改了发送给两个控件的构造函数的参数。
http://jsbin.com/fabalomave/1/edit?js,output
我还更改了相机的创建和更改方式,这样每次更改所需的相机时都不会创建新的相机和控件实例,而只是存储一个引用并更改全局 camera
和controls
变量指的是。