GAME101 L4三维变换和视图/投影变换

本文讨论了三维变换中的旋转矩阵,特别是绕Y轴旋转与绕X/Z轴旋转的不同,解释了为何规律不一致,并介绍了视图和投影变换的过程,包括正交和透视投影的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

旋转θ和旋转-θ的矩阵区别

在这里插入图片描述

  • 可以看到 旋转 -θ 矩阵是旋转 θ 的转置(行列互换)
  • 从定义上来看,旋转 θ 和旋转 -θ 是一个互逆操作
  • 因此在旋转中,旋转是正交矩阵,旋转的逆=旋转的转置

三维变换3D Transformations

使用4x4的矩阵表示三维的仿射变换,跟二维一样,三维变换先用线性变换后再进行平移变换 在这里插入图片描述

缩放矩阵

在这里插入图片描述

平移矩阵

在这里插入图片描述

旋转矩阵

绕X轴旋转

在这里插入图片描述

绕Y轴旋转

在这里插入图片描述

绕Z轴旋转

在这里插入图片描述

问题

为啥绕Y旋转和绕X/Z旋转规律不一致?
在这里插入图片描述

  • 需要考虑轴的相互顺序
  • x/y/z 都可以通过其他两个向量叉乘得到
  • xy=z,yz=x
  • 但是 y=zx,而不是 y=xz

3D旋转

在这里插入图片描述

观测变换 Viewing transformation

如何拍摄一张照片?

  • 找到一个好的位置,集合所有人员(模型变换 model transformation)
  • 找一个好的位置,摆好一个好的角度(视图变换 view transformation)
  • 拍照(投影变换 projection transformation)

视图变换 View / Camera Transformation

先定义相机基本属性

  • 相机位置
  • 相机朝哪看
  • 相机向上方向
    在这里插入图片描述

预先约定相机

  • 位置在原点(0,0,0)
  • 永远向-z方向看
  • 永远以Y轴为向上方向
  • 永远是模型在进行移动(相对运动)
    在这里插入图片描述

相机进行平移旋转

  • 将相机平移到远点
  • 旋转视角方向到-z
  • 旋转向上方向到Y
  • 旋转上述两方先后自然X方向能对上
    在这里插入图片描述

如何求矩阵

  • 根据前文所说旋转是正交矩阵,旋转的逆=旋转的转置
  • 因此将旋转到x,y,z轴上的点,代入到旋转逆矩阵
  • 下图左下角那逆矩阵可以代入x,y,z的点可以求得
  • 再转置就可以得到所求对应矩阵
    在这里插入图片描述

投影变换 Projection transformation

正交投影,不会带来近大远小的效果:
在这里插入图片描述在这里插入图片描述

透视投影:
在这里插入图片描述在这里插入图片描述

正交投影 Orthographic Projection

  • 相机位于原点,看向-Z,向上方向为Y
  • 丢弃掉所有Z坐标,所有内容都在xy上
  • 所有的内容都在xy都为-1~1的矩形上
    在这里插入图片描述
  • 在X轴上定义了左l和右r,[l,r]
  • Y轴定义了 [ b,t],下和上
  • Z轴定义了 [f,n],远和近,因为相机看向的是-z方向,远的物体z轴会越小
  • 然后通过平移缩放变成标准立方体
    在这里插入图片描述
    在这里插入图片描述

矩阵

  • 先将中心点平移得到最右侧平移矩阵
  • 再将x,y,z进行缩放[-1,1]范围
    在这里插入图片描述

透视投影 Perspective Projection

回顾齐次坐标

  • (x, y, z, 1), (kx, ky, kz, k != 0), (xz, yz, z2, z != 0) 在3维空间中都表示的是同样的点 (x, y, z)
  • 例如 (1, 0, 0, 1) 和(2, 0, 0, 2)都表示点 (1, 0, 0)

怎么去做透视投影

将透视投影拆成2个过程

  • 首先将Frustum的形状进行挤压(近平面永远不变,Z值不会发生变化,远平面的中心点也不会发生变化),挤成一个长方体
  • 然后进行正交投影
    在这里插入图片描述

怎样从透视投影到正交投影

如果只关注Y值,那么(x,y,z)挤压后就是相似三角形算出来
在这里插入图片描述
类推x也可以得到响应的值
在齐次坐标中,z值目前不知道,然后矩阵乘一个z值,得到下图
在这里插入图片描述
因此透视到正交的矩阵*(x,y,z,1)得到上图中得一个点,那计算后可得到矩阵:
在这里插入图片描述

怎样去求第三列?

  • 在近平面,所有的点都会保持不变
  • 所有的远平面中的点,Z值会保持不变

1、根据上述近平面的说法,将z值为n
在齐次坐标中可以映射成
在这里插入图片描述
那么透视到正交的矩阵,第三行可以表示成下图
!](https://img-blog.csdnimg.cn/direct/8f876f4e028c4e908d474d204f928231.png)
那么我们根据上图得到
An+B = n²

在这里插入图片描述

2、再根据上面远平面中心点(0,0,f)的挤压后保持不变的特性
得到下图
在这里插入图片描述
3、根据上述两个算式,可以求出A和B,从而得出对应矩阵
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值