GAMES101 Transformation 变换

Rongying Liu 课程

Transformation 变换

2D 变换

线性变换 ——使用矩阵

image

仿射变换 Affine Transformation

缩放变换Scale (not uniform/uniform)

缩放某一比例,可以写成矩阵形式

反射Reflection Matrix

斜切 Shear Matrix

image

旋转 Rotate Matrix

默认绕原点逆时针旋转

image

齐次坐标

增加一个维度,解决了平移用矩阵表示的问题

而且满足:

​ vector + vector = vector

​ vector - vector = vector

​ point - point = vector

​ point + point = 两个点的中点

image

总结

image

3D 变换

先仿射变换,再平移!(先平移的话旋转中心点会改变)

旋转 ——绕某轴旋转

例:绕x轴旋转,x坐标不变

注意:$R_{y}(\alpha)$不一样(原因:y是x与z的叉乘的反方向,$\alpha$取负值)

image

Rodrigue’s Rotation Formula

旋转轴n和旋转角$\alpha$, (如果该轴不在原点,先平移至原点,旋转完再平移回去)

$$R(n,\alpha) = \cos_(\alpha)I+(1-\cos_(\alpha))nn^{T}+\sin_{\alpha}\left(

\begin{matrix}

0&-n_{z}&n_{y}\

n_{z}&0&-n_{x}\

-n_{y}&n_{x}&0\

\end{matrix}

\right)

$$

旋转矩阵的特殊性质:

转置矩阵==逆矩阵

(旋转负角度

image

View transformation (placing camera)

Define the camera 对相机定义

  • Position $\hat{e}$
  • Look-at/gaze direction $\hat{g}$
  • Up direction $\hat{t}$

image

相机的标准位置

——将相机一直变换至原点,Up at Y,look at -Z,让物体跟随相机变换

如何变换?

  1. 先平移至原点

  2. 旋转角度

  3. (对其他物体进行相同操作)

    image

Projection Transformation👇

两种投影:视角投影vs正交投影

image

Orthographic Projection 正交投影

简单的理解:

将z轴消除,将xy坐标成比例放入[-1,1]


实际上:

先平移后缩放,(注意观测方向为-Z,z轴上坐标变换略不同(n大f小,为n-f))

image

Perspective Projection 透视投影

1.用任意点变换n倍(n未知)时,满足:image从而推出变换矩阵$M_{persp \to ortho}$的值

image

2.再利用near面/far面上点的深度z不变。计算出M矩阵第三行参数

应为:(0,0,n+f,-nf)

3.最后,有:$$M_{persp} = M_{ortho}M_{persp\to ortho}$$,变换至标准立方体

定义视锥 –透视投影

用两个参数描述视锥:

长宽比 aspect ratio、垂直可视角度 fovY

image

Canonical Cube to Screen (在屏幕上绘制)

确定屏幕位置

对像素位置定义:见图片右侧

image

Viewport transform 视口变换——对x、y进行变换

缩放+平移:将[-1,1]的立体缩放变换至[width,height],再平移使左下角为原点

image

  • Title: GAMES101 Transformation 变换
  • Author: Rongying Liu
  • Created at : 2025-02-27 17:22:31
  • Updated at : 2025-03-05 19:56:37
  • Link: https://github.com/Roinnnn11/Roinnnn11.github.io/2025/02/27/计算机图形学/变换Transformation/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments