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

三维旋转

根据叉乘 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,  这样转换矩阵的第三行也求出来啦.

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值