2019-01-20

在OpenGL中用Projection Matrix 分別左乘和右乘Scale Matrix或Uniformity Diagonal Matrix 的效果


環(huán)境描述

本文所述Projection Matrix均對(duì)應(yīng)右手性(right handedness)的幀(frame)變換竿奏,也即near/far值都為負(fù)值竖瘾,Projection Matrix變換所產(chǎn)生的z-buffer值越大距離眼睛幀數(shù)坐標(biāo)原點(diǎn)(camera)越近透乾。 在OpenGL環(huán)境中對(duì)應(yīng)非默認(rèn)的深度檢測(cè)函數(shù)設(shè)置glDepthFunc(GL_GREATER)怒详。

基準(zhǔn)Projection Matrix變換過(guò)程及成像參數(shù)描述

我們將最初的Projection Matrix對(duì)應(yīng)的MVP變換稱為基準(zhǔn)變換。Vertex Shader在執(zhí)行MVP變換時(shí),實(shí)際應(yīng)用于頂點(diǎn)(Vertices)的順序分別是Model Matrix,View Matrix奸腺,Projection Matrix。其中Model Matrix將對(duì)象坐標(biāo)變換為world coordinate血久,View Matrix將world coordinate變換為眼睛坐標(biāo)(eye coordinate)突照,Projection Matrix將眼睛坐標(biāo)變換為裁切clip coordinate。也就是說(shuō)MVP按照字面順序被先后應(yīng)用于vertex變換氧吐。為了后面描述的方便讹蘑,這里我們將基準(zhǔn)MVP變換的眼睛坐標(biāo)記為[Xe,Ye,Ze,1]?,clip coordinate記為[Xc,Yc,Zc,Wc]?. 在經(jīng)過(guò)clipping和perspective division之后末盔,clip coordinate變換為normalized device coordinate[Xn,Yn,Zn]?。最后normalized device coordinate被用于成像座慰。

注:?[X,Y,Z,W]?標(biāo)記表示集合為垂直集合陨舱。

我們從四種情形分別進(jìn)行討論,首先給定:

P為標(biāo)準(zhǔn)的View Frustum Projection Matrix

S為Scale Affine Matrix(對(duì)角線vector為[3,3,3,1])

O為Uniformity Diagonal Matrix(對(duì)角線vector為[3,3,3,3])版仔。

情形一:將P替換為PS游盲,即Projection Matrix 右乘(right multiplies)Scale Affine Matrix

對(duì)最終成像的影響:成像中可能會(huì)少一些對(duì)象,也可能會(huì)多一些對(duì)象蛮粮,但是和基準(zhǔn)變換相比保留的對(duì)象的成像沒(méi)有變化

這種情況我們按照Vertex Shader變換頂點(diǎn)時(shí)的應(yīng)用順序益缎,在Projection Matrix變換前,對(duì)眼睛坐標(biāo)沿著每個(gè)axis進(jìn)行了3倍放大然想,這樣就獲得了眼睛坐標(biāo)[3Xe,3Ye,3Ze,1]?莺奔。之后眼睛坐標(biāo)被Projection Matrix變換為clip coordinate[3Xc,3Yc,Zc‘,3Wc]?,考慮由于所有新的Xc变泄,Yc令哟,Zc坐標(biāo)的裁切范圍都被放大了3倍,但是其中Zc‘并沒(méi)有同比放大3倍妨蛹,可據(jù)Projection Matrix計(jì)算推算存在可能使得原來(lái)vertex的Zc‘<=-3Wc屏富,可能與基準(zhǔn)變換原來(lái)的頂點(diǎn)相比有一部分深度(Ze值)小的頂點(diǎn)(遠(yuǎn)離相機(jī))會(huì)被裁切,而原來(lái)vertex的Zc'也不如原來(lái)那樣接近3Wc蛙卤,可能會(huì)導(dǎo)致基準(zhǔn)變換被裁切的near值前的一部分點(diǎn)現(xiàn)在不被裁切役听。對(duì)于view frustum中留下的vertex,在執(zhí)行perspective division之后所獲得的normalized device coordinate為[Xn,Yn,Zn‘]?表窘,(Xn,Yn)的值沒(méi)變化甜滨,從而我們看到最終成像和基準(zhǔn)成像沒(méi)變化(除了可能會(huì)少一些原來(lái)的對(duì)象乐严,也可能會(huì)多出一些新對(duì)象外)。

情形二:將P替換為PQ衣摩,即Projection Matrix 右乘(right multiplies)Uniformity Diagonal Matrix

對(duì)最終成像的影響:成像相比基準(zhǔn)成像沒(méi)有任何變化

相比于情形一昂验,scale matrix首先將眼睛坐標(biāo)的每個(gè)部件都放大3倍,包括第4部件-[3Xe,3Ye,3Ze,3]?艾扮。這樣經(jīng)過(guò)projection matrix變換后既琴,我們就獲得新的clip coordinate?[3Xc,3Yc,3Zc,3Wc]。從新的clip coordinate我們可以看出雖然x泡嘴,y甫恩,z軸坐標(biāo)都同比放大3倍,但是w變量也被放大三倍酌予,這樣裁切后相比基準(zhǔn)變化的頂點(diǎn)完全一樣磺箕。再經(jīng)過(guò)perspective division后奖慌,我們獲得和基準(zhǔn)變換完全相同的[Xn,Yn,Zn]?。也就是說(shuō)成像不會(huì)有任何變化松靡。

情形三:將P替換為SP简僧,即Projection Matrix 左乘(left multiplies)Scale Affine Matrix

對(duì)最終成像的影響:成像中對(duì)象的數(shù)目會(huì)經(jīng)歷(可能劇烈)減少,同時(shí)view frustum之外的新頂點(diǎn)不可能再進(jìn)入view frustum之內(nèi)雕欺。相比基準(zhǔn)留下的對(duì)象成像各坐標(biāo)放大3倍岛马,同樣頂點(diǎn)的對(duì)象成像比基準(zhǔn)放大9倍

這種情形我們直接從裁切坐標(biāo)開(kāi)始考慮,我們可以理解為基準(zhǔn)MVP變換后生成裁切坐標(biāo)[Xc,Yc,Zc,Wc]?屠列,然后Scale Matrix將前3個(gè)部件放大3倍成為新的clip coordinate-[3Xc,3Yc,3Zc,Wc]?啦逆。所有的部件都放大3倍,除了W變量(Wc)保留不變脸哀。這會(huì)導(dǎo)致在clipping phase蹦浦,原來(lái)的頂點(diǎn)在x,y撞蜂,z維度上被裁切掉的概率大大增加盲镶。因?yàn)樯傻腣iew Frustum同比放大3倍,而裁切范圍沒(méi)變蝌诡,所以不可能有新的點(diǎn)再進(jìn)入frustum溉贿。在經(jīng)歷perspective division之后,相比原來(lái)的頂點(diǎn)浦旱,獲得的新normalized device coordinate變?yōu)閇3Xn,3Yn,3Zn]?宇色。也就是說(shuō)最終的成像會(huì)放大9倍。

情形四:將P替換為QP颁湖,即Projection Matrix 左乘(left multiplies)Uniformity Diagonal Matrix

對(duì)最終成像的影響:成像相比基準(zhǔn)成像沒(méi)有任何變化

從裁切過(guò)程開(kāi)始同于情形二宣蠕。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市甥捺,隨后出現(xiàn)的幾起案子抢蚀,更是在濱河造成了極大的恐慌,老刑警劉巖镰禾,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件皿曲,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡吴侦,警方通過(guò)查閱死者的電腦和手機(jī)屋休,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)备韧,“玉大人劫樟,你說(shuō)我怎么就攤上這事。” “怎么了毅哗?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵听怕,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我虑绵,道長(zhǎng)尿瞭,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任翅睛,我火速辦了婚禮声搁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘捕发。我一直安慰自己疏旨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布扎酷。 她就那樣靜靜地躺著檐涝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪法挨。 梳的紋絲不亂的頭發(fā)上谁榜,一...
    開(kāi)封第一講書(shū)人閱讀 52,394評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音凡纳,去河邊找鬼窃植。 笑死,一個(gè)胖子當(dāng)著我的面吹牛荐糜,可吹牛的內(nèi)容都是我干的巷怜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼暴氏,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼延塑!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起答渔,我...
    開(kāi)封第一講書(shū)人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤页畦,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后研儒,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡独令,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年端朵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片燃箭。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡冲呢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出招狸,到底是詐尸還是另有隱情敬拓,我是刑警寧澤邻薯,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站乘凸,受9級(jí)特大地震影響厕诡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜营勤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一灵嫌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧葛作,春花似錦寿羞、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至虱岂,卻和暖如春玖院,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背量瓜。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工司恳, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绍傲。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓扔傅,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親烫饼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子猎塞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 二十一世紀(jì)舊體詩(shī)詞風(fēng)騷榜 上榜絮語(yǔ): 兩個(gè)修未到,真得修未到哉杠纵? 長(zhǎng)調(diào)榜填滿荠耽,有點(diǎn)為了填滿而填滿的感覺(jué)。...
    張成昱閱讀 1,218評(píng)論 3 41
  • 四年級(jí)下冊(cè)數(shù)學(xué)應(yīng)用題及答案大全 2018-06-11 5頁(yè) 5.0分 李小丹 用App查看 四年級(jí)下冊(cè)數(shù)學(xué)應(yīng)用題及...
    雷柯萌閱讀 162評(píng)論 0 1
  • 2019.1.20晨會(huì)發(fā)言 親愛(ài)的小伙伴們比藻,早上好铝量!我叫黃麗。 坐標(biāo):山西運(yùn)城 三個(gè)標(biāo)簽:1.一個(gè)五歲男孩的媽媽 ...
    愛(ài)的吸引力閱讀 223評(píng)論 0 0
  • https://leetcode.com/problems/word-ladder/
    Anaven閱讀 215評(píng)論 0 0
  • 早晨起來(lái)银亲,就有莫名的期待慢叨。兒子仍在房間早讀,先生仍在廚房忙碌务蝠,無(wú)人理我拍谐。這樣特別的日子,竟然無(wú)人理我!好在我有事做...
    葦絮輕揚(yáng)閱讀 270評(píng)論 7 7