Understanding the camera

Hello all
i posted a post prior to this one on implementing a 3d api but noone responded. Hopefully someone will respond to this. Well as i said I am implementing my own 3d api just for the sake of understanding of the inner workings. I want to creae the camera transformation. This is what i have done so far.

  1. Created the lookAT function to know the camera eye, lookAt point and up direction. I use this function to get the camera vectors u,v,n.
    2)Created the perspecive function to create the perspective transformation. The matrix i use is as follows
  
cot(fov)  0        0        0
0         cot(fov) 0        0
0         0        f+n/f-n -1
0         0        2fn/f-n  0

where f is the far clippping plane and n is the near clip plane.

Now i simply copncatenate the two matrices one from the lookat function (that I have previously given in my post on gluLookAt function) and other the abve matrix. Then I multiply all the geometry with this concatenated matrix. Now the problem is this.
1)I only see flat version of primitives no 3d depth. I am even renormalizing the matrix after multiplication with the concatenated matrix by dividing all the points x and y values by the z value. Where do you think the problem is. Am i missing anything here. Doyou have any good reference on this stuff.
Thanx
MMMovania

I don’t think the perspective projection matrix is correct. What is cot(), by the way? Check out the Opengl Red book. The projection matrix in opengle is:

2n/(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

Originally posted by surfel17:
[b]I don’t think the perspective projection matrix is correct. What is cot(), by the way? Check out the Opengl Red book. The projection matrix in opengle is:

2n/(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[/b]
Hello there thanx for your reply
I am not doing this in opengl but am writing my own api based on the info given here

 http://graphics.cs.ucdavis.edu/GraphicsNotes/Viewing-Transformation/Viewing-Transformation.html 

cot is the cotangent a trignometric identity which is = 1/tan
I have already dissected the opengl camera fucntions gluperspective and gluLookAt. Now i want to go ahead and see how it is actually multiplied by the vertices. For that I am doing a simple 3d api of my own cos opengl does the real work under the hood.
THanx for your response.
MMM

have you tried the shading language…?

you can set up a vertex shader to play around with matrix stuff.

the standard transformation is:

 vertex_pos * ModelView * Projection

(the matrix multiply functions are built into the shading language, and the matrix values can be passed in as parameters…)

Originally posted by carl_lewis:
[b]have you tried the shading language…?

you can set up a vertex shader to play around with matrix stuff.

the standard transformation is:

 vertex_pos * ModelView * Projection

(the matrix multiply functions are built into the shading language, and the matrix values can be passed in as parameters…)[/b]
Thanks for your reply. i have not tried the shading language as yet i was trying to setup the camera and its working in detail. Do you know some place where i can learn shading language fast and easily?
Thanx
MMM

the two main sources i used were:
The Orange Book (“OpenGL Shading Language” - Randi Rost)
and
Clockwork Coders website tutorials.

also, you could try using Render Monkey (can be downloaded from developer site in www.ATI.com )

Originally posted by carl_lewis:
[b]the two main sources i used were:
The Orange Book (“OpenGL Shading Language” - Randi Rost)
and
Clockwork Coders website tutorials.

also, you could try using Render Monkey (can be downloaded from developer site in www.ATI.com )[/b]
Thanx for the great info. I have an NVIDIA GeForce MX400 card but its does not support vertex/pixel shader. Would I be able to run the shader codes and the ATI Rendermonkey on it?
Thanx
MMM

sorry, been away for a while…

the graphics board has to support shader programs to use rendermonkey etc.
i think you need to use a geForce 3 or newer.

the newer (more advanced) the board, the more support for extra features and longer programs you get.

Originally posted by carl_lewis:
[b]sorry, been away for a while…

the graphics board has to support shader programs to use rendermonkey etc.
i think you need to use a geForce 3 or newer.

the newer (more advanced) the board, the more support for extra features and longer programs you get.[/b]
Thanx dude for your response.