Games101 笔记 04 变换(模型、视图、投影)

    科技2026-01-10  11

    三维旋转

    根据叉乘 XYZ 轴  任意2轴可以得到第三个轴,  x, yz叉乘, z xy叉乘,  y 是zx叉乘得到的.所以旋转矩阵相反

    欧拉角

    罗德里格斯 旋转公式

    视图/相机 转换

    什么是view变换呢

    找到一个好位置安排所有人站好 (model transformation)

    找到一个好的角度去摆放相机(view transformation)

    拍照(projection transform)

     

    首先如何确定一个相机

    位置 position

    朝向 look-at 

    向上的向量 up direction 

    相机默认放在原点, 朝向-z, 向上的向量y轴, 约定俗成

    相机从任意位置摆放在原点流程

    平移到原点

    旋转 朝向到-z 轴

    旋转 向上到y 轴

    x轴 自然就对齐啦

    如何写成矩阵

    这里首先是平移 再线性变换.  和之前矩阵转仿射的流程不一样, 那个是先线性变换, 再平移

    这个是 g 要对齐-z轴, t 对齐y轴 .(g x t) 到x轴

      这个把任意的一个轴旋转到固定的轴不好写. 但是反过来很容易, 

    先算逆矩阵

    然后因为旋转矩阵是一个正交矩阵, 他的逆 = 转置。 

    M view = R view T view   把刚才得到的旋转矩阵和平移矩阵相乘  

    投影变换

    左边正交投影, 工业设计.

    右边透视投影,  近大远小

    正交投影

    简单的理解流程

    把相加放在原点, 朝向-z,向上y轴

    丢掉z轴, 

    平移,旋转 结果矩形转换到 -1,1

     

    正规流程

    把一个空间中立方体 变成规范的立方体 -1,1 

    变换矩阵

    透视投影

    如何变换呢

    把视锥体变换成空间中的立方体   

    然后按照正交投影

    近平面上面的所有点不变,  远平面上面的点挤压成和近平面上平行的点.

    根据相似三角形 n/z = y/y'    

    原始点 根据 一个变换矩阵可以得到中间的矩阵,  又因为,  这样一个点* 一个常量,  还是这个点,  所以这个地方乘以z. 

    如何推到出来第三行呢, 

    任意点在近平面没有发生变换远平面的中心点也没有发生变换

    n的平方 和x,y 没有关系. 

    远平面的重心, 变换之后 仍然没有变换, 所以可以带入公式中.

     

    解出A,B,  这样转换矩阵的第三行也求出来啦.

     

     

     

     

     

     

     

     

     

     

    Processed: 0.018, SQL: 9