0
103 Feb 28, 2010 at 19:08

if i have View*Projection is there anyway to get View and Projection back from it?

#### 7 Replies

0
104 Feb 28, 2010 at 19:28

Only if you had the inverse of one of the matrices, otherwise they are stuck together.

0
168 Feb 28, 2010 at 19:31

Yes, invert the matrix, then IIRC you can extract the view axes and position as follows:.

XAxis = Homogenize(Point(1, 0, 0, 1) * InverseViewProjection) - Homogenize(Point(0, 0, 0, 1) * InverseViewProjection)
YAxis = Homogenize(Point(0, 1, 0, 1) * InverseViewProjection) - Homogenize(Point(0, 0, 0, 1) * InverseViewProjection)
ZAxis = Homogenize(Point(0, 0, 1, 1) * InverseViewProjection) - Homogenize(Point(0, 0, 0, 1) * InverseViewProjection)
CameraPos = Homogenize(Point(0, 0, -1, 0) * InverseViewProjection)

Here “Homogenize” means convert from a 4D point back to a 3D one by dividing by w. These equations may be able to be simplified a bit; I’m not sure. Also be wary of the LHS/RHS conversion, there may be a sign change needed someplace with respect to the Z axis. Anyway, once you have the camera position and axes you can easily reconstruct the view matrix, then Inverse(View) * ViewProjection gets you the projection.

0
103 Feb 28, 2010 at 21:14

That looks very complicated , would you be able to make a sample in D3D format etc

0
168 Feb 28, 2010 at 22:07

No, I don’t use D3D. Come on, I gave you the exact equations, just code it up.

0
104 Feb 28, 2010 at 23:09

Thats amazing! I never would have thought that was possible, im a lamer.

0
102 Mar 01, 2010 at 00:07

Oh come on Reedbeta, what kind of staff member you think you are that you don’t code stuff for people in their preferred environment and language, huh?! ;)

0
168 Mar 01, 2010 at 02:04

Heheh, I know, I’m pretty useless. ;)