Z Axis Up

Started by
5 comments, last by szecs 12 years, 11 months ago
I want to make the Z Axis up instead of the Y axis, but I havent been able to figure out how. My best guess would be something different in the GL_PROJECTION matrix, and Ive played around with the generation of that for a while, but all I get is black screens if I change anything, and I cant seem to figure out what it IS doing, or how. It could also be in the MODELVIEW matrix, but then that would just be a rotation, and that doesnt seem right
Advertisement
I'm not sure but I know you can do it if your using the function gluLookAt then you have to specify the up vector as one of the parameters.

"To know the road ahead, ask those coming back."

It's the view transform that will be affected by the choice of world 'up' axis, not the projection matrix. (An easy way to adjust for different up axes is to use a 'look-at' function, as Monkan suggested.)
It cant be done from the projection matrix?

It cant be done from the projection matrix?
[/quote]

Technically, there's no such thing as "the projection matrix". All you really have down at the hardware level is one matrix that transforms a vec4 (object space) to another vec4 (screen space). The idea of a projection matrix is just a nice abstraction for developers to help them assemble this final matrix (by compounding the projection, view, and object space matrices).

But if you consider the concept of a projection matrix, then it makes no sense for it to be there. Projection is only for doing perspective transforms, i.e. transforming what is in front of your face into an image. It doesn't care much about what direction you consider to be 'up', that's for the view matrix to determine.

You can probably stuff a 90 degree rotation into what you're calling your projection matrix, but it doesn't make much sense for you to do so.
[size=2]My Projects:
[size=2]Portfolio Map for Android - Free Visual Portfolio Tracker
[size=2]Electron Flux for Android - Free Puzzle/Logic Game

Technically, there's no such thing as "the projection matrix". All you really have down at the hardware level is one matrix that transforms a vec4 (object space) to another vec4 (screen space). The idea of a projection matrix is just a nice abstraction for developers to help them assemble this final matrix (by compounding the projection, view, and object space matrices).


If we replace "projection matrix" with "camera" I could even agree. A matrix is a bunch of numbers. It exists on the stack as its own matrix, in the shader as its own uniform and doesn't retroactively "not exist" because OpenGL premultiplies modelview and projection for performance reasons. That's like saying "there is no PI", because at the lowest level it's just a bunch of digits and PI is only "a nice abstraction for mathematicians".

Plus, today you have to handle it all yourself and there is not even that "one matrix at the hardware level". There is a shader which does exactly what you tell it to. I'm also pretty sure that there is no such thing as a "matrix" on the hardware level. Just a whole lot of silicon.

Also, why does the OP think that z isn't "up" already? It's just that his prefered point of view doesn't seem to be top down, where it even makes sense that positive z is coming out of the screen. And that's why the right place for this is the (model)view matrix. It's the one that represents the concept of "point of view".
f@dzhttp://festini.device-zero.de
Well, I think there is projection matrix in a way. I mean it is handled somewhat different, because it doesn't affect the length of the normals. So it's handled a bit differently than the modelview matrix. I can be wrong though...

This topic is closed to new replies.

Advertisement