Lecture04 Transformation Cont.
一、3D Transformations
用4×4的矩阵来表示三维变换
计算的顺序和二维变换一样,先进行线性变换,再进行平移。
1. 缩放
2. 平移
3. 旋转(绕某个轴旋转)
绕X轴旋转时,X轴对应的行没有变化,Y轴和Z轴进行旋转
绕Y轴旋转的式子有所不一样的原因是,Y是通过Z叉乘X得到的,所以是反的
4. 绕任意轴旋转
通过简单轴旋转来进行复杂轴旋转
Rodrigues’ Rotation Formula
绕任意轴n(过原点),旋转α角度
如果是任意轴(起点不在原点),就先平移到过原点方向,再进行旋转
二、Viewing(观测) transformation
1. View(视图)/Camera transformation
① 什么是视图变换
MVP变换:
- step1: model transformation
- step2: view transformation
- step3: projection transformation
② 如何做视图变换
- Position
- Look-at / gaze direction
- Up direction
③ 如何进行视图变换
- 相机永远放在原点,永远看向-Z轴方向
- 将相机移动到原点位置,看向-Z轴方向
-
先做平移
-
再将g转到-Z轴方向,t转到Y轴方向,(g×t)转到X轴方向
(先考虑逆变换会好算些,再逆过来就行)
why:因为旋转矩阵是正交矩阵,所以逆矩阵就是转置后的矩阵
-
物体跟相机一起移动,直到移动到原点(up at Y, look at -Z)
2. Projection(投影) transformation
① Orthographic(正交) projection
- A simple way of understanding
- 将相机放在原点,看向-Z轴,竖直方向Y轴;
- 不考虑Z轴
- 缩放并平移到[-1, 1]2矩形区域内
- In general
- 将长方体平移、缩放为标准立方体
- 转换矩阵
- 先平移到原点,再做缩放
- 先平移到原点,再做缩放
- 将长方体平移、缩放为标准立方体
② Perspective(透视) projection
-
最广泛的;近大远小;平行线不再平行,汇交到一个点
-
数学知识:
- (x, y, z, 1)和(kx, ky ,kz, k, k != 0) 表示同一个点(1, 0, 0)
-
如何做正交投影
- 先将棱台挤压成长方体
- 近平面永远不变
- 挤了之后Z轴不变
- 中心点不变
- 通过相似三角形找到x,y,z的对应关系
- 可以得到
- 可以得到挤压物体的矩阵
- 近平面和远平面的z值不会改变
- 第3行肯定为(0, 0, A, B)
- 在远平面上z值也不会改变
- 得到最终的矩阵
- 先将棱台挤压成长方体
-
再做一次正交投影
-
有时候会用角度范围 field-of-view (fovY) 和 宽高比 aspect ratio
如何将fovY和aspect转换到 l,r,b,t?