- 齊次空間
要理解3d的齊次空間,我們先理解2d的齊次空間。
2d的齊次空間可以理解為三維空間上的向量在(x, y, 1)平面上的投影. 投影結(jié)果是(x/z, y/z, 1)

- 齊次矩陣
- 齊次矩陣能夠?qū)ο蛄孔龇律渥儞Q,也就是能夠?qū)⑵揭萍尤氲骄仃囍?,這是3*3矩陣做不到的。
- 而4*3矩陣雖然也能做仿射變換,但是不能求逆矩陣,因?yàn)椴皇欠疥嚒?/li>
-齊次矩陣的透視投影
空間坐標(biāo)與其投影到投影平面上的坐標(biāo)的關(guān)系:
我們構(gòu)造齊次矩陣來實(shí)現(xiàn)這樣的計(jì)算

- 平截頭體

這樣構(gòu)造矩陣,得到齊次向量,然后用x,y,z分量除以w分量就得到真實(shí)的(x,y,z).
真正的投影也是在這一步發(fā)生的。這個(gè)在shader里面做。

- 計(jì)算縮放系數(shù)
fov為90°的時(shí)候,就相當(dāng)于透視投影的比例為1:1.當(dāng)fov變動的時(shí)候,投影的比例也會跟著變動。
焦距越大,fov就越小,像在投影平面的比例就越大,這就是長焦鏡頭。
縮放系數(shù)和視場角有關(guān)系,最終會提現(xiàn)在x方向和y方向的縮放分量上。
計(jì)算縮放系數(shù)

透視投影矩陣
先看看構(gòu)造好的投影矩陣

x,y方向的縮放:主要是將相機(jī)坐標(biāo)系下的坐標(biāo)
zoomx 在x方向的縮放值
zoomy 在y方向的縮放值
z方向縮放:主要是為了將z值歸一化到-1到1之間
(f+n)/(f-n) 在z方向的縮放量
z方向平移:主要是為了將z值歸一化到-1到1之間
-2nf/(f-n) 在z方向的平移量
|