亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種適合于MMOG的快速動(dòng)態(tài)場(chǎng)景軟陰影繪制算法

        2009-04-29 00:00:00段艷超
        電腦知識(shí)與技術(shù) 2009年15期

        摘要:為滿足MMOG實(shí)時(shí)交互的需要,該文在分析了影響動(dòng)態(tài)場(chǎng)景軟陰影算法效率的主要因素之后,提出一種適合于MMOG的快速軟陰影算法。該算法利用包圍盒可以用較少的點(diǎn)描述物體位置信息的特點(diǎn),快速地計(jì)算出遮光物體與光源和接收面之間的距離關(guān)系,確定半影區(qū)的寬度和位置,避免了求平均深度值的耗時(shí)計(jì)算。經(jīng)與使用平均深度值作為遮擋物距離的經(jīng)典軟陰影算法通過(guò)實(shí)驗(yàn)進(jìn)行比較,本方法可以更好地滿足MMOG對(duì)于實(shí)時(shí)性的要求,同時(shí)不產(chǎn)生明顯的視覺(jué)失真。

        關(guān)鍵詞:MMOG;動(dòng)態(tài)場(chǎng)景;實(shí)時(shí)渲染;軟陰影

        中圖分類(lèi)號(hào):TP301 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2009)15-4022-04

        A Fast Soft Shadows Algorithm for Dynamic Scene in MMOG

        DUAN Yan-chao

        (Department of Computer Science and Engineering, Shenyang Institute of Aeronautical Engineering, Shenyang 110136, China)

        Abstract: In order to meet the requirements of real-time interaction of MMOG, based on the analysis of the main factors which impact the efficiency of dynamic scene soft shadow algorithm, this paper presents a fast soft shadows algorithm of dynamic scene for MMOG. Using of the characteristics that the bounding box could instead the object in MMOG with the fewest vertices, this method quickly calculates the distance relationship between object and the receive surface, determines the width and location of the penumbra. It can avoid the time-consuming calculation of getting the average value for depth. Compared with the classic Algorithms, the method can better meet the real-time requirements of MMOG, and does not generate serious visual distortion.

        Key words: MMOG; Dynamic Scene; Real-time rendering; Soft-Shadow

        1 引言

        在計(jì)算機(jī)圖形學(xué)領(lǐng)域中,動(dòng)態(tài)場(chǎng)景軟陰影的快速渲染一直是一個(gè)富有挑戰(zhàn)性的問(wèn)題。陰影能有效地表現(xiàn)出不同物體之間的相對(duì)位置關(guān)系,從而增加圖像的立體感和層次感。按繪制效果,陰影分為硬陰影和軟陰影兩種。軟陰影能真實(shí)地表現(xiàn)陰影效果,它由本影區(qū)和半影區(qū)組成。在軟陰影中半影區(qū)的寬度和半影區(qū)的位置是由光源、遮擋面以及接收面之間的距離和光源的尺寸決定的。由于在現(xiàn)有的動(dòng)態(tài)場(chǎng)景軟陰影繪制算法中,為了得到準(zhǔn)確的半影區(qū)寬度和半影區(qū)位置需要進(jìn)行非常繁瑣的計(jì)算,不能滿足MMOG實(shí)時(shí)性的要求,所以我們采用了一種主要提高渲染速度兼顧圖像質(zhì)量的方法來(lái)實(shí)現(xiàn)MMOG中的軟陰影繪制。

        2 使用包圍盒輔助的軟陰影算法

        經(jīng)過(guò)分析我們得出使用平均深度值的方法求遮擋物距離是十分耗時(shí)的。平均深度值求得的遮擋物距離只是近似等于該點(diǎn)的真實(shí)遮擋物距離[7]。為了求得準(zhǔn)確的遮擋物距離,有一種很好的方法就是遍歷遮擋物的邊緣邊,逐個(gè)頂點(diǎn)的計(jì)算其到光源平面的距離。但是這種方法的缺點(diǎn)和Shadow Volumes方法一樣,有很?chē)?yán)重的場(chǎng)景依賴(lài)性。經(jīng)過(guò)實(shí)驗(yàn)我們發(fā)現(xiàn)場(chǎng)景中的軟陰影具有如下的一個(gè)特點(diǎn)。如圖1所示,場(chǎng)景中點(diǎn)a、點(diǎn)b和點(diǎn)d是遮擋物在光源平面上投影輪廓邊緣上的點(diǎn),經(jīng)過(guò)計(jì)算點(diǎn)a的半影區(qū)寬度是該遮擋物產(chǎn)生的半影區(qū)中最大的,點(diǎn)b的半影區(qū)寬度最小。點(diǎn)d是遮擋物投影邊緣的一點(diǎn),它在接收面上的投影為點(diǎn)c。經(jīng)過(guò)計(jì)算點(diǎn)d產(chǎn)生的半影區(qū)寬度介于點(diǎn)a和點(diǎn)b之間,該半影區(qū)的寬度值與點(diǎn)c到點(diǎn)a點(diǎn)b在接收面上投影點(diǎn)的距離比值成比例。利用這一特點(diǎn),我們?cè)O(shè)想如果先計(jì)算出場(chǎng)景中最大的最小的半影區(qū)寬度的產(chǎn)生位置,其余的半影區(qū)寬度通過(guò)該半影區(qū)的所在位置與最大最小值的所在位置的距離關(guān)系插值完成,以此來(lái)快速地確定每一個(gè)需要渲染的點(diǎn)的半影區(qū)寬度。但是如果遍歷整個(gè)遮擋物來(lái)求最大最小值會(huì)非常的耗時(shí),所以我們利用MMOG碰撞檢測(cè)模塊提供的模型包圍盒可以用最少的點(diǎn)緊密包裹物體的特點(diǎn),使用模型包圍盒近似代替物體,來(lái)快速地確定遮擋物與光源的位置關(guān)系。求得物體的最大最小半影區(qū)寬度及產(chǎn)生位置。

        2.1 遮擋物距離的計(jì)算

        為了求得遮擋物產(chǎn)生的最大最小半影區(qū)寬度,首先需要確定遮擋物的哪個(gè)部分會(huì)產(chǎn)生最大和最小的半影區(qū),也就是距離光源平面最遠(yuǎn)和最近的部分。本方法使用MMOG中用來(lái)處理碰撞檢測(cè)的包圍盒技術(shù)來(lái)快速的估計(jì)出遮光物體與光源的位置關(guān)系。為了保證碰撞檢測(cè)的準(zhǔn)確性,游戲多采用軸向多層次包圍盒。其特點(diǎn)是可以嚴(yán)密的包裹遮光物體。在光源面積較大的情況下,人眼已經(jīng)很難準(zhǔn)確地確定復(fù)雜遮光物體的半影區(qū)寬度及產(chǎn)生位置。所以我們采用以遮光物體包圍盒的位置近似代替遮光物體本身??焖俚恼页稣诠馕矬w距光源的最大距離和最小距離的近似值。以此作為該遮光物體的遮擋物深度的最大和最小值計(jì)算該遮擋物半影區(qū)寬度的最大和最小值。詳細(xì)步驟如下:

        第一步,將遮光物體的包圍盒的所有頂點(diǎn)轉(zhuǎn)換到光源的眼坐標(biāo)系下,形成該包圍盒在光源平面的投影區(qū)域。如圖3所示,a是模型頭部包圍盒,b和c分別是兩只手臂包圍盒,d是模型軀干和兩條腿的包圍盒。將4個(gè)包圍盒的頂點(diǎn)投影到光源平面。設(shè)光源在世界坐標(biāo)系下的位置為{xw,yw,zw}={a,b,c},光源的方向向量(xl',yl',zl')在XwOZw面上的投影向量與世界坐標(biāo)系中的Z軸夾角為?茲,光源方向向量與XwOZw面的夾角為?漬,見(jiàn)圖2。設(shè)M為轉(zhuǎn)換矩陣,有{xe,ye,ze}={xw,yw,zw}M,得到世界坐標(biāo)系向光源坐標(biāo)系的轉(zhuǎn)換公式。代表了轉(zhuǎn)換后的點(diǎn)與視點(diǎn)的距離。

        第二步,對(duì)所有的包圍盒投影區(qū)域進(jìn)行遮擋檢測(cè),來(lái)剔除那些對(duì)陰影效果不產(chǎn)生影響的包圍盒頂點(diǎn)。因?yàn)榘鼑型队昂缶鶠橥苟噙呅?,所以過(guò)需要判斷的點(diǎn)向可能發(fā)生遮擋的包圍盒投影區(qū)域的所有頂點(diǎn)作向量,按順或逆時(shí)針?lè)较蛴?jì)算所有向量的夾角,如果存在所有夾角均小于180度的情況,則該點(diǎn)被遮擋,剔除該點(diǎn)。圖3中,兩只手臂的包圍盒的全部頂點(diǎn)和頭部與身體包圍盒的部分頂點(diǎn)因?yàn)楸徽趽?,不?huì)對(duì)半影區(qū)的寬度產(chǎn)生影響,經(jīng)運(yùn)算它們被剔除。遮擋檢測(cè)之后,剩余頭部包圍盒的點(diǎn)a1、a2和a3,和身體包圍盒的點(diǎn)d1、d2、d3、d4和d5。

        第三步,確定遮擋物距離的最大和最小值。因?yàn)閦e代表了轉(zhuǎn)換后的點(diǎn)與光源平面的距離。根據(jù)所有頂點(diǎn)ze的值,分別對(duì)每一個(gè)包圍盒剩余的頂點(diǎn),求出ze最小的兩個(gè)頂點(diǎn)所組成的邊的中點(diǎn)位置和ze最大的兩個(gè)頂點(diǎn)所組成的邊的中點(diǎn)位置。如圖3所示,點(diǎn)a max代表包圍盒a與光源平面最近的兩個(gè)頂點(diǎn)的中點(diǎn),點(diǎn)a min是最遠(yuǎn)的兩個(gè)頂點(diǎn)的中點(diǎn)。所有中點(diǎn)中ze最大的為點(diǎn)max,ze最小的為點(diǎn)min。

        以上就是利用包圍盒輔助求得場(chǎng)景中遮擋物近似距離的最大和最小值的過(guò)程。本方法只在每一幀渲染開(kāi)始之前增加了處理包圍盒的時(shí)間,不需要在渲染每一個(gè)點(diǎn)時(shí),為了求平均深度值而遍歷一塊和光源尺寸近似相等的深度圖區(qū)域。這使本方法有效地減輕了圖像輸出窗口和光源尺寸對(duì)算法執(zhí)行速度的限制,更加適應(yīng)MMOG的要求。

        2.2 半影區(qū)寬度及過(guò)濾核尺寸的計(jì)算

        在遮擋物距離的最大和最小值最后,我們要確定相應(yīng)的最大和最小半影區(qū)寬度,以便渲染。使用點(diǎn)max的ze作為dl的值代入公式中求出點(diǎn)max對(duì)應(yīng)的ws_max。同理求出點(diǎn)min對(duì)應(yīng)的ws_min。用ws_max擴(kuò)大包圍盒投影區(qū)域的范圍,得到一個(gè)用來(lái)限制渲染的矩形區(qū)域(圖3中虛線框圍成的區(qū)域)。點(diǎn)max和點(diǎn)min處對(duì)應(yīng)的過(guò)濾核尺寸nmax和nmin可以使用η*ws求出,η是一個(gè)大于零的,根據(jù)希望達(dá)到的圖像質(zhì)量而調(diào)整的浮點(diǎn)數(shù)。

        最后,為場(chǎng)景中的每一個(gè)即將渲染的點(diǎn)確定過(guò)濾核尺寸,因?yàn)楸疚姆椒ㄔ诖颂幨褂貌逯涤?jì)算,避免了遍歷深度圖求平均深度值的過(guò)程,所以本文方法的效率較高。在從攝像機(jī)視角對(duì)場(chǎng)景進(jìn)行渲染時(shí),將需要渲染點(diǎn)轉(zhuǎn)換到光源坐標(biāo)下,然后投影到光源平面(深度圖所在的平面)。如圖4,對(duì)于轉(zhuǎn)換后處于限制渲染范圍外的點(diǎn)f不進(jìn)行處理,以節(jié)省渲染時(shí)間。處于渲染范圍內(nèi)的點(diǎn)e,分別計(jì)算它與點(diǎn)max和點(diǎn)min的距離,記為dmax和dmin。使用公式(2)確定點(diǎn)e在渲染時(shí)應(yīng)該使用的PCF過(guò)濾核尺寸n。執(zhí)行標(biāo)準(zhǔn)的PCF步驟過(guò)濾點(diǎn)e處的陰影比較結(jié)果得到一個(gè)處于0和1之間的浮點(diǎn)數(shù)作為該點(diǎn)處陰影顏色的濃度值,用這個(gè)濃度值修改像素著色器中該點(diǎn)的顏色值產(chǎn)生陰影效果。

        2.3 算法描述

        通過(guò)在計(jì)算遮擋物的距離、半影區(qū)寬度以及過(guò)濾核尺寸時(shí)很好地節(jié)省了時(shí)間,有效地提高了動(dòng)態(tài)場(chǎng)景軟陰影算法的效率。本文算法流程如下:

        1) 將遮光物體的包圍盒的所有頂點(diǎn)轉(zhuǎn)換到光源的眼坐標(biāo)系下,形成該包圍盒在光源平面的投影區(qū)域。

        2) 對(duì)所有的包圍盒投影區(qū)域進(jìn)行遮擋檢測(cè),來(lái)剔除那些對(duì)陰影效果不產(chǎn)生影響的包圍盒頂點(diǎn)。

        3) 根據(jù)剩余的包圍盒頂點(diǎn)確定遮擋物距離的最大和最小值。

        4) 確定相應(yīng)的最大和最小半影區(qū)寬度。

        5) 確定將要渲染的點(diǎn)的過(guò)濾核尺寸并渲染場(chǎng)景。

        算法描述如下:

        包圍盒結(jié)構(gòu)體{包圍盒ID號(hào),所屬對(duì)象的ID號(hào),包圍盒頂點(diǎn)鏈表的頭指針,包圍盒組成面鏈表的頭指針};

        包圍盒投影區(qū)結(jié)構(gòu)體{對(duì)應(yīng)包圍盒的ID號(hào),三元組鏈表的頭指針(記錄組成該投影區(qū)域的頂點(diǎn)),三元組(該投影區(qū)域所對(duì)應(yīng)的包圍盒中距離光源最近的點(diǎn)),三元組(該投影區(qū)域所對(duì)應(yīng)的包圍盒中距離光源最遠(yuǎn)的點(diǎn))};

        包圍盒頂點(diǎn)結(jié)構(gòu)體{頂點(diǎn)ID號(hào),所屬包圍盒ID號(hào),三元組(記錄頂點(diǎn)位置),1號(hào)所屬面的ID號(hào),2號(hào)所屬面的ID號(hào),3號(hào)所屬面的ID號(hào)};

        包圍盒組成面結(jié)構(gòu)體{組成面ID號(hào),所屬包圍盒ID號(hào),1號(hào)包含頂點(diǎn)的ID號(hào),2號(hào)包含頂點(diǎn)的ID號(hào),3號(hào)包含頂點(diǎn)的ID號(hào),4號(hào)包含頂點(diǎn)的ID號(hào),三元組(記錄面法向量)};

        三元組(頂點(diǎn)或面法向量)結(jié)構(gòu)體{分量x,分量y,分量z};//實(shí)現(xiàn)時(shí)此處實(shí)際為一個(gè)四元組

        聲明鏈表B為包圍盒結(jié)構(gòu)體的鏈表;

        聲明鏈表P為包圍盒投影區(qū)結(jié)構(gòu)體的鏈表;

        將遮擋物的所有的包圍盒數(shù)據(jù)記錄到鏈表B;

        遍歷鏈表B,循環(huán)處理每一個(gè)包圍盒的組成面鏈表;

        {

        如果(面a的法向量與光源的方向向量夾角<90度)

        {

        記錄面a所包含的全部頂點(diǎn)并記錄每一個(gè)頂點(diǎn)被記錄的次數(shù);

        如果(一個(gè)頂點(diǎn)的記錄次數(shù)達(dá)到三次)

        {從記錄中剔除它;}

        對(duì)所有記錄下來(lái)的頂點(diǎn),使用公式(3)得到每一個(gè)頂點(diǎn)轉(zhuǎn)換到光源坐標(biāo)系下的坐標(biāo),并且按所屬的包圍盒寫(xiě)入鏈表P中;

        }

        } //鏈表P中保存了每一個(gè)包圍盒的投影區(qū)域

        刪除鏈表B并釋放空間;

        遍歷鏈表P,記錄每一個(gè)包圍盒投影區(qū)域中x和y方向的極值;

        循環(huán)處理每一個(gè)包圍盒投影區(qū)域;

        {

        如果(包圍盒投影區(qū)域a與包圍盒投影區(qū)域b在x軸y軸上的投影發(fā)生遮擋)

        {

        對(duì)包圍盒投影區(qū)域a的所有頂點(diǎn)與包圍盒投影區(qū)域b的所有頂點(diǎn)進(jìn)行遮擋判斷;

        剔除被遮擋的頂點(diǎn);

        如果(包圍盒投影區(qū)域a的全部頂點(diǎn)均被剔除)

        將包圍盒投影區(qū)域a從鏈表P中剔除;

        }

        } //鏈表P中所有剩余包圍盒投影區(qū)域的頂點(diǎn)組成了遮擋物在接收面上近似的投影形狀。

        遍歷鏈表P,得到每一個(gè)包圍盒投影區(qū)域的頂點(diǎn)中分量z最大的兩個(gè),和最小的兩個(gè)點(diǎn)的位置;

        分別計(jì)算該投影域最大和最小的兩點(diǎn)的中點(diǎn)位置,并求得距光源距離;

        將光源距離最大和最小的點(diǎn)作為整個(gè)遮擋物中的點(diǎn)max和點(diǎn)min;

        使用公式(1)確定點(diǎn)max和點(diǎn)min對(duì)應(yīng)的半影寬度ws_max和ws_max;

        用ws_max的值擴(kuò)展鏈表P在光源平面所產(chǎn)生的投影區(qū)域作為判斷是否渲染的處理區(qū)域;

        {

        渲染場(chǎng)景,將要渲染的點(diǎn)轉(zhuǎn)換到光源坐標(biāo)系下;

        如果(該點(diǎn)轉(zhuǎn)換后位置在處理區(qū)域內(nèi))

        {使用公式(4)確定過(guò)濾核的尺寸;

        對(duì)陰影比較結(jié)果執(zhí)行過(guò)濾核大小為n的過(guò)濾;

        渲染場(chǎng)景;

        }

        渲染場(chǎng)景;

        }

        以上為本文算法的描述及偽代碼,本文算法在渲染場(chǎng)景中的每一個(gè)點(diǎn)的時(shí)候,以插值代替遍歷深度圖,很好地提升了算法的效率,有效地滿足了MMOG實(shí)時(shí)性的要求。

        3 實(shí)驗(yàn)結(jié)果及分析

        本文算法使用OpenGL及GLSL語(yǔ)言實(shí)現(xiàn),在VC2005編程環(huán)境下實(shí)現(xiàn)。硬件配置為CPU雙核1.83G,內(nèi)存1G,顯示卡為Nvidia 9300。為實(shí)驗(yàn)過(guò)程中,繪制組成場(chǎng)景的三維模型部分以及場(chǎng)景深度圖的生成均由傳統(tǒng)的OpenGL API實(shí)現(xiàn)。陰影比較及PCF過(guò)濾由GLSL代碼編寫(xiě)[10]。

        為了滿足實(shí)時(shí)性的要求,MMOG使用的軟陰影算法必須具備很高的執(zhí)行效率,本文實(shí)驗(yàn)將比較使用平均深度值作為遮擋物距離的軟陰影算法和本文方法的渲染速度?,F(xiàn)代個(gè)人微機(jī)的顯示器尺寸主流為19寸,玩家在進(jìn)行游戲時(shí)通常會(huì)使用全屏顯示的模式,這導(dǎo)致現(xiàn)代游戲的分辨率很少低于800×600(分辨率越低效果越差)。一部分玩家為了追求較高的畫(huà)質(zhì),會(huì)將游戲分辨率設(shè)置到1024×768甚至更高。所以游戲分辨率對(duì)算法的影響是必須考慮的。另外在游戲中發(fā)光物體的種類(lèi)很多,光源尺寸也會(huì)發(fā)生變化,不同的光源尺寸會(huì)導(dǎo)致半影區(qū)寬度的不同,所以光源的尺寸也是必須考慮的條件。根據(jù)游戲的特點(diǎn),本文實(shí)驗(yàn)的條件是在不同的游戲分辨率和不同的光源尺寸下,將本文方法與目前常用的使用平均深度值作為遮擋物距離的軟陰影繪制方法的PCSS方法還有文獻(xiàn)[9]使用方法的渲染速度作比較。實(shí)驗(yàn)使用游戲中常見(jiàn)的機(jī)器人模型作為實(shí)驗(yàn)遮擋物(模型來(lái)源于網(wǎng)絡(luò))。為得到較精確的最大最小半影區(qū)的產(chǎn)生位置,模型包圍盒分為頭部、身體、左臂和右臂,采用OBB六面體包圍盒。為了便于實(shí)現(xiàn),實(shí)驗(yàn)中所有光源的形狀均為正方形。實(shí)驗(yàn)數(shù)據(jù)見(jiàn)表(1)。

        通過(guò)表(1)可以看出,由于本文方法避免了在渲染時(shí),為每一個(gè)點(diǎn)求遮擋物距離的步驟,在所有條件下與PCSS方法相比運(yùn)算速度都有優(yōu)勢(shì),只在游戲分辨率、光源尺寸和深度圖尺寸較小的時(shí)候,本文方法的運(yùn)算速度才低于文獻(xiàn)使用方法。在表(1)中,本文方法的執(zhí)行速度隨著光源和游戲分辨率的增大而降低。其原因是由于本文方法采用PCF方法過(guò)濾陰影比較結(jié)果,半影區(qū)寬度越寬,需要的PCF過(guò)濾核尺寸越大,游戲分辨率越大需要過(guò)濾的點(diǎn)越多。這導(dǎo)致了本文方法執(zhí)行速度的下降。但是這也是所有使用類(lèi)似PCF這種加大采樣數(shù)量來(lái)對(duì)陰影比較結(jié)果進(jìn)行過(guò)濾得到軟陰影的方法的通病。使用平均深度值作為遮擋物距離的方法,由于光源尺寸的增加導(dǎo)致求平均深度值的時(shí)候需要搜索的紋素?cái)?shù)量增加,游戲分辨率的加大致使每一幀需要求平均深度值的點(diǎn)增多,再加上PCF過(guò)濾核增大的原因?qū)е逻@些方法的運(yùn)行速度下降的更加明顯。PCSS方法和文獻(xiàn)使用的方法在深度圖和光源尺寸較小時(shí)速度提升明顯,甚至超過(guò)了本文方法的執(zhí)行速度,是因?yàn)榇朔N情況下求平均深度值的時(shí)候需要遍歷的紋素?cái)?shù)量較少,節(jié)省了計(jì)算時(shí)間。本方法由于不涉及遍歷深度圖的步驟,所以深度圖的大小對(duì)于本算法的影響與普通貼圖紋理的尺寸對(duì)渲染速度的影響相同(越大速度越慢)。

        圖5A圖7B分別是在游戲分辨率為1280×1024,光源尺寸為4×4,深度圖尺寸為2048×2048的情況下,PCSS方法和文獻(xiàn)[9]使用方法的實(shí)驗(yàn)截圖。圖5C是本文方法在相同條件下的實(shí)驗(yàn)截圖。圖5D和圖5E分別是PCSS方法和文獻(xiàn)使用方法在游戲分辨率為1280×1024,光源尺寸為12×12,深度圖尺寸為2048×2048條件下的實(shí)驗(yàn)截圖,圖5F是本文方法在相同條件下的實(shí)驗(yàn)截圖,右下角的小圖給出了圖像效果差距最大的部分。本方法生成的圖像質(zhì)量和陰影精度與PCSS方法和文獻(xiàn)使用方法相比存在少許的差距,尤其是在圖5C與圖5B圖5A的對(duì)比中,人物左腳邊緣的半影區(qū)對(duì)比很明顯。本方法的圖像質(zhì)量和陰影精度方面劣勢(shì)的產(chǎn)生原因是本方法得到的最大和最小半影區(qū)的位置并不是遮擋物中真正的最大和最小半影區(qū)位置。見(jiàn)圖5A,人物的頭頂和右腳外側(cè)才是最大和最小半影區(qū)的位置,而本方法得到位置分別在后腦和兩腳中間,見(jiàn)圖5C。這導(dǎo)致了其他由公式(1)得出的半影區(qū)寬度與真正的半影區(qū)寬度相比有誤差。這種誤差在半影區(qū)較小的時(shí)候最為明顯,這也就是為什么人物的腳部陰影是實(shí)驗(yàn)中陰影精度差距最大的部分。

        本文方法存在的另外一個(gè)不足是對(duì)遮光物體只計(jì)算了半影區(qū)的最大和最小值的產(chǎn)生位置。在求其他半影區(qū)寬度的時(shí)候只是簡(jiǎn)單的根據(jù)距離進(jìn)行插值,這樣當(dāng)時(shí)物體自身的形狀特殊或者形狀發(fā)生變化但卻沒(méi)有影響到最大最小半影區(qū)的產(chǎn)生位置時(shí),本文方法按照距離插值的方法會(huì)產(chǎn)生一定的誤差。這種物體在游戲中是存在的,但是與游戲場(chǎng)景中遮光物體種類(lèi)的總數(shù)相比較是很小的一部分。并且這種物體通常是整體的形狀發(fā)生劇烈變化(骨骼動(dòng)畫(huà)的效果),其軟陰影的范圍本身就是變化的,此外軟陰影的準(zhǔn)確位置又很難通過(guò)肉眼準(zhǔn)確判斷,所以本文方法并不存在類(lèi)似于shadow maps方法鋸齒狀走樣那種嚴(yán)重的視覺(jué)失真。但是,本文方法由于使用物體包圍盒來(lái)代替物體進(jìn)行半影區(qū)計(jì)算,相比于平均深度值方法,本文方法有一定的場(chǎng)景依賴(lài)性。當(dāng)場(chǎng)景中的遮擋物非常多時(shí),本文方法只能通過(guò)距離視點(diǎn)較遠(yuǎn)的物體,或者對(duì)于較遠(yuǎn)而相對(duì)集中的多個(gè)物體采用一個(gè)包圍盒,以此來(lái)節(jié)省計(jì)算時(shí)間。

        4 總結(jié)和展望

        本文通過(guò)分析動(dòng)態(tài)場(chǎng)景軟陰影繪制的瓶頸問(wèn)題,得出了影響動(dòng)態(tài)場(chǎng)景軟陰影渲染速度的關(guān)鍵在于能否快速地確定遮擋物距離。針對(duì)通過(guò)平均遮擋物表面深度值來(lái)確定遮擋物距離的軟陰影算法的缺陷,提出了使用包圍盒輔助的快速軟陰影繪制方法。實(shí)驗(yàn)表明,本方法對(duì)圖像質(zhì)量和陰影位置精度影響不大,卻有效地提高了運(yùn)行速度,能很好的滿足MMOG實(shí)時(shí)性的要求。同時(shí),因?yàn)榘鼑惺怯膳鲎矙z測(cè)模塊提供的,而物體包圍盒是很成熟的技術(shù),可以很方便的在主流硬件上實(shí)現(xiàn),所以本方法也能滿足MMOG中存在玩家機(jī)器異構(gòu)的特點(diǎn)的要求。

        綜上所述,使用包圍盒輔助的軟陰影算法可以有效地完成動(dòng)態(tài)場(chǎng)景軟陰影的快速渲染,很好的處理游戲中出現(xiàn)的絕大多數(shù)遮光物體軟陰影的繪制。下一步的研究重點(diǎn)是在形狀動(dòng)態(tài)變化的區(qū)域光源下(如火焰、閃電等),遮光物體的軟陰影繪制技術(shù)。

        參考文獻(xiàn):

        [1] Assarsson U, Akenine Moller. A Geometry-Based Soft Shadow Volume Algorithm Using Graphics Hardware[A]. Proceedings of ACM Trans. Graph[C]. 2003,22, 3, 511-520.

        [2] Williams. Casting Curved Shadows on Curved Surfaces Computer Graphics[A]. Proceedings of SIGGRAPH'78 (August)[C].270-274.

        [3] Soler C, Sillion F. Fast Calculation of Soft Shadow Textures Using Convolution [A]. Proceedings of SIGGRAPH'98[C]. 1998,321-332.

        [4] Donnelly W, Lauritzen. Variance Shadow Maps[A]. Proceedings of SI3D'06[C]. 2006,161-165.

        亚洲熟妇AV一区二区三区宅男| 蜜桃网站在线免费观看视频 | 99re这里只有热视频| 亚洲国产视频精品一区二区| 亚洲av色av成人噜噜噜| 日韩av高清在线观看| 激情 人妻 制服 丝袜| 国产成人精品三上悠亚久久| 国产偷闻女邻居av在线观看| 久久久久亚洲精品男人的天堂| 亚洲精品无码专区在线| 国产精品青草久久久久婷婷| 青青草视频在线观看视频免费| 无码伊人66久久大杳蕉网站谷歌| 亚洲日韩av无码中文字幕美国| 无码人妻专区免费视频| 91麻豆精品久久久影院| 国产精品成人无码久久久久久| 国产自偷自偷免费一区| 亚洲av日韩av一卡二卡| 美女视频在线观看一区二区三区| 亚洲国产一二三精品无码| 成人免费网站视频www| 日本精品久久久久中文字幕1| 日韩人妻精品视频一区二区三区 | 欧美日韩国产另类在线观看 | 久久久久久AV无码成人| 日韩精品久久午夜夜伦鲁鲁| 无码国产色欲xxxx视频| a毛片全部免费播放| 日韩乱码精品中文字幕不卡| 亚洲一区二区三区内裤视| 天天躁日日躁狠狠躁av| 人妻精品一区二区三区视频| 亚洲捆绑女优一区二区三区| 人人爽人人爽人人片av| 麻豆第一区MV免费观看网站| 一本色道亚州综合久久精品| 国产人妻高清国产拍精品| 久久国产精久久精产国| 国产一区二区在线观看我不卡|