我正在编写一个 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
现在我明白了它在旋转方面的工作原理,但我不太明白为什么它将矩阵的平移分量放在那些点积上。稍微检查一下,它似乎是根据新基向量在眼睛/相机位置上的投影来少量调整相机位置。
问题是为什么需要这样做?它有什么作用?