GAMES101-4小笔记

GAMES101-4小笔记


其实已经写好了将近半个月。。。

Lecture 04

三维变换

GAMES101-4小笔记

旋转变换

GAMES101-4小笔记
绕谁转谁不变,即为1。
需要关注的是绕y轴旋转,和其他两种看上去“相反”的原因是因为,在xyz坐标系中,三者是一种循环对称的形式,x × y = z、y × z = x、z × x = y,并不是x × z = y,所以绕y轴转会“相反”。

任意旋转用绕三轴的旋转来表达:
GAMES101-4小笔记
默认认为旋转轴起点在原点,如果旋转轴不过原点,就多一个平移的过程而已,平移-旋转-平移。

观测变换(Viewing transformation)

学了那么多变换,目的是将三维空间中的物体变成二维的一张照片,就涉及到了从三维到二维的变换。
GAMES101-4小笔记
模型-视图-投影(MVP)。

视图变换

GAMES101-4小笔记
可以理解当相机和所有物体一起移动时,得到的结果是一样的。
所以不妨把相机摆在原点,让物体移动。
GAMES101-4小笔记
将相机移到原点,并旋转到xyz轴比较难,但是反过来比较简单。
GAMES101-4小笔记
然后其他物体跟着相机一起动。

投影变换

正交投影和透视投影

正交投影

GAMES101-4小笔记

透视投影

应用最广泛。
回忆一下知识点:
GAMES101-4小笔记
透视投影的过程:
GAMES101-4小笔记
将透视投影的过程拆成两半。
先在远平面(f)处进行挤压,挤压到和*面(n)一样,就挤成了一个空间中的长方体,然后再做一次正交投影,将f平面投影到n平面。
在过程中我们规定,n平面始终不变,f平面的z轴位置不变,f平面的中心挤压后还是中心。
挤压过程:
GAMES101-4小笔记
GAMES101-4小笔记只有远*面的z不变,其他会变化,所以待定。
GAMES101-4小笔记
只剩下第三行,求出即可。
已经知道远*面的z不变,则在*面上:
GAMES101-4小笔记
和x,y无关,所以前两位是0。
在远平面上,中点变换后还是中点:
GAMES101-4小笔记
所以有:
GAMES101-4小笔记
GAMES101-4小笔记
question:已知远*面的z不变,那中间部分在挤压过程中,z是靠近f还是会远离f?

答:更靠f平面。求得z‘ = (n+f)z - fn 需要注意由于齐次坐标最后一个是z 需要除以z 最终结果是 z’ = n + f - fn/z。
不妨取z=(n+f)/2,则z’-z = (n-f)^2/2(n+f),又n+f<0(注意正负),结果小于0,z’<z,所以更靠近f。

上一篇:games101 - 1 - Rasterization


下一篇:GAMES101-变换矩阵