[toc]

# 世界坐标到局部坐标

上图表达的主要是:
最直接的求变换矩阵的方法,就是直接求 A空间的基向量和原点 相对于 B空间 的三个基向量和原点的坐标u_xy_xw_xQ_xu\_x、y\_x、w\_x、Q\_x 得到这四个变量后就可以得出上图中的变换矩阵
将向量 / 坐标在 A 空间内的值左乘上变换矩阵即可得到在 B空间 中的值 龙书上说上面那种方法虽然直观,但是求起来会比较不直观
所以一般在图形学上会使用 SRT 矩阵来求转换矩阵 这个方式由于可以直接通过模板矩阵直接得到对应的 SRT 矩阵,所以求起来会轻松很多

# 观察空间

通过摄像机相对于世界空间的旋转和平移 (一般这个不考虑缩放) 可以得到观察空间到世界空间的转换矩阵.
这个转换矩阵的逆就是世界空间到观察空间的转换矩阵。 除此之外,可以通过下述方法来更轻松的获取相关的向量 如上图所示,通过摄像机原点 Q 和观察目标点 T 可以确定摄像机空间的 z 轴 ( 摄像机沿着z轴进行观察 ),通过将世界空间的 up向量 和摄像机空间 z轴 进行 叉积 可以得到摄像机空间的 x轴向量 ,最后,可以通过 x 轴与 z 轴的叉积得到 y轴向量 。 那么如何求观察矩阵呢? 上式一个最大的疑问是旋转矩阵为什么是三个向量组合的转置,这里解释下:
首先根据前面空间变换可以知道观察空间到世界空间的变换矩阵可以根据三个轴向量和原点求得。
由于观察矩阵 不需要缩放 ,所以变换矩阵右乘 平移矩阵的逆 ,就是旋转矩阵,这个结果就是三个轴的齐次形式,由于三个轴是正交的,所以旋转矩阵是正交矩阵,故旋转矩阵的逆就是旋转矩阵的转置。 所以 LookAt 矩阵的求解通式就得出来了:
- 求摄像机位置与目标点的向量 z - 与世界坐标 up 求叉积得到 x - y = z 叉积 x 这点我很疑惑的地方有一个,为什么 z 与世界坐标正方向叉积是 x 轴 (如果摄像机旋转了呢?) 😱疑问解答:相机旋转的时候,实际旋转的是场景的世界空间坐标