Hi,
i came across this thread a while ago, but i can't get this thing working. I've updated the offsets and from what i can tell it's reading the right values. Nevertheless i get totally absurd values as result. Therefor i've got 2 questions:
1. What does the matrix (fViewMat) contain/represent?
2. What is this math operation called, and why is fViewMat with the new values never used (assigning new values = pointless?) ?
Code:
float fInv[3][3];
fInv[0][0] = camera.fViewMat[1][1]*camera.fViewMat[2][2]-camera.fViewMat[1][2]*camera.fViewMat[2][1];
fInv[1][0] = camera.fViewMat[1][2]*camera.fViewMat[2][0]-camera.fViewMat[1][0]*camera.fViewMat[2][2];
fInv[2][0] = camera.fViewMat[1][0]*camera.fViewMat[2][1]-camera.fViewMat[1][1]*camera.fViewMat[2][0];
float fDet = camera.fViewMat[0][0]*fInv[0][0]+camera.fViewMat[0][1]*fInv[1][0]+camera.fViewMat[0][2]*fInv[2][0];
float fInvDet = 1.0f / fDet;
fInv[0][1] = camera.fViewMat[0][2]*camera.fViewMat[2][1]-camera.fViewMat[0][1]*camera.fViewMat[2][2];
fInv[0][2] = camera.fViewMat[0][1]*camera.fViewMat[1][2]-camera.fViewMat[0][2]*camera.fViewMat[1][1];
fInv[1][1] = camera.fViewMat[0][0]*camera.fViewMat[2][2]-camera.fViewMat[0][2]*camera.fViewMat[2][0];
fInv[1][2] = camera.fViewMat[0][2]*camera.fViewMat[1][0]-camera.fViewMat[0][0]*camera.fViewMat[1][2];
fInv[2][1] = camera.fViewMat[0][1]*camera.fViewMat[2][0]-camera.fViewMat[0][0]*camera.fViewMat[2][1];
fInv[2][2] = camera.fViewMat[0][0]*camera.fViewMat[1][1]-camera.fViewMat[0][1]*camera.fViewMat[1][0];
camera.fViewMat[0][0] = fInv[0][0]*fInvDet;
camera.fViewMat[0][1] = fInv[0][1]*fInvDet;
camera.fViewMat[0][2] = fInv[0][2]*fInvDet;
camera.fViewMat[1][0] = fInv[1][0]*fInvDet;
camera.fViewMat[1][1] = fInv[1][1]*fInvDet;
camera.fViewMat[1][2] = fInv[1][2]*fInvDet;
camera.fViewMat[2][0] = fInv[2][0]*fInvDet;
camera.fViewMat[2][1] = fInv[2][1]*fInvDet;
camera.fViewMat[2][2] = fInv[2][2]*fInvDet;
float fView[3];
fView[0] = fInv[0][0]*fDiff[0]+fInv[1][0]*fDiff[1]+fInv[2][0]*fDiff[2];
fView[1] = fInv[0][1]*fDiff[0]+fInv[1][1]*fDiff[1]+fInv[2][1]*fDiff[2];
fView[2] = fInv[0][2]*fDiff[0]+fInv[1][2]*fDiff[1]+fInv[2][2]*fDiff[2];
Thanks for your help!