我正在编写一个3D引擎,发现DirectX文档中描述的LookAt算法:
zaxis = normal(At - Eye)
xaxis = normal(cross(Up, zaxis))
yaxis = cross(zaxis, xaxis)
xaxis.x yaxis.x zaxis.x 0
xaxis.y yaxis.y zaxis.y 0
xaxis.z yaxis.z zaxis.z 0
-dot(xaxis, eye) -dot(yaxis, eye) -dot(zaxis, eye) 1
现在我明白它在旋转方面的工作原理了,但我不太明白为什么它要把矩阵的平移分量设为那些点积。仔细观察一下,似乎它是根据新基向量在眼睛/相机位置投影的一个小量来调整相机位置。
问题是为什么需要这样做?它能实现什么效果?