question about perspective matrix

Hi, i have a problem with concepts of perspective transformation.

There are a way to get back the z at view space after perspective transformation? I have the next code, about something related to a texture projection, but i need the view space depth, not the (0,1) clipped one:

modelViewMatrix.look_at(lightPosition,lightPosition()+lightSpotDirection(), vec3(0.0f, 1.0f, 0.0f));

projectionMatrix.perspective(lightSpotCutOff(), 1.3333, Dmin, Dmax);

mul_mat4_mat4(projectionMatrix, modelViewMatrix,aux);

mul_mat4_mat4(scaleMatrix, aux, modelViewProjectionMatrix);

projectedVertex = modelViewProjectionMatrix * vertex;

/* perspective division /
projectedVertex /= projectedVertex.w;
now z clipped to 0 1*/

lightViewVertices[i].z = projectedVertex.z*(Dmax - Dmin)+Dmin;
/* and now? */

But the last “transformation” doesn’t works, i compare it to the operation, dot((vertexPosition - eyePosition), direction) and to the depth before projective transformation.

My “transformation” is based that after the scale matrix and perspective division (/=w) z is clipped to (0,1).

What i’m doing wrong?

Have a look at the Red Book appendix, where the OpenGL transformation matrices are given. If you have non-singular (invertable) matrices, you can always invert them to retrieve the original coordinate information. Short of a complete matrix inversion, a simple reversal of some calculations can be used for most camera rotation/translation arrangements.

I’m not 100% clear on your overall objective here, but I hope this helps.