Quote:One of my big hang-ups comes when trying to picture the whole thing. I dislike that the world is what eventually gets moved and rotated -- not the camera.This is purely a conceptual issue; there's no need to think of it that way if it's not useful to you.
It's perfectly valid to think of the camera as (or as affixed to) a moving object in the world with its own transform, just like any other object. Making it function as a camera (at least as far as OpenGL is concerned) only requires two things: that the transform matrix be inverted before submission to OpenGL, and that it be the last (affine) transform in the sequence of transforms.
Otherwise, there's no need to think about the 'world getting moved and rotated' at all. I also prefer to think of the camera as a moving object like any other, and have not encountered any problems with this conceptual approach.
Quote:Upon key-presses, our navigator code will be called. The navigator files purpose is to operate on the local (camera) xform (4x4 OpenGL style matrix). The world matrix is then multiplied by the local xform, and then sent back up. Because the local xform is reset after every frame, it only represents the changes in translation/rotation for that particular frame. There is no cummulative matrix that represents the position and orientation of the camera. As soon as the navigator code is called, the camera is located at 0,0,0 with zero rotation.I've read over this a couple of times, but I think I'm missing too many pieces of the puzzle to be able to offer any useful advice. Sorry I can't be more helpful in that regard.