function moveCameraTo(position, duration) {
var tween = new TWEEN.Tween( camera.position )
.to( position, duration )
.easing(TWEEN.Easing.Linear.None)
.onUpdate(function () {
camera.position = new THREE.Vector3().copy(position)
camera.lookAt({x:0,y:0,z:0})
})
.onComplete(function () {
camera.lookAt({x:0,y:0,z:0})
})
.start()
}
I use this method to move the camera to a specific position, and it moves the camera correctly at the beginning. Then the TrackballControls does not work, and there is an error in the console.
TrackballControls.js:318 Uncaught TypeError: _this.object.position.addVectors is not a function
at THREE.TrackballControls.update (TrackballControls.js:318)
at animate ((index):456)
The camera's position is immutable, so you can't tween it directly.
However, you can use Tween to animate the camera's position by using a pattern like the one below. It is a good idea to disable the camera controls, if you are using one of them, and then reenable it on completion.
Be sure to call
TWEEN.update()
in your animation loop.three.js r.86