       .onUpdate(@updateCameraPrev)
       .start()
     else
-      to.camera = camera
-      to.flycam = @flycam
-      to.notify = notify
+      for prop of from
+        unless to[prop]?
+          to[prop] = from[prop]
       @updateCameraPrev.call(to)
 
   degToRad : (deg) -> deg/180*Math.PI


      # Calulate the x coordinate so that the vector from the camera to the cube's middle point is
      # perpendicular to the vector going from (0, b[1], 0) to (b[0], 0, 0).
      to = {  x: pos[0] + b[1] / diagonal, y: pos[1] + b[0] / diagonal, z: pos[2] - 1 / 2, upX: 0, upY: 0, upZ: -1, l: -distance - padding, r: diagonal - distance + padding, t: diagonal / 2 + padding + yOffset, b: -diagonal / 2 - padding + yOffset }
    else
      ind = Dimensions.getIndices(id)
      width = Math.max(b[ind[0]], b[ind[1]] * 1.12) * 1.1

    time = 800
    to = {}
    notify = => @trigger("cameraPositionChanged")
    getConvertedPosition = => return @model.scaleInfo.voxelToNm(@model.flycam.getPosition())
    from = {
      notify: notify
      getConvertedPosition: getConvertedPosition
      upX: camera.up.x, upY: camera.up.y, upZ: camera.up.z
      camera: camera
      flycam: @flycam
      sv : @skeletonView
      dx:camera.position.x - pos[0]
      dy:camera.position.y - pos[1]
      dz:camera.position.z - pos[2]
      l: camera.left, r: camera.right, t: camera.top, b: camera.bottom }
    @tween = new TWEEN.Tween(from)

    if id == constants.VIEW_3D
      diagonal = Math.sqrt(b[0]*b[0]+b[1]*b[1])
      padding = 0.05 * diagonal
