Sign in to follow this  
zacaj

Z Axis Up

Recommended Posts

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

Share this post


Link to post
Share on other sites
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.)

Share this post


Link to post
Share on other sites
[quote]
It cant be done from the projection matrix?
[/quote]

Technically, there's no such thing as [b]"the projection matrix"[/b]. 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.

Share this post


Link to post
Share on other sites
[quote name='karwosts' timestamp='1305681475' post='4812190']
Technically, there's no such thing as [b]"the projection matrix"[/b]. 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).[/quote]

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".

Share this post


Link to post
Share on other sites
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...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this