董文 譙石
摘要:陰影映射是通過計(jì)算機(jī)圖形的模擬,在3D場(chǎng)景中加入陰影的過程。在實(shí)際的應(yīng)用中,需要解決該算法產(chǎn)生走樣的問題。本文采用一種基于入射角的陰影映射算法,有效解決了陰影生成的走樣問題。
關(guān)鍵詞:陰影映射;入射角;反走樣
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2018)09-0099-02
1 引言
陰影映射是通過計(jì)算機(jī)圖形的模擬,在3D場(chǎng)景中產(chǎn)生陰影的效果。生成陰影有很多算法,其中體積陰影算法、陰影映射算法是兩種比較常用的算法。體積陰影算法采用模板緩沖的輪廓數(shù)量進(jìn)行陰影生成,其優(yōu)點(diǎn)是像素銳利,陰影精確,適合精確表現(xiàn)動(dòng)態(tài)光陰場(chǎng)景;缺點(diǎn)是這種方法需要進(jìn)行過多的過度填充和勾畫,計(jì)算機(jī)處理器計(jì)算量大,而且需要處理很多特例。陰影映射是將像素與以紋理形式保存的光照深度緩沖區(qū)或者深度圖像比較,通過這種方式計(jì)算像素是否處于光源照射范圍之內(nèi),從而生成陰影。這種方法是從光線角度還原場(chǎng)景,再投射到所有的陰影接收器上,其優(yōu)點(diǎn)是每束光線單獨(dú)進(jìn)行陰影映射,所有物體上采用同一繪制,能夠充分發(fā)揮圖形硬件的能力,避免了體積陰影算法高填充率的缺陷。但是這種方法也存在其不足,圖像生成的質(zhì)量局限于陰影映射的清晰度,一個(gè)紋理中很難適用于每一物體,生成圖像易產(chǎn)生走樣。因此,我們使用一種基于入射角的陰影映射算法,有效地解決陰影走樣的問題。
2 陰影映射算法實(shí)現(xiàn)過程
陰影映射采用的是兩次成像Z緩沖陰影運(yùn)算法則,從光源計(jì)算場(chǎng)景的離散可見度以決定一個(gè)像素是否有陰影。這種方法只需要兩個(gè)通道,通道1從光源的角度再現(xiàn)場(chǎng)景、每一像素只保存z深度不保存顏色,Z-緩沖器將所含內(nèi)容進(jìn)行呈現(xiàn)成像,如果亮度越大,那么離光的距離越遠(yuǎn);通道2則從眼睛的視角再現(xiàn)場(chǎng)景,將眼睛能看到的每一點(diǎn)P,轉(zhuǎn)換成光源空間, 當(dāng)該點(diǎn)位于光線和相機(jī)之間的空間,對(duì)于給定的一個(gè)點(diǎn)而言,我們比較比較投影到該點(diǎn)的陰影以及該點(diǎn)到光源的距離,來計(jì)算該點(diǎn)是否在陰影中[1]。
3 入射角方法反走樣處理
由于陰影貼圖受限于解析度,在距離光源比較遠(yuǎn)的情況下,多個(gè)片元可能從深度貼圖的同一個(gè)值中去采樣,因此陰影映射算法很容易在陰影邊界出現(xiàn)粗糙的鋸齒狀走樣現(xiàn)象。我們是通過一個(gè)放置在3D場(chǎng)景中的攝像機(jī)來觀察場(chǎng)景中的對(duì)象,攝像機(jī)所能看到的視野的大小范圍圍成了一個(gè)標(biāo)準(zhǔn)的平截頭體,我們以攝像機(jī)和光方向之間的入射角為基礎(chǔ),通過調(diào)整攝像機(jī)和光照方向的入射角,有效解決了陰影映射算法的走樣問題[2-3]。
首先計(jì)算攝像機(jī)透視方向和光線方向之間的入射角,隨入射角的增加從矩形向不等邊四邊形轉(zhuǎn)換,當(dāng)光線和攝像機(jī)方向垂直的時(shí)候(最小入射角)此時(shí)正好得到一個(gè)不等邊多邊形,側(cè)邊多數(shù)是傾斜的;當(dāng)光線和攝像機(jī)方向平行的時(shí)候(最大入射角)此時(shí)正好得到一個(gè)矩形,側(cè)邊基本上平行。此時(shí),矩形也在大小上有輕微的縮小,因?yàn)楫?dāng)他們的方向平行的時(shí)候,平截頭體的交匯會(huì)變小[4]。相機(jī)、光照與入射角關(guān)系圖1所示。
然后計(jì)算攝像機(jī)透視方向和光線方向之間的入射角,隨入射角的增加從矩形到不等邊四邊形進(jìn)行轉(zhuǎn)換,矩形在大小上有輕微的縮水,因?yàn)楫?dāng)他們的方向平行的時(shí)候,平截頭體的交匯會(huì)變小。這種方法速度快,方法簡(jiǎn)單,就連出現(xiàn)平行平截頭體也能得出好的結(jié)果,分辨率的轉(zhuǎn)換是平滑且漸進(jìn)的,并且會(huì)隨攝像機(jī)方向的改變而改變[5]。隨入射角增加從矩形到不等邊四邊形變換圖2所示。
4 結(jié)語
本文采用一種基于入射角的陰影映射技術(shù),通過調(diào)整攝像機(jī)和光照方向的入射角大小改善陰影映射算法中的鋸齒走樣問題,圖3所示是普通陰影映射的結(jié)果,可以看到其陰影邊界存在著鋸齒走樣現(xiàn)象,圖4所示是采用了入射角方法之后進(jìn)行映射的結(jié)果,走樣明顯得到了改善。
參考文獻(xiàn)
[1]謝依妨,楊紅雨.基于遮擋區(qū)間映射的軟陰影的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2015,(3):687-692.
[2]曹家樂,馮月萍.一種改進(jìn)的陰影映射算法[J].吉林大學(xué)學(xué)報(bào)(理學(xué)版),2018,(1):89-94.
[3]湯翾.基于投影平面物體排序的陰影算法的研究[D].西華大學(xué),2018.
[4]周國民,盧滌非,張其前.一種梯形結(jié)構(gòu)的軟陰影錐生成方法[J].浙江大學(xué)學(xué)報(bào)(理學(xué)版),2007,(6):628-632.
[5]劉列明,吳恩華.一種基于點(diǎn)光源的三維陰影的實(shí)時(shí)生成算法[J].軟件學(xué)報(bào),2000,(6):785-790.