I've been thinking about the rotation-matrix idea some more. I could give you a "setOrientation" method, no problem. However I really don't see a catch-all way to determine what the up-direction should be if it is not given, because for any look-direction, there are a virtually infinite number of possible up-directions. Let me give you a simple example of what I'm talking about:

Say I have an object facing into the screen, and I wanted to have it "look-at" a target behind it. If I rotate along the y/z plane, the resulting up-direction would be one direction, but if I rotate along the x/z plane, the resulting up-direction would be the opposite direction. I could also rotate along an infinite number of other "in-between" planes to end up with any number of other possible up-directions.

Or an even easier way to think about it is you could easily spin the up-vector like a top while still looking at the same target.

So to be honest with you, I have no idea how the camera's lookAt method works. I could come up with a number of various formulas for calculating some up-vector, but the behavior would most likely not be identical to what the camera lookAt method does. Perhaps Egon could give us a rough explanation for what jPCT does behind the scenes in this method?