【GAMES101】Lecture 3 & Lecture 4

Lecture 3 Transformation

二维变换

  • 旋转
    在这里插入图片描述
  • 缩放
  • 镜像
  • 错切
    在这里插入图片描述
  • 线性变换 = 旋转 + 缩放 + 切变
  • 仿射变换 = 线性变换 + 平移
  • 齐次坐标系
    • n维 的点/向量,用 [n + 1 × 1] 的列向量表示
    • 向量具有平移不变性
    • 注意平移和旋转的先后顺序
    • 变换用 [(n + 1) × (n + 1)] 的矩阵左乘来表示,从右到左
    • 多个变换可以组合起来变成一个矩阵→加速计算
    • 变换:合成 or 分解
    • 注意:上述变换均认为(0, 0)为中心, 分解则通过平移使中心到(0, 0),旋转后再平移回去

在这里插入图片描述

三维变换

在这里插入图片描述

Lecture 4 Transformation Cont.

MVP

  • Model transformation 模型变换 (placing objects)
    想象一下:世界坐标系下有很多Object,用一个变化矩阵把它们的顶点坐标从Local坐标系(相对)转换到世界Global坐标系(绝对)。这就是placing objects。
  • View transformation 视图变换 (placing camera)
    想象一下:我们看到的画面由摄像机捕捉,摄像机参数决定了我们在屏幕上看到的东西,这一步可以将世界坐标系转换到摄像机坐标系。
  • Projection transformation 投影变换
    摄像机坐标系,视锥体,再归一化一下

视图变换

相机置于原点,Y轴向上,面向-Z方向

投影变换

  • 相似三角形
    在这里插入图片描述

  • 正交投影
    在这里插入图片描述

  • 透视投影

    • 在Z轴上是不变的
    • 原平面中心点:挤压后还在中心点
    • A ⋅ n + B = n 2 A\cdot n + B = n^2 An+B=n2
      A ⋅ f + B = f 2 A\cdot f + B = f^2 Af+B=f2
      可得: A = n + f A = n + f A=n+f B = - n ⋅ f B = -n \cdot f B=nf
      在这里插入图片描述
  • 课后思考

    • ( n + f ) / 2 (n + f) / 2 (n+f)/2为例: 变深度为 ( n 2 + f 2 ) / ( n + f ) (n ^ 2 + f ^ 2) / (n + f) (n2+f2)/(n+f)
    • 推导:
      ( n 0 0 0 0 n 0 0 0 0 n + f − f n 0 0 1 0 ) \begin{pmatrix} n & 0 & 0 & 0 \\ 0 & n & 0 & 0 \\ 0 & 0 & n+f & -fn \\ 0 & 0 & 1 & 0 \\ \end{pmatrix} n0000n0000n+f100fn0 应用 z = ( n + f ) / 2 z =(n + f) / 2 z=(n+f)/2得:
      P ′ = M ⋅ P = ( 0 0 ( n + f ) 2 / 2 − f n ( n + f ) / 2 ) P' = M \cdot P = \begin{pmatrix} 0 \\ 0 \\ (n+f)^2/2 - fn \\ (n+f)/2 \\ \end{pmatrix} P=MP= 00(n+f)2/2fn(n+f)/2 ,即 ( 0 0 ( n 2 + f 2 ) / 2 ( n + f ) / 2 ) \begin{pmatrix} 0 \\ 0 \\ (n^2+f^2)/2 \\ (n+f)/2 \\ \end{pmatrix} 00(n2+f2)/2(n+f)/2
      进行归一化: P ′ ′ = ( 0 / ( ( n + f ) / 2 ) 0 / ( ( n + f ) / 2 ) ( n 2 + f 2 ) / 2 / ( ( n + f ) / 2 ) 1 ) = ( 0 0 ( n 2 + f 2 ) / ( n + f ) 1 ) P'' = \begin{pmatrix} 0 / ((n+f)/2) \\ 0 / ((n+f)/2) \\ (n^2+f^2)/2 / ((n+f)/2) \\ 1 \\ \end{pmatrix} = \begin{pmatrix} 0 \\ 0 \\ (n ^ 2 + f ^2)/ (n+f) \\ 1 \\ \end{pmatrix} P′′= 0/((n+f)/2)0/((n+f)/2)(n2+f2)/2/((n+f)/2)1 = 00(n2+f2)/(n+f)1
      在这里插入图片描述
  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值