计算机图形学笔记 #1
3D Rotation
表示方法1:欧拉角
通过围绕xyz轴的旋转矩阵的乘积来表示整个旋转。以下讨论均在齐次坐标下进行。For example:
这是一个在齐次坐标下的旋转矩阵(围绕x)。最后的变换总是可以写成
表示方法2:Rodrigues' Rotation Formula
考虑一个旋转\(\alpha\)角度,以\(\mathbf{n}\)为旋转轴,则旋转可以表示为
View / Camera Transformation
MVP三部曲
给物体拍照分三步:
- Find a good place (Model transformation)
- Find a good angle (View transformation)
- Take a photo (Project transformation)
View transformation
Define a camera
定义一个相机需要三个要素:
- Position \(\mathbf{e}\)
- Gaze Direction \(\mathbf{g\times [f,n]}到一个正则立方体(Canonical Cube)\)[-1,1]^3\(中来\)。与之前简单的方法不同的是,这里的步骤为:
- 移动中心
- Scale
- Up direction \(\mathbf{t}\)
考虑到如果物体与相机同步运动的话观察到的物体还是不变的,那么不妨把相机固定到O点 ,同时上方为y
,看向-z。上述是约定俗成的。
下面来考虑如何通过矩阵\(M_v\)把相机转换到上述规定的位置上面去
- Translate \(\mathbf{e}\) to the origin
- Rotate \(\mathbf{g}\) to -z
- Rotate \(\mathbf{t}\) to y
- Rotate \(\mathbf{g}\times \mathbf{t}\) to x
最后一个在前面三个步骤完成的时候自然就成立了。下面来书写这个矩阵。以下讨论的几个矩阵都是在齐次坐标下进行的
Step1:移动 e
Step2;旋转
考虑它的逆变换:x to \(g \times t\) , y to t, z to -g。这里我们把几个方向都取成单位向量(其实方向本来就应该是定义成单位向量的形式)
由于左侧部分的正交性,我们可以写出其逆矩阵为
Projection
Orthographic Projection
简简单单的三部曲
- 相机移动到上述规定的位置
- 丢物体的z坐标
- 把物体的坐标变换到\([-1,1]^2\)中来
规范点的做法
我们希望把一个立方体区域\([l,r]\times [b,t]\times [f,n]\)到一个正则立方体(Canonical Cube)\([-1,1]^3\)中来。与之前简单的方法不同的是,这里的步骤为:
- 移动中心
- Scale
注意这里关于前后的定义: 这里的前实际上是z轴的负方向更远,也就是说对于我相机所拍摄的画面看,“远”是前面,“近”是后面
这个变换的矩阵是显而易见的
Perspective Projection
以下内容全部变成了\(\mathbb{RP}^3\)或者\(\mathbb{RP}^2\)中的数学问题
透视投影的步骤:
- “挤压”你的视锥到一个立方体 这一步相当于把原来的空间变换到了“看到的”空间
- 做正交投影
可以写出两步的矩阵变换如下:
参数的假定如图所示

第一步得目标为:

目标:
考虑到在齐次坐标的情况下:
这里的第三个维度之所以为 “*”,是因为这个式子是针对所有变换的点的,并不是单独指的前面的n平面与远处的f平面(这里的n、f两个平面z坐标在变换下规定为不变)
初步确定这个矩阵为:
现在来确定第三行的取值。考虑到第三行x、y都与z的取值没有关系,因而第三行为\((0\ 0\ A\ B)\)的形式。考虑Near plane & Far plane有:
则有:
解得
综上可以求得变换矩阵为:

浙公网安备 33010602011771号