視圖矩陣 是 相機(jī)世界矩陣的逆矩陣;
位于相機(jī)坐標(biāo)系里的點(diǎn),乘以相機(jī)世界矩陣,即轉(zhuǎn)到了世界坐標(biāo)系里;
位于世界坐標(biāo)系里的點(diǎn),乘以視圖矩陣(相機(jī)世界矩陣的逆矩陣),即轉(zhuǎn)到了相機(jī)坐標(biāo)系里;
在相機(jī)坐標(biāo)系里,相機(jī)對(duì)著-z軸;
下面方法構(gòu)造出來(lái)的矩陣是相機(jī)世界矩陣,要想構(gòu)造視圖矩陣,得求逆矩陣,見(jiàn)這里;

1644303468(1).png
Matrix44f lookAt(const Vec3f& from, const Vec3f& to, const Vec3f& tmp = Vec3f(0, 1, 0))
{
Vec3f forward = normalize(from - to);
Vec3f right = crossProduct(normalize(tmp), forward);
Vec3f up = crossProduct(forward, right);
Matrix44f camToWorld;
camToWorld[0][0] = right.x;
camToWorld[0][1] = right.y;
camToWorld[0][2] = right.z;
camToWorld[1][0] = up.x;
camToWorld[1][1] = up.y;
camToWorld[1][2] = up.z;
camToWorld[2][0] = forward.x;
camToWorld[2][1] = forward.y;
camToWorld[2][2] = forward.z;
camToWorld[3][0] = from.x;
camToWorld[3][1] = from.y;
camToWorld[3][2] = from.z;
return camToWorld;
}

相機(jī)