I second elguapoloco's recommendation. I use camera targets all the time and they prove to be very effective.
You could also study lookAt's upAxis parameter, which determines what axis will be considered as up when rotating the camera. If you do have to rotate the camera manually: _camera.rotate(axis, angleDegs); The problem with this is that the angle you rotate is incremental, that is, you can only rotate BY a specific angle and not TO a specific angle in the given axis. To counter that, I often do: // Take a snapshot of the camera's transform before applying rotations to it. _originalCameraTransform = new MatrixAway3d(); _originalCameraTransform.clone(_camera.transform); // On your enterframe, or method being called repeatedly. var rotationMatrix:MatrixAway3d = new MatrixAway3d(); rotationMatrix.rotationMatrix(axis.x, axis.y, axis.z, toAngleRads); var startMatrix:MatrixAway3D = new MatrixAway3D(); startMatrix.clone(_originalCameraTransform); startMatrix.multiply3x3(startMatrix, rotationMatrix); _camera.transform = startMatrix;
