private Mat4 calcLookAtMatrix(Vec3 cameraPt, Vec3 lookPt, Vec3 upPt) {
Vec3 lookDir = Glm.normalize(Vec3.sub(lookPt, cameraPt));
Vec3 upDir = Glm.normalize(upPt);
Vec3 rightDir = Glm.normalize(Glm.cross(lookDir, upDir));
Vec3 perpUpDir = Glm.cross(rightDir, lookDir);
Mat4 rotMat = new Mat4(1.0f);
rotMat.setColumn(0, new Vec4(rightDir, 0.0f));
rotMat.setColumn(1, new Vec4(perpUpDir, 0.0f));
rotMat.setColumn(2, new Vec4(Vec3.negate(lookDir), 0.0f));
rotMat = Glm.transpose(rotMat);
Mat4 transMat = new Mat4(1.0f);
transMat.setColumn(3, new Vec4(Vec3.negate(cameraPt), 1.0f));
return rotMat.mul(transMat);
}
這段代碼生成一個世界到攝像頭矩陣,它將與openGL一起用於渲染。需要幫助瞭解這個旋轉矩陣數學代碼
我明白除旋轉矩陣形成方式之外的所有內容。基本上,它把歸一化的向量和轉置的矩陣,並以某種方式與旋轉矩陣出來。解釋數學。
在http://math.stackexchange.com/這裏可能會更好。 – Austin 2013-03-16 08:50:40