Threejs轨道控制使用鼠标/触摸设置目标打破相机旋转

时间:2017-05-13 21:38:31

标签: three.js

我正在开发一种标准的全景查看器,其中360度图片放置在球体内部,用户可以使用鼠标和触摸环顾四周。我正在使用OrbtialControls,它工作正常。 用户还可以加载新的360图片,加载图片后,我试图设置相机方向,以便用户朝某个方向看。当我使用orbitalControls时,我正在使用control.target.set(x,y,z)来执行此操作。然而,这导致相机锁定在该点,如果我使用鼠标或触摸环顾四周,相机位置会改变并围绕该点旋转,而不是环顾球体内部。 还有其他人看到过这种行为吗?我需要做点什么

代码非常简单。



 controls.reset();
controls.target.set(window.newLookAt.x,window.newLookAt.y,window.newLookAt.z);




2 个答案:

答案 0 :(得分:0)

controls.target.set(x,y,z)的目的是设置支点,所以你面临的是预期的行为

不是设置目标(在您的情况下必须是(0,0,0)),为什么不将相机放在THREE.Object3D内并旋转此对象

var camera = new THREE.PerspectiveCamera()
var container = new THREE.Object3D()
container.add( camera )
camera.position.set( 0, 0, 0.1 )

var controls = new THREE.OrbitControls( camera, renderer )
controls.target.set( 0, 0, 0 ) // Optional

container.rotate.y = Math.PI / 2 // Or whatever you want

答案 1 :(得分:0)

所以我最终解决了这个问题。问题是我对orbitControls的理解略有不同。我需要做的就是将目标点设置在相同的方向,但是更接近相机和presto,问题解决了,现在情况正常。