GAMES101-4小笔记
其实已经写好了将近半个月。。。
Lecture 04
三维变换
旋转变换
绕谁转谁不变,即为1。
需要关注的是绕y轴旋转,和其他两种看上去“相反”的原因是因为,在xyz坐标系中,三者是一种循环对称的形式,x × y = z、y × z = x、z × x = y,并不是x × z = y,所以绕y轴转会“相反”。
任意旋转用绕三轴的旋转来表达:
默认认为旋转轴起点在原点,如果旋转轴不过原点,就多一个平移的过程而已,平移-旋转-平移。
观测变换(Viewing transformation)
学了那么多变换,目的是将三维空间中的物体变成二维的一张照片,就涉及到了从三维到二维的变换。
模型-视图-投影(MVP)。
视图变换
可以理解当相机和所有物体一起移动时,得到的结果是一样的。
所以不妨把相机摆在原点,让物体移动。
将相机移到原点,并旋转到xyz轴比较难,但是反过来比较简单。
然后其他物体跟着相机一起动。
投影变换
正交投影和透视投影
正交投影
透视投影
应用最广泛。
回忆一下知识点:
透视投影的过程:
将透视投影的过程拆成两半。
先在远平面(f)处进行挤压,挤压到和*面(n)一样,就挤成了一个空间中的长方体,然后再做一次正交投影,将f平面投影到n平面。
在过程中我们规定,n平面始终不变,f平面的z轴位置不变,f平面的中心挤压后还是中心。
挤压过程:
只有远*面的z不变,其他会变化,所以待定。
只剩下第三行,求出即可。
已经知道远*面的z不变,则在*面上:
和x,y无关,所以前两位是0。
在远平面上,中点变换后还是中点:
所以有:
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。