2.2 变换(模型、视图、投影)

三维变换

  • 仿射变换
  • 三维旋转变换
    • 逆时针角度为正
    • 右手系原因,y轴逆时针看去是 zox 平面,所以转角应该是 − α -\alpha α
    • 也可理解为
      • z × x = y   , x × z = − y z \times x = y\ , \quad x \times z = -y z×x=y ,x×z=y
        三维旋转矩阵
  • Rodrigues’ Rotation Formula
    • 给定过原点旋转轴 n, 旋转角 α \alpha α,旋转矩阵如下
    • 非过原点轴,先把轴平移到原点,旋转,再平移回去

RRF旋转矩阵

  • 四元数(略)

观测变换(Viewing transformation)

视图 (View)

  • 什么是视图变换
  • 模型变换与视图变换,两者通常一同处理
    • 改变模型动作,模型变换
    • 改变相机视角,视图变换
    • 拍照,相当于投影变换
  • 为什么要模型 / 视图变换
    • 因为模型有很多顶点
    • 这些顶点坐标是模型空间下的
    • 需要移动到世界坐标
    • 所以要做模型变换

定义相机

  • 位置 / position e ⃗ \quad \vec{e} e
  • 朝向 / gaze direction g ^ \quad \hat{g} g^
  • 向上方向 / Up direction t ^ \quad \hat{t} t^

定义相机

  • 约定俗成的相机
    • 永远放在原点
    • 永远朝向 − Z -Z Z
    • t ^ = Y \hat{t} = Y t^=Y

如何将相机移动到约定俗成位置

  • 相机变换过程
    • 平移到原点
    • 旋转   g ^ = − Z \ \hat{g} = -Z  g^=Z
    • 旋转   t ^ = Y \ \hat{t} = Y  t^=Y
    • 旋转   g × t = X \ g \times t = X  g×t=X
  • 相机变换矩阵推导(旋转矩阵可以逆向思维)
    相机变换矩阵

投影 (Projection)

  • 3D到2D
  • 正交是垂直
  • 透视投影平行线不再平行
    • 近大远小

正交(Orthography) M o \quad M_o Mo

  • 简单的正交投影
    • Z归零
    • 归一化   [ − 1 ,   1 ] \ [-1,\ 1]  [1, 1]
  • 常规的正交投影
    • 立方体中心平移到原点
    • 边长归一化   [ − 1 ,   1 ] \ [-1,\ 1]  [1, 1]
  • 正交变换矩阵如下:
    正交变换矩阵

透视(Perspective) M p \quad M_p Mp

  • 特点
    • 最广泛的投影
    • 近大远小
    • 平行线不再平行
  • 投影方法
    • 从透视变换到正交
    • 正交投影
    • 假设显示屏幕距原点距离为   n \ n  n
  • 透视到投影矩阵推导(根据以下三个点)
    • 通俗的讲,把梯形压缩成长方形
      • 中间点等比例变换
      • 近平面、远平面上的 Z Z Z 坐标不变

压缩图解
( x , y , z , 1 ) → ( x ′ , y ′ , z , 1 ) ( x ′ , y ′ , z ′ , 1 ) → ( x ′ , y ′ , z ′ , 1 ) (x, y, z, 1) \rightarrow (x', y', z, 1) \quad \quad (x', y', z', 1) \rightarrow (x', y', z', 1) (x,y,z,1)(x,y,z,1)(x,y,z,1)(x,y,z,1)

  • 透视变换矩阵如下
    M p = M o ⋅ ( n 0 0 0 0 n 0 0 0 0 n + z − n z 0 0 1 0 ) M_p = M_o \cdot \left( \begin{matrix} n & 0 & 0 & 0 \\ 0 & n & 0 & 0 \\ 0 & 0 & n+z & -nz \\ 0 & 0 & 1 & 0 \end{matrix} \right) Mp=Mon0000n0000n+z100nz0

透视变换,中间平面的 z z z 坐标如何变化?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值