1境输、正交投影
上圖就是unity中的攝像機(jī)仪或,把攝像機(jī)設(shè)置為正交投影,我們可以在inspector界面調(diào)整clipplane的大小弹沽,可以發(fā)現(xiàn)無(wú)論怎么調(diào)整檀夹,far和near都不會(huì)相等,下面會(huì)對(duì)在推導(dǎo)的過(guò)程中對(duì)這一現(xiàn)象做出解釋策橘。
在做投影的時(shí)候,x和y的值會(huì)被縮放到[-1,1]娜亿,而z的值在dx里面是[0,1],在opengl是[-1,1]丽已。
現(xiàn)在設(shè)六面體的寬是w,高是h买决,近裁剪平面距攝像機(jī)距離是n沛婴,遠(yuǎn)裁剪平面距攝像機(jī)的距離是f。
那么x的取值范圍就是-w/2<x<w/2,要把x映射到-1<x<1,首先式子兩邊乘以2得到-w<2x<w督赤,再給兩邊同時(shí)除以w得到-1<2x/w<1
就把x映射到了-1到1之間嘁灯。那么映射之后的x'=2x/w。
同理躲舌,y也需要映射到-1到1之間丑婿,那么映射之后的y'=2y/h
z有點(diǎn)不一樣,xy因?yàn)槟J(rèn)在中心所以不需要平移没卸,只需要縮放就行了羹奉。z的取值范圍在[n,f]之間。寫成不等式的形式约计,
n<z<f诀拭,首先兩邊同時(shí)減去n得到0<z-n<f-n,在同時(shí)除以f-n(這就是f和n不能相等的原因)0<(z-n)/(f-n)<1煤蚌,這就把z映射到了[0,1]耕挨,如果要映射到[-1,1]细卧,就再給不等式兩邊乘以2,然后減去1就行了筒占。
有了上面的關(guān)系式酒甸,我們很輕松能把這個(gè)過(guò)程用4x4矩陣來(lái)表示: