# Perspective Matrix Question

This topic is 2856 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

[ Removing your original post is a bit of a dick move. Here, I put it back for you. --Sneftel ] I am trying to understand the perspective matrix and I understand that the matrix is | 2-n/(r-l) 0 r+l/r-l 0| | 0 2n/(t-b) (t+b)/(t-b) 0| | 0 0 -(f+n)/(f+n) -2fn/(f-n)| | 0 0 -1 0| After performing the modeling matrix (scale, rotation, translation). I get the position to be: | 1.00 0.00 1.73 0.00 | | 0.77 1.79 -0.45 0.45 | | -1.55 0.89 0.89 -5.37 | | 0.00 0.00 0.00 1.00 | My question how does n, r, l, t, b, and f in the perspective matrix relate to the modeling matrix? [Edited by - Sneftel on October 13, 2009 1:29:59 PM]

##### Share on other sites
They don't, because view matrix and projection matrix are two completely different things. OpenGL combines view and model transformation into a single modelview matrix, though (mostly because the view matrix is nothing but "move everything the opposite way" from a "virtual camera object point of view").

You should ask how this and gluPerspective are related.

##### Share on other sites
how does the perspective relate to the camera coordinates?

##### Share on other sites
It doesn't relate to the camera coordinates (if you are referring to the camera coordinates as the vectors used when constructing the modelview matrix)

the Projection matrix is post camera-transform, i.e. the camera/view has already had its effect.

if you are asking what those parameters actually are, they are:
near, right, left, top, bottom and far

what these actually do is define the frustum planes distances from the point that is exactly 1 unit in front of the camera. Apart from near and far being your clipping distances, typically:
left = -right
bottom = -top

a reason for specifying these seperately would be super-highresolution screenshot rendering, where you need to render the screen a small fraction at a time.

Ignoring the above reason, the top/bottom value is calculated by standard trig functions from the vertical-fov, and the left/right are the top/bottom but multiplied by the cameras' aspect ratio.

##### Share on other sites
I am really confused. Im trying to compute the perspective matrix by hand and I don't know how to do this. In the post before I had what the computer computes the camera and perspective matrix to be. Now I'm trying to do this by hand but don't know where to start. If you could please help me that would be great.

##### Share on other sites
Hi, this is my code to replace gluPerspective in my fps engine...
Please note the difference is that the aspect ratio is hidden from client.
void PerspectiveMatrix(   float matrix[16],   int width,   int height,   float fovy,   float znear,   float zfar){   float aspect = (float)width / (float)height;   float fovy2 = fovy * MATH_PIOVER360;   float cotan = cosf(fovy2) / sinf(fovy2);   matrix[0]  = cotan / aspect;   matrix[1]  = 0.0F;   matrix[2]  = 0.0F;   matrix[3]  = 0.0F;   matrix[4]  = 0.0F;   matrix[5]  = cotan;   matrix[6]  = 0.0F;   matrix[7]  = 0.0F;   matrix[8]  = 0.0F;   matrix[9]  = 0.0F;   matrix[10] = (znear + zfar) / (znear - zfar);   matrix[11] = -1.0F;   matrix[12] = 0.0F;   matrix[13] = 0.0F;   matrix[14] = (znear * zfar * 2.0F) / (znear - zfar);   matrix[15] = 0.0F;}

##### Share on other sites
Quote:
 Original post by bitshifterHi, this is my code to replace gluPerspective in my fps engine...Please note the difference is that the aspect ratio is hidden from client.*** Source Snippet Removed ***

I have the code. What Im trying to do is figure out how the math behind the code. For example when executing the code how is the camera matrix computed or the perspective matrix computed. I understand how the model and camera matrix is computed, but I do not understand how the perspective matrix is computed.

##### Share on other sites
Quote:
 Original post by bananasplitkidsbut I do not understand how the perspective matrix is computed.

The documentation for gluPerspective says how it's computed.

##### Share on other sites
Quote:
Original post by Erik Rufelt
Quote:
 Original post by bananasplitkidsbut I do not understand how the perspective matrix is computed.

The documentation for gluPerspective says how it's computed.

Thanks ok so I computed it by hand but my numbers don't match the computer generated numbers. For the perspective matrix the computer got

| 2.41 0.00 0.00 -0.00 |
| 0.00 2.41 0.00 -0.00 |
| 0.00 0.00 -1.00 -0.20 |
| 0.00 0.00 -1.00 -0.00 |

For the perspective matrix I got:
| 2.41 0.00 0.00 -0.00 |
| 0.00 2.41 0.00 -0.00 |
| 0.00 0.00 1.00 1 |
| 0.00 0.00 -.100 -0.00|

This was using the values fov =45 degrees, aspect ratio =1, near=0.1, and far=500

##### Share on other sites
never mind i figured it out!

1. 1
2. 2
3. 3
Rutin
13
4. 4
5. 5

• 26
• 10
• 9
• 9
• 11
• ### Forum Statistics

• Total Topics
633695
• Total Posts
3013374
×