GAMES101圖形學之光柵化(上)

前提

可以先看這個 《計算機圖形學基礎》之圖像的光柵化羹蚣,不看的話要記住以下幾件事:

  • 屏幕是由很多個像素組成的奢赂,分辨率就是指像素的數(shù)量
  • 先把一些 3D 物體在場景中擺放好确虱,光柵化就是從一個角度看這些物體买窟,把看到的畫面顯示在由很多像素組成的屏幕上的過程。
  • 一個像素只能顯示一種顏色俺附,你可以理解為一個像素就是一個正方形的小格子萎庭。
  • 一個像素里面有 RGB 三種顏色的強度,一般都是用的 8bit 寄存器光稼,也就是每個通道是 0-255 的強度或南。(2^8 = 256)

定義像素坐標

《計算機圖形學基礎》中定義的方式不同,這門課程的定義方式如下:


從 0 開始艾君,藍色格子的坐標為 (2,1)采够,藍色格子中心點坐標為 (2.5,1.5)。

視口變換

設定屏幕的寬為 weight 像素冰垄,高為 height 像素蹬癌。前面經(jīng)歷了 模型變換攝像機變換投影變換(MVP)之后逝薪,得到了一個 [-1,1]^3 的立方體之后隅要,需要將該立方體變換到屏幕上,也就是先放大 [weight/2,height/2]董济,再往右上移動 [weight/2,height/2]步清,就可以使得立方體原來 (-1,-1,0) 的點變換到屏幕坐標的 (0,0) 點。這里的深度感局,也就是 z 軸先不用管尼啡。

把標準立方體映射到屏幕

變換矩陣為:
大框框控制縮放暂衡,小框框控制平移

光柵化

因為模型是由很多三角形組成的询微,所以此時,這個畫面也依然是由很多三角形構(gòu)成狂巢,我們要把它變成一個個小方塊(像素)撑毛。(至于為什么是三角形,是因為三角形有良好的性質(zhì)唧领,比如可以根據(jù)三個角對內(nèi)部進行插值等)

要把左邊由三角形構(gòu)成的圖變成右邊藻雌,也就是使得右邊每一個像素都是單一的顏色

對于完全是橘色的像素,和完全是白色的像素很好上色斩个,但對于一半是橘色胯杭,一半是白色的如何給像素上色就是一個問題。
這就涉及到圖形學中一個常見的方法:采樣受啥。如何上色取決于某個位置是否在三角形內(nèi)部做个,最簡單的方法就是把這個位置定在像素中心點,那么問題就轉(zhuǎn)換成了每個像素中心點是否在三角形內(nèi)部滚局,如果我們有一個 Inside=F(x,y) (0≤x≤weight,0≤y≤height) 的連續(xù)函數(shù)居暖,那么只需要令 (x,y) 等于一個像素的中心點,得到一個 bool 值藤肢,代表了該點是否在三角形內(nèi)部太闺。這就是采樣,就是使連續(xù)函數(shù)離散化的過程嘁圈。上述是在二維空間的采樣省骂,在三維空間也可以采樣,比如對一個 SDF 3D 貼圖進行采樣得到其表示的模型最住。
回到如何給一半橘钞澳,一半白的像素上色的問題,對像素中心點采樣之后温学,如果該點在內(nèi)部略贮,則整體都是橘色,反之整體都是白色。
使用像素中心點采樣

確定是否在三角形內(nèi)

添完色

很明顯的鋸齒逃延,光柵化圖形學的問題之一览妖,下一章討論優(yōu)化辦法。

Inside 函數(shù)的實現(xiàn)

如何實現(xiàn)這個函數(shù)呢揽祥?看下面讽膏,判斷 Q 是否在三角形內(nèi)部。



使用三次叉乘(右手定則)即可:

  • P1P2 X P1Q > 0
  • P2P0 X P2PQ < 0
  • P0P1 X P0Q > 0

三個大小不一樣拄丰,所以 Q 不是在三條線的同一側(cè)府树,所以 Q 在三角形外部。
那是否所有的像素中心點都要采樣一次呢料按?也不是奄侠,對于一個三角形而言,只會覆蓋一個有限的矩形區(qū)域:


只需要遍歷藍色部分即可

進一步可能的優(yōu)化是每一行都取最左和最右载矿,對于那種瘦瘦長長斜斜的三角形來說會優(yōu)化很多:


指路

https://www.bilibili.com/video/BV1X7411F744?p=5

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末垄潮,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子闷盔,更是在濱河造成了極大的恐慌弯洗,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逢勾,死亡現(xiàn)場離奇詭異牡整,居然都是意外死亡,警方通過查閱死者的電腦和手機溺拱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門逃贝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人盟迟,你說我怎么就攤上這事秋泳。” “怎么了攒菠?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵迫皱,是天一觀的道長。 經(jīng)常有香客問我辖众,道長卓起,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任凹炸,我火速辦了婚禮戏阅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘啤它。我一直安慰自己奕筐,他們只是感情好舱痘,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著离赫,像睡著了一般芭逝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上渊胸,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天旬盯,我揣著相機與錄音,去河邊找鬼翎猛。 笑死胖翰,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的切厘。 我是一名探鬼主播萨咳,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼迂卢!你這毒婦竟也來了某弦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤而克,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后怔毛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體员萍,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年拣度,在試婚紗的時候發(fā)現(xiàn)自己被綠了碎绎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡抗果,死狀恐怖筋帖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情冤馏,我是刑警寧澤日麸,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站逮光,受9級特大地震影響代箭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜涕刚,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一嗡综、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧杜漠,春花似錦极景、人聲如沸察净。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽塞绿。三九已至,卻和暖如春恤批,著一層夾襖步出監(jiān)牢的瞬間异吻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工喜庞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留诀浪,地道東北人。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓延都,卻偏偏與公主長得像雷猪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子晰房,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

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