圖形基礎(chǔ)-潘多拉之盒

前言

現(xiàn)實(shí)中,光照射到物體上熬尺,物體反射光進(jìn)入人眼摸屠,形成顏色,組合成視覺(jué)效果粱哼,相機(jī)模擬這一過(guò)程季二,圖形亦然。圖形渲染根據(jù)3d場(chǎng)景生成2d圖像,圖像盡可能模擬自然胯舷,盡可能真實(shí)刻蚯。

渲染有兩種方式,射線追蹤和光柵化桑嘶,前者更接近自然規(guī)則炊汹,實(shí)現(xiàn)簡(jiǎn)單效果好,不過(guò)計(jì)算量大逃顶,廣泛應(yīng)用電影CG等離線渲染讨便,后者效率高,實(shí)現(xiàn)自然效果比較麻煩以政,同時(shí)GPU硬件支持霸褒,廣泛應(yīng)用游戲等實(shí)時(shí)渲染。

簡(jiǎn)介

計(jì)算機(jī)圖形盈蛮,通過(guò)計(jì)算機(jī)模擬3d世界废菱,并最終通過(guò)2d屏幕展示。主要包括Modeling/Rendering/Animation抖誉。

Modeling殊轴,通過(guò)數(shù)學(xué)方式建立3d幾何數(shù)據(jù)√宦可以通過(guò)3dMax梳凛、Blender等建模軟件,也可以通過(guò)數(shù)學(xué)公式表達(dá)梳杏。

Rendering,接受3d幾何數(shù)據(jù)淹接,最終顯示在2d屏幕上十性,常見(jiàn)有光柵化和射線追蹤。

Animation塑悼,間隔一定時(shí)間變換屏幕顯示劲适,造成動(dòng)畫(huà)錯(cuò)覺(jué)。

這里主要是介紹Rendering即渲染厢蒜,模型和動(dòng)畫(huà)會(huì)在后續(xù)3ds Max詳解霞势。

數(shù)學(xué)

數(shù)學(xué)是一切自然科學(xué)的基石,圖形學(xué)大量使用數(shù)學(xué)知識(shí)斑鸦。

坐標(biāo)系

為了描述位置愕贡、方向等信息,需要選擇一個(gè)度量的參考點(diǎn)巷屿,這個(gè)就是坐標(biāo)系固以,常見(jiàn)的有笛卡爾坐標(biāo)系,用互相垂直的軸作為原點(diǎn)參考。2d的有x和y軸憨琳,3d的有xyz三個(gè)互相垂直的軸诫钓,常見(jiàn)的有左手坐標(biāo)系和右手坐標(biāo)系,dx采用左手坐標(biāo)系篙螟,opengl采用右手坐標(biāo)系菌湃。計(jì)算機(jī)的顯示屏幕,本質(zhì)上是一個(gè)橫豎布局的畫(huà)布遍略,左上角為原點(diǎn)惧所,向下為正,y軸依次增加墅冷,向左為正纯路,x軸依次增加。手機(jī)屏幕1920 x 1080寞忿,橫向x軸1920個(gè)像素驰唬,y軸1080個(gè)像素,最終手機(jī)渲染的圖像會(huì)顯示在這個(gè)像素區(qū)域腔彰。

向量和矩陣

向量用來(lái)表達(dá)幾何數(shù)據(jù)叫编,矩陣用來(lái)變換向量。向量用來(lái)表達(dá)3d空間的位置霹抛、方向搓逾、法線等等幾何數(shù)據(jù),向量常見(jiàn)的運(yùn)算有杯拐,求長(zhǎng)霞篡、歸一、相乘端逼、點(diǎn)積和叉積等等朗兵,有良好的數(shù)學(xué)和幾何屬性,用來(lái)表達(dá)基礎(chǔ)幾何數(shù)據(jù)顶滩。矩陣的初衷用來(lái)解決數(shù)學(xué)函數(shù)的求解余掖,有良好的數(shù)學(xué)表達(dá)能力,被發(fā)覺(jué)用來(lái)做變量變換礁鲁。矩陣常見(jiàn)的運(yùn)算有盐欺、相乘、轉(zhuǎn)置仅醇、求反等等冗美。向量常見(jiàn)的三種變化移動(dòng)、縮放和旋轉(zhuǎn)析二,3d向量坐標(biāo)系轉(zhuǎn)換墩衙、轉(zhuǎn)換成2d并最終轉(zhuǎn)換成屏幕空間的2d像素等等,用矩陣都可以很好很高效的實(shí)現(xiàn)。

幾何

使用數(shù)據(jù)來(lái)表達(dá)3d世界漆改,可以使用網(wǎng)格(Mesh)心铃,也可以使用數(shù)學(xué)公式,前者是渲染和很多操作的基石挫剑,后者也用于很多地方的計(jì)算去扣。一個(gè)圓形,既可以用mesh樊破,很多三角形來(lái)模擬愉棱,也可以使用數(shù)學(xué)公式,(x-x0) * (x - x0) + (y - y0) * (y - y0) = r * r來(lái)表達(dá)哲戚。比如在引擎中導(dǎo)入模型奔滑,基礎(chǔ)的mesh數(shù)據(jù)外面往往帶有包圍盒或者包圍球,渲染的時(shí)候顺少,首先判定包圍盒或球是否在視錐體朋其,如果在進(jìn)行后續(xù)流程,不在的話脆炎,直接剔除梅猿,這個(gè)叫做攝像機(jī)剔除,大大提高場(chǎng)景渲染效率秒裕。射線相交的時(shí)候袱蚓,首先判定射線是否和包圍盒或者包圍球相交,如果相交几蜻,進(jìn)行后續(xù)步驟喇潘,大大提高相交效率。

兩者都有大量運(yùn)用梭稚,這里主要是講Mesh颖低。網(wǎng)格主要包括點(diǎn)(Vector),線(Egde)和面(Face)哨毁。面有很多拓?fù)鋯卧褂帽容^多的三角形源武,三角關(guān)系比較穩(wěn)定扼褪,三角組成了最簡(jiǎn)單的面,沒(méi)有歧義粱栖,適用于大量數(shù)學(xué)運(yùn)算并且被GPU支持话浇,效率非常高。

渲染

根據(jù)3d場(chǎng)景生成2d圖像闹究,并在屏幕上顯示幔崖,圖像可以是真實(shí)感的,也可以是非真實(shí)感的,前者需要模擬大自然的模擬現(xiàn)象赏寇。

渲染流程的話吉嫩,大概如下3d場(chǎng)景->渲染過(guò)程->顯示屏幕

1,顯示屏幕嗅定,本質(zhì)橫向和縱向的像素畫(huà)布自娩,連續(xù)的量轉(zhuǎn)換成離散的量會(huì)出現(xiàn)鋸齒,減少鋸齒的話渠退,有三個(gè)方面忙迁,加大屏幕分辨率,抗鋸齒算法和動(dòng)畫(huà)

2碎乃,3d場(chǎng)景姊扔,主要包括Model,Camera和Light梅誓,Model的話恰梢,可以使用網(wǎng)格來(lái)表示,也可以數(shù)學(xué)方式來(lái)表達(dá)证九。

3删豺,渲染過(guò)程,渲染主要包括兩個(gè)階段愧怜,透視和著色呀页。

人眼看自然世界,遠(yuǎn)處看起來(lái)更小拥坛,秋水共長(zhǎng)天一色蓬蝶,遠(yuǎn)處的山和水竟然連在一起啦!這個(gè)是透視現(xiàn)象猜惋,照相機(jī)和圖形渲染時(shí)候丸氛,都采用相同原理。人眼看到各種顏色主要是有光著摔,光通過(guò)各種反射折射等等最終傳播到人眼形成顏色缓窜,這個(gè)過(guò)程稱為著色。

渲染過(guò)程

3.1 透視

透視將3d場(chǎng)景轉(zhuǎn)換成2d像素谍咆。

光柵化的話禾锤,通過(guò)矩陣投影將3d轉(zhuǎn)換成2d(透視除法)和深度信息(z-buffer),根據(jù)深度判定前后關(guān)系摹察,離攝像機(jī)進(jìn)的覆蓋遠(yuǎn)處恩掷。射線追蹤通過(guò)從攝像機(jī)射出射線,判定是否相交供嚎,距離近的覆蓋遠(yuǎn)的黄娘。光柵化效率更高峭状,目前被GPU支持。

3.2 著色

著色生成像素的顏色逼争。著色計(jì)算所有的光照信息在材質(zhì)表面的行為优床,并最終生成反射形成顏色。

光由大量光子構(gòu)成氮凝,光子傳播到材質(zhì)上羔巢,會(huì)根據(jù)表面的垂直方向(法線)和入射方向形成反射,反射最終到達(dá)人眼形成顏色罩阵,材質(zhì)的感覺(jué)比如鏡面竿秆、塑料、金屬也跟材質(zhì)的各種屬性決定稿壁。漫反射幽钢,材質(zhì)表面比較粗糙,光朝這個(gè)各個(gè)方向反射傅是,效果取決與光的方向和表面法線匪燕,用于模擬塑料等材質(zhì)。鏡面(光澤)反射喧笔,光的反射主要集中在特定方向帽驯,效果取決與光的方向、表面法線和觀察方向书闸,用于模擬鏡子尼变、金屬等材質(zhì)。

透明浆劲,光傳播到類似于玻璃球這樣的透明材質(zhì)嫌术,會(huì)有反射和折射現(xiàn)象,反射和折射滿足菲涅耳公式牌借。用于模擬度气,玻璃球、水等透明的材質(zhì)膨报。

次表面反射磷籍,實(shí)現(xiàn)半透明效果,用于模擬皮膚等现柠。

間接光照院领,光的效果不是來(lái)自光源,而是其他材質(zhì)的反射晒旅。

全局光照栅盲,關(guān)照即來(lái)自光源汪诉,也來(lái)自其他材質(zhì)的反射等废恋,用于模擬更真實(shí)

射線追蹤

該算法能夠比較好的模擬自然現(xiàn)象谈秫,不過(guò)計(jì)算量大,廣泛應(yīng)用離線渲染鱼鼓。

射線追蹤的路徑

1拟烫,F(xiàn)arward Tracing(light tracing),模擬自然界光子的運(yùn)動(dòng)迄本,不過(guò)硕淑,光子的運(yùn)動(dòng)隨機(jī),光子與表達(dá)介質(zhì)的幾何數(shù)據(jù)求交消耗大嘉赎,現(xiàn)實(shí)中置媳,光源包括大量大量的光子,實(shí)現(xiàn)這種機(jī)制公条,計(jì)算消耗大拇囊,效果隨機(jī),大量采樣才能保證效果靶橱。

2寥袭,Backward Tracing(eye tracing),從攝像機(jī)射出射線(primary ray)关霸,判定當(dāng)前攝像是否和模型相交传黄,根據(jù)模型的材質(zhì),反射生成新的射線(shadow ray)队寇,這樣射線和運(yùn)算都可以控制下來(lái)膘掰。主要的話采用這種方式實(shí)現(xiàn)。

算法步驟:

1英上,生成射線炭序。屏幕相當(dāng)于攝像機(jī)前面的畫(huà)布,從攝像機(jī)位置出發(fā)苍日,對(duì)屏幕上每個(gè)像素生成射線惭聂,carema ray(primary ray)

2,射線幾何相交相恃。判定射線和幾何體相交辜纲,著色距離最近的片段,傳遞給下一階段拦耐,沒(méi)有任何相交片段的話耕腾,重復(fù)步驟1.

3, 著色片段,根據(jù)介質(zhì)屬性和光的傳播特性杀糯,生成shadow ray扫俺,最終著色,形成像素固翰,傳遞下一階段狼纬。

4羹呵,顯示階段,更新FrameBuffer疗琉,給屏幕顯示冈欢。

光柵化

實(shí)時(shí)渲染的主流技術(shù),理論形成較早盈简,有成熟的pipeline支持凑耻,性能較好,實(shí)現(xiàn)各種復(fù)雜效果比較麻煩柠贤,廣泛應(yīng)用于游戲等領(lǐng)域香浩,被GPU硬件支持。

算法步驟:

1臼勉,投影階段弃衍,3d點(diǎn)轉(zhuǎn)換成2d點(diǎn)。轉(zhuǎn)換過(guò)程為局部坐標(biāo)系->世界坐標(biāo)系->攝像機(jī)坐標(biāo)系->NDC->屏幕坐標(biāo)系坚俗,輸出2d點(diǎn)镜盯,給下階段使用

2猖败,光柵階段速缆,2d點(diǎn)組成2d面,2d面填充片段恩闻,這個(gè)過(guò)程中艺糜,連續(xù)的量通過(guò)離散的量表示,會(huì)出現(xiàn)鋸齒幢尚。插值單個(gè)片段破停,獲得單個(gè)片段的屬性。輸出片段尉剩,給下階段使用真慢。這個(gè)過(guò)程,需要透視矯正理茎。

3黑界,著色階段,著色單個(gè)片段皂林。根據(jù)片段的材質(zhì)屬性比如光照朗鸠、紋理等形成最終顏色,輸出像素础倍,給下階段使用烛占。

4,顯示階段沟启,投影階段會(huì)存儲(chǔ)相應(yīng)的深度值忆家,離攝像機(jī)進(jìn)的片段輸出像素至FrameBuffer呀癣,最終給屏幕顯示。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末弦赖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子浦辨,更是在濱河造成了極大的恐慌蹬竖,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件流酬,死亡現(xiàn)場(chǎng)離奇詭異币厕,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)芽腾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門旦装,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人摊滔,你說(shuō)我怎么就攤上這事阴绢。” “怎么了艰躺?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵呻袭,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我腺兴,道長(zhǎng)左电,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任页响,我火速辦了婚禮篓足,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘闰蚕。我一直安慰自己栈拖,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布没陡。 她就那樣靜靜地躺著辱魁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪诗鸭。 梳的紋絲不亂的頭發(fā)上染簇,一...
    開(kāi)封第一講書(shū)人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音强岸,去河邊找鬼锻弓。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蝌箍,可吹牛的內(nèi)容都是我干的青灼。 我是一名探鬼主播暴心,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼杂拨!你這毒婦竟也來(lái)了专普?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤弹沽,失蹤者是張志新(化名)和其女友劉穎檀夹,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體策橘,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡炸渡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了丽已。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚌堵。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖沛婴,靈堂內(nèi)的尸體忽然破棺而出吼畏,到底是詐尸還是另有隱情,我是刑警寧澤嘁灯,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布宫仗,位于F島的核電站,受9級(jí)特大地震影響旁仿,放射性物質(zhì)發(fā)生泄漏藕夫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一枯冈、第九天 我趴在偏房一處隱蔽的房頂上張望毅贮。 院中可真熱鬧,春花似錦尘奏、人聲如沸滩褥。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)瑰煎。三九已至,卻和暖如春俗孝,著一層夾襖步出監(jiān)牢的瞬間酒甸,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工赋铝, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留插勤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像农尖,于是被迫代替她去往敵國(guó)和親析恋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

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