I've been bashing my head against the concept of a 'camera' for my 3D world for some time now, and I'm not sure I'm doing this right anymore. Maybe I've been working on this for too long and have confused myself, or I have a fundamental mis-understanding of the topic. Therefor, I could use a refresher/help on the concept of a 3D camera object and how that is supposed to operate. I have a camera class with a position, an orientation (quaternion), and a derived transformation matrix. Currently, my draw loop looks something like this:
Start Frame Mult current matrix with matrix: Camera.Transform.Inverse Save current matrix Render all objects Restore matrix End Frame
However, this makes the camera's position reflected about the origin (ie, the camera's position vector has negative values but DRAWS as if it had positive values) and modification of position and rotation are consequently negated from their expected values (to get closer to the origin from z=3, I must add...).
So here is my issue: am I using this correctly? How is a camera supposed to work? Say I want to billboard something, how would I use the camera's information to do this?
Additionally, the clipping plane suddenly cuts out my scene if I rotate too far in any direction and I'm not sure why. How can I fix/avoid this using camera information? Any help is much appreciated!