【发布时间】:2010-09-25 19:56:03
【问题描述】:
我正在编写一个 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
现在我知道了它在旋转方面的工作原理,但我不太明白为什么它将矩阵的平移分量放在那些点积上。稍微检查一下,它似乎是根据新基向量在眼睛/相机位置上的投影来少量调整相机位置。
问题是为什么需要这样做?它有什么作用?
【问题讨论】:
-
是右下角的字母 L(“l”)应该是一 (1)
-
@bobobobo 这是一个列主矩阵,因为翻译位于底部而不是右侧。 “列专业”在 GLSL 中是标准的。
-
@CrouchingKitten 在列主要转换矩阵中,翻译组件位于右侧 - 请参阅 scratchapixel.com/lessons/… 的“摘要”
标签: math graphics 3d projection