我正在编写一个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) l
Run Code Online (Sandbox Code Playgroud)
现在我得到它在旋转方面的工作方式,但我不太明白的是为什么它将矩阵的平移组件放在那些点积上.稍微检查一下,它似乎是根据新基础矢量投影到眼睛/摄像机位置上的一小部分来调整摄像机位置.
问题是为什么需要这样做?它完成了什么?