本申請涉及陰影圖技術(shù)領(lǐng)域,尤其涉及一種陰影圖的生成方法及裝置。
背景技術(shù):
一個(gè)物體之所以會(huì)處在陰影中,是由于在它和光源之間存在著遮蔽物,或者說遮蔽物離光源的距離比該物體要近。
場景中生成物體的實(shí)時(shí)陰影,一般使用陰影圖(shadowmap)技術(shù)。shadowmap是一張用來記錄光源視角場景的深度信息的紋理圖,shadowmap記錄了以光源視角來看,各個(gè)可照射角度下離光源最近的物體與光源的距離。
在光照陰影渲染過程中,傳統(tǒng)的大場景級(jí)聯(lián)陰影算法需要多張shadowmap紋理,也就是說,為了渲染以眼睛(或相機(jī))為視點(diǎn)的場景陰影,需要利用多張shadowmap紋理來表述場景中物體的遮擋關(guān)系,但是,使用多張shadowmap紋理,會(huì)耗用較大的紋理顯存,且陰影渲染效率較低。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本申請的主要目的在于提供一種陰影圖的生成方法及裝置,能夠降低紋理顯存的耗用量,并能夠提高陰影渲染效率。
本申請?zhí)峁┝艘环N陰影圖的生成方法,預(yù)先將至少一張shadowmap紋理劃分為n個(gè)相同大小的紋理區(qū)域,其中,n≥2;所述方法包括:
生成以眼睛位置為視點(diǎn)的目標(biāo)視錐體;
將所述目標(biāo)視錐體由近至遠(yuǎn)分割成n個(gè)子視錐體,其中,每個(gè)子視錐體的區(qū)域由近至遠(yuǎn)依次增大;
生成所述子視錐體的渲染參數(shù),所述渲染參數(shù)包括視圖矩陣和投影矩陣;
根據(jù)所述子視錐體的渲染參數(shù),在一個(gè)所述紋理區(qū)域內(nèi)渲染所述子視錐體對應(yīng)的場景物體,得到以光源位置為視點(diǎn)的場景深度圖。
可選的,所述方法還包括:
判斷所述子視錐體的位置相比于上一時(shí)刻是否發(fā)生變化;
若是,則執(zhí)行所述根據(jù)所述子視錐體的渲染參數(shù),在一個(gè)所述紋理區(qū)域內(nèi)渲染所述子視錐體對應(yīng)的場景物體的步驟;
若否,則繼續(xù)使用所述子視錐體在上一時(shí)刻對應(yīng)的場景深度圖。
可選的,所述判斷所述子視錐體的位置相比于上一時(shí)刻是否發(fā)生變化,包括:
確定歷史位置與當(dāng)前位置之間的相互距離,其中,所述歷史位置為上一時(shí)刻所述子視錐體的包圍球中心的坐標(biāo),所述當(dāng)前位置為當(dāng)前時(shí)刻所述子視錐體的包圍球中心的坐標(biāo);
判斷所述相互距離是否大于預(yù)設(shè)閾值;
若是,則確定所述子視錐體中的物體的當(dāng)前位置相比于上一時(shí)刻發(fā)生變化;
若否,則確定所述子視錐體中的物體的當(dāng)前位置相比于上一時(shí)刻未發(fā)生變化。
可選的,所述方法還包括:
確定目標(biāo)物體的受光面和背光面,其中,所述目標(biāo)物體為所述目標(biāo)視錐體中的物體;
為所述受光面與所述背光面的過渡區(qū)域配置漸變的光照顏色;
根據(jù)所述受光面每一像素點(diǎn)接收的光照顏色,分別確定所述受光面每一像素點(diǎn)的顏色;
根據(jù)所述背光面每一像素點(diǎn)接收的光照顏色,分別確定所述背光面每一像素點(diǎn)的顏色。
可選的,所述確定目標(biāo)物體的受光面和背光面,包括:
計(jì)算所述目標(biāo)物體表面每一像素點(diǎn)對應(yīng)的點(diǎn)積,其中,所述點(diǎn)積為所述像素點(diǎn)的法線朝向與光源方向的點(diǎn)積;
若所述像素點(diǎn)對應(yīng)的點(diǎn)積大于0,則確定所述像素點(diǎn)位于受光面;
若所述像素點(diǎn)對應(yīng)的點(diǎn)積等于0,則確定所述像素點(diǎn)位于受光面與背光面的交界處;
若所述像素點(diǎn)對應(yīng)的點(diǎn)積小于0,則確定所述像素點(diǎn)位于背光面。
可選的,所述為所述受光面與所述背光面的過渡區(qū)域配置漸變的光照顏色,包括:
從點(diǎn)積取值范圍[-1,1]內(nèi),選取一個(gè)取值區(qū)間[-x1,x2],其中,x1和x2均為正數(shù)且小于1;
從所述目標(biāo)物體表面選擇一個(gè)過渡區(qū)域,其中,所述過渡區(qū)域內(nèi)每一像素點(diǎn)對應(yīng)的點(diǎn)積在所述取值區(qū)間[-x1,x2]內(nèi);
使所述過渡區(qū)域一側(cè)接收的第一光照顏色向另一側(cè)接收的第二光照顏色漸變,其中,所述第一光照顏色為除所述過渡區(qū)域以外的受光面接收的固定光照顏色,所述第二光照顏色為除所述過渡區(qū)域以外的背光面接收的固定光照顏色。
可選的,所述根據(jù)所述受光面每一像素點(diǎn)接收的光照顏色,分別確定所述受光面每一像素點(diǎn)的顏色,包括:
確定所述受光面中每一受光像素點(diǎn)對應(yīng)的陰影因子,其中,所述陰影因子的大小與所述受光像素點(diǎn)所受的陰影遮蔽程度相關(guān);
根據(jù)所述受光像素點(diǎn)的本身紋理顏色、接收的光照顏色、環(huán)境本身顏色、所述陰影因子確定所述受光像素點(diǎn)的顏色。
可選的,所述確定所述受光面中每一受光像素點(diǎn)對應(yīng)的陰影因子,包括:
選取所述受光像素點(diǎn)周邊的m個(gè)參考像素點(diǎn),其中,m≥2;
利用所述場景深度圖,確定所述受光像素點(diǎn)和所述參考像素點(diǎn)是否處于陰影中;
若均不在陰影中,則所述受光像素點(diǎn)的陰影因子取值為0;若存在m個(gè)像素點(diǎn)在陰影中,則根據(jù)所述m個(gè)像素點(diǎn)中的每一像素點(diǎn)對應(yīng)的預(yù)設(shè)陰影值,確定所述受光像素點(diǎn)的陰影因子取值,其中,0<m≤m+1。
可選的,所述根據(jù)所述背光面每一像素點(diǎn)接收的光照顏色,分別確定所述背光面每一像素點(diǎn)的顏色,包括:
根據(jù)所述背光面中每一背光像素點(diǎn)的本身紋理顏色、接收的光照顏色、環(huán)境本身顏色,確定所述背光像素點(diǎn)的顏色。
可選的,所述方法還包括:
降低第一距離與第二距離之間的比值,其中,所述第一距離為所述遠(yuǎn)裁剪面與所述眼睛位置之間的距離,所述第二距離為所述近裁剪面與所述眼睛位置之間的距離。
可選的,按照以下方式確定所述第一距離:
根據(jù)所述目標(biāo)視錐體向上向量的z值、視野高度確定所述第一距離,其中,所述視野高度為所述眼睛位置與地面之間的垂直距離。
可選的,所述第一距離與所述第二距離之間的比值為5。
本申請還提供了一種陰影圖的生成裝置,包括:
區(qū)域預(yù)劃分單元,用于預(yù)先將至少一張shadowmap紋理劃分為n個(gè)相同大小的紋理區(qū)域,其中,n≥2;
視錐體生成單元,用于生成以眼睛位置為視點(diǎn)的目標(biāo)視錐體;
視錐體分割單元,用于將所述目標(biāo)視錐體由近至遠(yuǎn)分割成n個(gè)子視錐體,其中,每個(gè)子視錐體的區(qū)域由近至遠(yuǎn)依次增大;
渲染參數(shù)生成單元,用于生成所述子視錐體的渲染參數(shù),所述渲染參數(shù)包括視圖矩陣和投影矩陣;
深度圖渲染單元,用于根據(jù)所述子視錐體的渲染參數(shù),在一個(gè)所述紋理區(qū)域內(nèi)渲染所述子視錐體對應(yīng)的場景物體,得到以光源位置為視點(diǎn)的場景深度圖。
可選的,所述裝置還包括:
受背光面確定單元,用于確定目標(biāo)物體的受光面和背光面,其中,所述目標(biāo)物體為所述目標(biāo)視錐體中的物體;
漸變顏色配置單元,用于為所述受光面與所述背光面的過渡區(qū)域配置漸變的光照顏色;
受光面顏色確定單元,用于根據(jù)所述受光面每一像素點(diǎn)接收的光照顏色,分別確定所述受光面每一像素點(diǎn)的顏色;
背光面顏色確定單元,用于根據(jù)所述背光面每一像素點(diǎn)接收的光照顏色,分別確定所述背光面每一像素點(diǎn)的顏色。
可選的,所述裝置還包括:
比值降低單元,用于降低第一距離與第二距離之間的比值,其中,所述第一距離為所述遠(yuǎn)裁剪面與所述眼睛位置之間的距離,所述第二距離為所述近裁剪面與所述眼睛位置之間的距離。
本申請?zhí)峁┑囊环N陰影圖的生成方法及裝置,生成以眼睛位置為視點(diǎn)的目標(biāo)視錐體,并將所述目標(biāo)視錐體由近至遠(yuǎn)分割成n個(gè)子視錐體,然后生成所述子視錐體的渲染參數(shù),所述渲染參數(shù)包括視圖矩陣和投影矩陣;接下來,由于已經(jīng)預(yù)先將至少一張shadowmap紋理劃分為n個(gè)相同大小的紋理區(qū)域,并將每一紋理區(qū)域分配給一個(gè)子視錐體,這樣就可以根據(jù)所述子視錐體的渲染參數(shù),在一個(gè)紋理區(qū)域內(nèi)渲染所述子視錐體對應(yīng)的場景物體,得到以光源位置為視點(diǎn)的場景深度圖??梢?,本實(shí)施例利用一張shadowmap紋理中的部分區(qū)域而非現(xiàn)有技術(shù)中的一整張shadowmap紋理,來表達(dá)分割出的一個(gè)視錐體區(qū)域中的物體遮擋關(guān)系,這樣可以有效降低shadowmap紋理的耗用量,并能夠提高陰影渲染效率。
附圖說明
為了更清楚地說明本申請實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本申請的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本申請實(shí)施例提供的以光源為視點(diǎn)的視錐體示意圖;
圖2為本申請實(shí)施例提供的場景視錐體劃分示意圖;
圖3為本申請實(shí)施例提供的一種陰影圖的生成方法的流程示意圖;
圖4為本申請實(shí)施例提供的目標(biāo)視錐體劃分示意圖;
圖5為本申請實(shí)施例提供的一種場景物體渲染方法的流程示意圖;
圖6為本申請實(shí)施例提供的顏色漸變示意圖;
圖7為本申請實(shí)施例提供的z-fighting現(xiàn)象示意圖;
圖8為本申請實(shí)施例提供的裁剪面示意圖;
圖9為本申請實(shí)施例提供的平視視角的場景示意圖;
圖10為本申請實(shí)施例提供的俯視視角的場景示意圖;
圖11為本申請實(shí)施例提供的一種陰影圖的生成裝置的組成示意圖;
圖12為本申請實(shí)施例提供的一種陰影圖的生成裝置的硬件構(gòu)成示意圖。
具體實(shí)施方式
為使本申請實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請實(shí)施例中的附圖,對本申請實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本申請一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾堉械膶?shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請保護(hù)的范圍。
在光照陰影渲染過程中,對于以眼睛視角來看的場景,需要判斷場景中的物體是否在陰影中,以便對物體的陰影部分進(jìn)行繪制。具體來講,對于物體表面上的每一像素點(diǎn),如果光源和該像素點(diǎn)之間的連線沒有任何物體遮擋,則該像素點(diǎn)沒有在陰影中,反之,如果光源和該像素點(diǎn)之間的連線有物體遮擋,則該像素點(diǎn)處在陰影中。
在實(shí)際應(yīng)用中,生成場景中物體的實(shí)時(shí)陰影,一般使用shadowmap技術(shù)。shadowmap的基本原理是:
首先以光源位置作為視點(diǎn)對場景進(jìn)行繪制,得到一張或多張shadowmap,shadowmap中的每個(gè)單元稱為一個(gè)陰影紋素,其中,shadowmap紋理中記錄下離光源最近的物體與光源之間的距離,此外,在動(dòng)態(tài)場景中,一旦場景中的遮擋關(guān)系發(fā)生改變,就需要實(shí)時(shí)地更新shadowmap。對于以眼睛為視點(diǎn)的場景,在繪制該場景的過程中,要進(jìn)行陰影判斷,即判斷每個(gè)像素點(diǎn)是否處于場景的陰影中;若像素點(diǎn)不在陰影中,則正常繪制,否則繪制成陰影,其中,判斷場景中的像素點(diǎn)是否在陰影中需要用到前面繪制的shadowmap,具體地,對于屏幕所顯示場景中的某個(gè)像素點(diǎn)p,首先將其轉(zhuǎn)換到以光源為視點(diǎn)的3d空間,得到像素點(diǎn)p在該空間下的深度值,然后與shadowmap中像素點(diǎn)p對應(yīng)的紋素所保存的深度值作比較,若像素點(diǎn)p的深度值大于shadowmap中保存的深度值,則說明像素點(diǎn)p被遮擋,處于陰影區(qū)域,否則說明像素點(diǎn)p不在陰影區(qū)域,通過這種判斷,就可以得到場景中的陰影區(qū)域。
如圖1所示的以光源為視點(diǎn)的視錐體示意圖,圖中e代表眼睛位置,l代表光源位置。從圖1可以看出,從光源方向渲染場景時(shí),不一定能全部覆蓋以眼睛位置為視點(diǎn)的視野范圍,因此需要多張shadowmap紋理來表述場景中物體的遮擋關(guān)系。
如圖2所示的場景視錐體劃分示意圖,圖中所示視錐體是以眼睛位置為視點(diǎn)的場景視錐體,圖中e代表眼睛位置,l代表光源位置,箭頭方向?yàn)楣庠凑丈浞较?。圖2場景視錐體被劃分成了三個(gè)區(qū)域,即近、中、遠(yuǎn)各一個(gè)區(qū)域,現(xiàn)有技術(shù)中,需要使用三張shadowmap紋理來分別表達(dá)近、中、遠(yuǎn)各個(gè)視錐體區(qū)域中物體的遮擋關(guān)系,但是,當(dāng)視錐體區(qū)域較多時(shí),將會(huì)耗費(fèi)更多張的shadowmap紋理。
為解決上述現(xiàn)有技術(shù)問題,本申請實(shí)施例提供了一種陰影圖的生成方法,利用一張shadowmap紋理中的部分區(qū)域來表達(dá)分割出的一個(gè)視錐體區(qū)域中的物體遮擋關(guān)系,這樣可以有效降低shadowmap紋理的耗用量,并能夠提陰影高渲染效率。
參見圖3,為本申請實(shí)施例提供的一種陰影圖的生成方法的流程示意圖,該方法包括以下步驟:
s301:生成以眼睛位置為視點(diǎn)的目標(biāo)視錐體。
在本步驟中,首先確定最遠(yuǎn)陰影距離,該距離可以是人眼能夠分辨的物體的最遠(yuǎn)距離,比如距離眼睛位置1000米的距離;然后,根據(jù)最遠(yuǎn)陰影距離、以及以眼睛位置為視點(diǎn)的視圖矩陣和投影矩陣等參數(shù),確定以眼睛視角來看的場景中的陰影范圍,根據(jù)該陰影范圍以及光源方向,確定以眼睛視角來看的視錐體validfrustum,本實(shí)施例將該視錐體validfrustum稱為所述目標(biāo)視錐體。
s302:將所述目標(biāo)視錐體由近至遠(yuǎn)分割成n個(gè)子視錐體,其中,每個(gè)子視錐體的區(qū)域由近至遠(yuǎn)依次增大。
在本步驟中,需要確定合理的分割值,對目標(biāo)視錐體validfrustum進(jìn)行分割,得到從近到遠(yuǎn)的n(n大于或等于2)個(gè)子視錐體,分別為validfrustum0、validfrustum1、validfrustum2、……、validfrustumn,其中,validfrustum0、validfrustum1、validfrustum2、……、validfrustumn的區(qū)域由近至遠(yuǎn)依次增大。
例如,參見圖4所示的目標(biāo)視錐體劃分示意圖,圖中e代表眼睛位置,l代表光源位置,將目標(biāo)視錐體validfrustum分割成了四個(gè)子視錐體,分別為validfrustum0、validfrustum1、validfrustum2、validfrustum4。
為了保證每個(gè)子視錐體的區(qū)域由近至遠(yuǎn)依次增大,在確定分割位置時(shí),可以在如圖4所示虛線方向上,使每一子視錐體的高度均相同或依次增大。當(dāng)然,也可以采用其它分割方式,本實(shí)施例不對所述目標(biāo)視錐體的分割方式進(jìn)行具體限定。
s303:生成所述子視錐體的渲染參數(shù),所述渲染參數(shù)包括視圖矩陣和投影矩陣。
在本步驟中,首先計(jì)算分割后的各個(gè)子視錐體的包圍球的中心和半徑,根據(jù)子視錐體包圍球的中心和半徑確定對應(yīng)的子視錐體參數(shù),具體地,子視錐體validfrustum0的參數(shù)為shdowfrustum0、子視錐體validfrustum1的參數(shù)為shdowfrustum1、子視錐體validfrustum2的參數(shù)為shdowfrustum2、……、子視錐體validfrustumn的參數(shù)為shdowfrustumn,其中,各個(gè)子視錐體參數(shù)包括對應(yīng)子視錐體的視圖矩陣和投影矩陣。
s304:根據(jù)所述子視錐體的渲染參數(shù),在一個(gè)紋理區(qū)域內(nèi)渲染所述子視錐體對應(yīng)的場景物體,得到以光源位置為視點(diǎn)的場景深度圖。
在執(zhí)行本步驟之前,需要預(yù)先執(zhí)行以下步驟s300,以希望為每一子視錐體分配一個(gè)shadowmap紋理區(qū)域,其中,s300可以在s301-s303的執(zhí)行過程中或s301-s303中每一步驟之前或之后執(zhí)行,本實(shí)施例不對s300的執(zhí)行順序進(jìn)行限定,只要在s304之前執(zhí)行即可。
s300:預(yù)先將至少一張shadowmap紋理劃分為n個(gè)相同大小的紋理區(qū)域。
可以將一張或多張shadowmap紋理進(jìn)行區(qū)域分割,得到的紋理區(qū)域數(shù)量大于或等于子視錐體的數(shù)量n即可。在本申請的一種實(shí)施方式中,可以預(yù)先將一張shadowmap紋理劃分為n個(gè)紋理區(qū)域,例如,當(dāng)所述目標(biāo)視錐體validfrustum被劃分為4個(gè)子視錐體時(shí),可以預(yù)先將一張2048*2048的紋理圖片劃分成四張1024*1024的紋理區(qū)域使用,這樣,使用一張shadowmap紋理比使用多張shadowmap紋理耗用的資源減少許多,并能夠提高陰影渲染效率。
在通過步驟s300得到n個(gè)紋理區(qū)域的基礎(chǔ)上,這n個(gè)紋理區(qū)域分別用于繪制n個(gè)子視錐體validfrustum0、validfrustum1、validfrustum2、……、validfrustumn內(nèi)的場景,從而得到以光源為視點(diǎn)的n個(gè)場景深度圖,其中,每個(gè)場景深度圖分別表述了子視錐體場景中物體的遮擋關(guān)系,記錄了子視錐體場景內(nèi)離光源最近的物體與光源之間的距離。
需要說明的是,由于目標(biāo)視錐體的各個(gè)子視錐體區(qū)域由近至遠(yuǎn)依次增大(例如圖4),當(dāng)使用相同分辨率比如1024*1024的shadowmap紋理區(qū)域繪制不同子視錐體的場景時(shí),各個(gè)子視錐體場景的顯示精度將由近至遠(yuǎn)依次降低。但是,就視覺效果來看,目標(biāo)視錐體在由近至遠(yuǎn)時(shí)的顯示效果并不會(huì)有太大區(qū)別,因此,當(dāng)利用不同精度的各個(gè)shadowmap紋理區(qū)域渲染目標(biāo)視錐體中的物體陰影時(shí),不會(huì)降低渲染圖像的視覺效果。
此外,在動(dòng)態(tài)場景中,不但需要將場景中的物體繪制在幾張shadowmap紋理上,還需要實(shí)時(shí)繪制這幾張shadowmap,導(dǎo)致渲染陰影的效率較低。為克服該缺陷,本實(shí)施例在生成上述場景深度圖之前,先計(jì)算每一子視錐體的參數(shù)變化量,當(dāng)參數(shù)變化超過一定范圍后才重新生成對應(yīng)的場景深度圖,否則重用上次生成的場景深度圖。
因此,本方法實(shí)施例還可以進(jìn)一步包括以下步驟:
步驟a:判斷所述子視錐體中的物體的當(dāng)前位置相比于上一時(shí)刻是否發(fā)生變化;若是,則執(zhí)行步驟b;若否,則執(zhí)行步驟c。
在本申請的一種實(shí)施方式中,步驟a具體可以包括:
確定歷史位置與當(dāng)前位置之間的相互距離,其中,所述歷史位置為上一時(shí)刻所述子視錐體的包圍球中心的坐標(biāo),所述當(dāng)前位置為當(dāng)前時(shí)刻所述子視錐體的包圍球中心的坐標(biāo);判斷所述相互距離是否大于預(yù)設(shè)閾值;若是,則確定所述子視錐體中的物體的當(dāng)前位置相比于上一時(shí)刻發(fā)生變化;若否,則確定所述子視錐體中的物體的當(dāng)前位置相比于上一時(shí)刻未發(fā)生變化。
在本實(shí)施方式中,所述包圍球中心的坐標(biāo)可以是世界坐標(biāo),對于每一子視錐體的包圍球中心,將前一時(shí)刻的包圍球中心坐標(biāo)與當(dāng)前時(shí)刻的包圍球中心坐標(biāo)進(jìn)行比較,如果發(fā)生變化,說明該子視錐體對應(yīng)場景中的遮擋關(guān)系發(fā)生了改變,需要更新對應(yīng)的shadowmap,否則,重用上次使用的shadowmap,這樣可以降低生成shadowmap的時(shí)間,提高shadowmap的渲染效率。
步驟b:執(zhí)行步驟s304。
步驟c:繼續(xù)使用所述子視錐體在上一時(shí)刻對應(yīng)的場景深度圖。
綜上,本實(shí)施例提供的一種陰影圖的生成方法,生成以眼睛位置為視點(diǎn)的目標(biāo)視錐體,并將所述目標(biāo)視錐體由近至遠(yuǎn)分割成n個(gè)子視錐體,然后生成所述子視錐體的渲染參數(shù),所述渲染參數(shù)包括視圖矩陣和投影矩陣;接下來,由于已經(jīng)預(yù)先將至少一張shadowmap紋理劃分為n個(gè)相同大小的紋理區(qū)域,并將每一紋理區(qū)域分配給一個(gè)子視錐體,這樣就可以根據(jù)所述子視錐體的渲染參數(shù),在一個(gè)紋理區(qū)域內(nèi)渲染所述子視錐體對應(yīng)的場景物體,得到以光源位置為視點(diǎn)的場景深度圖??梢?,本實(shí)施例利用一張shadowmap紋理中的部分區(qū)域而非現(xiàn)有技術(shù)中的一整張shadowmap紋理,來表達(dá)分割出的一個(gè)視錐體區(qū)域中的物體遮擋關(guān)系,這樣可以有效降低shadowmap紋理的耗用量。
在實(shí)際場景中,由于場景中各物體接收光照情況復(fù)雜,使得物體存在向光面、背光面、陰影中、陰影外等多種情況。因此,設(shè)計(jì)合理的受光面、背光面、陰影中、陰影外的物體表面亮度,可以使場景中各物體有豐富的顏色亮度,從而可以清楚區(qū)分物體的向光面、背光面、陰影中、陰影外等區(qū)域,進(jìn)而提升了對物體的渲染效果。
參見圖5,為本申請實(shí)施例提供的一種場景物體渲染方法的流程示意圖,該方法包括以下步驟:
s501:確定目標(biāo)物體的受光面和背光面,其中,所述目標(biāo)物體為所述目標(biāo)視錐體中的物體。
在上述以眼睛位置為視點(diǎn)的目標(biāo)視錐體validfrustum對應(yīng)的場景中,需要確定場景中每一物體的受光面和背光面,為便于描述,本實(shí)施例將場景內(nèi)的每一物體稱為目標(biāo)物體。
在本申請的一種實(shí)施方式中,s501具體可以包括:計(jì)算所述目標(biāo)物體表面每一像素點(diǎn)對應(yīng)的點(diǎn)積,其中,所述點(diǎn)積為所述像素點(diǎn)的法線朝向與光源方向的點(diǎn)積;若所述像素點(diǎn)對應(yīng)的點(diǎn)積大于0,則確定所述像素點(diǎn)位于受光面;若所述像素點(diǎn)對應(yīng)的點(diǎn)積等于0,則確定所述像素點(diǎn)位于受光面與背光面的交界處;若所述像素點(diǎn)對應(yīng)的點(diǎn)積小于0,則確定所述像素點(diǎn)位于背光面。
在本實(shí)施方式中,對于場景內(nèi)的每一物體,首先計(jì)算物體表面每一像素點(diǎn)的法線朝向與光源方向的點(diǎn)積nl,其中,像素點(diǎn)的法線朝向是指該像素點(diǎn)的法線朝所述目標(biāo)物體外側(cè)的方向。實(shí)際上,nl的最大取值范圍是[-1,1],對于物體上的每一像素點(diǎn),當(dāng)nl等于-1時(shí),說明該像素點(diǎn)的法線朝向與光源方向相反,當(dāng)nl等于0時(shí),說明該像素點(diǎn)的法線朝向與光源方向準(zhǔn)直,當(dāng)nl等于1時(shí),說明該像素點(diǎn)的法線朝向與光源方向相同,因此,點(diǎn)積在[-1,0)范圍內(nèi)的像素點(diǎn)區(qū)域構(gòu)成了背光面,點(diǎn)積為0的各個(gè)像素點(diǎn)在受光面與背光面的交界處,點(diǎn)積在(0,1]范圍內(nèi)的像素點(diǎn)區(qū)域構(gòu)成了受光面。
s502:為所述受光面與所述背光面的過渡區(qū)域配置漸變的光照顏色。
為了使場景中的目標(biāo)物體有豐富的顏色亮度,可以為目標(biāo)物體配置豐富的光照顏色。
為便于理解,本實(shí)施例以二維形式表示三維形式的物體表面,參見圖6所示的顏色漸變示意圖,假設(shè)圓形區(qū)域代表目標(biāo)物體的表面、中間直線為背光面與受光面的分界線、直線左側(cè)為背光面、直線右側(cè)為受光面、虛線區(qū)域?yàn)槎叩倪^渡區(qū)域?,F(xiàn)舉例說明s502,當(dāng)受光面接收的光照顏色為紅色、背光面接受的光照顏色為綠色,通過顏色漸變,可以使受光面向背光面方向的光照顏色漸變,其漸變趨勢為從紅色逐漸變?yōu)辄S色、再逐漸變?yōu)榫G色。
在本申請的一種實(shí)施方式中,s502具體可以包括步驟a-b:
步驟a:從點(diǎn)積取值范圍[-1,1]內(nèi),選取一個(gè)取值區(qū)間[-x1,x2],其中,x1和x2均為正數(shù)且小于1,x1和x2可以相同也可以不同;從所述目標(biāo)物體表面選擇一個(gè)過渡區(qū)域,其中,所述過渡區(qū)域內(nèi)每一像素點(diǎn)對應(yīng)的點(diǎn)積在所述取值區(qū)間[-x1,x2]內(nèi)。
例如,可以在nl的最大取值范圍[-1,1]內(nèi),選擇一個(gè)取值區(qū)間比如[-0.4,0.4]。那么,當(dāng)nl在范圍(0.4,1]時(shí),認(rèn)為nl對應(yīng)的像素點(diǎn)屬于圖6所示受光面的右側(cè)區(qū)域,其光照顏色為lightfrontcolor;當(dāng)nl在范圍[-1,0.4)時(shí),認(rèn)為nl對應(yīng)的像素點(diǎn)屬于圖6所示背光面的左側(cè)區(qū)域,其光照顏色為lightbackcolor;當(dāng)nl在范圍[-0.4,0.4]內(nèi)時(shí),認(rèn)為nl對應(yīng)的像素點(diǎn)屬于圖6所示的虛線區(qū)域。
步驟b:使所述過渡區(qū)域一側(cè)接收的第一光照顏色向另一側(cè)接收的第二光照顏色漸變,其中,所述第一光照顏色為除所述過渡區(qū)域以外的受光面接收的固定光照顏色,所述第二光照顏色為除所述過渡區(qū)域以外的背光面接收的固定光照顏色。
繼續(xù)上個(gè)例子,將受光面的光照顏色lightfrontcolor和背光面的光照顏色lightbackcolor進(jìn)行線性插值,以使二者的過渡區(qū)域所接收的光照顏色漸變。
s503:根據(jù)所述受光面每一像素點(diǎn)接收的光照顏色,分別確定所述受光面每一像素點(diǎn)的顏色。
經(jīng)過步驟s502的光照顏色漸變,利用漸變的光照顏色確定受光面每一像素點(diǎn)的顏色,將使得物體顏色過渡更加平滑自然。
在本申請的一種實(shí)施方式中,s503具體可以包括以下步驟c-d:
步驟c:確定所述受光面中每一受光像素點(diǎn)對應(yīng)的陰影因子,其中,所述陰影因子的大小與所述受光像素點(diǎn)所受的陰影遮蔽程度相關(guān)。
在物體接受正面光時(shí),可以進(jìn)一步考慮陰影對物體的遮蔽,因此,在確定受光面接收光照后的顏色時(shí),需要預(yù)先計(jì)算受光面每一像素點(diǎn)對應(yīng)的陰影因子。具體地,步驟c可以包括以下步驟c1-c3:
步驟c1:選取所述受光面上每一受光像素點(diǎn)周邊的m個(gè)參考像素點(diǎn),其中,m≥2。
對于每一受光像素點(diǎn)p1,可以獲取受光像素點(diǎn)p1的上、下、左、右位置的四個(gè)像素點(diǎn),將這4個(gè)像素點(diǎn)分別作為參考像素點(diǎn);當(dāng)然,還可以進(jìn)一步獲取受光像素點(diǎn)p1的左上、左下、右上、右下位置的四個(gè)像素點(diǎn),將這8個(gè)像素點(diǎn)分別作為參考像素點(diǎn)。
步驟c2:利用所述場景深度圖,確定所述受光像素點(diǎn)和所述參考像素點(diǎn)是否處于陰影中。
基于本申請圖3的相關(guān)介紹可知,目標(biāo)視錐體validfrustum被劃分成了n個(gè)子視錐體,每個(gè)子視錐體對應(yīng)一個(gè)場景深度圖,每一場景深度圖用來表述對應(yīng)場景中物體的遮擋關(guān)系。這樣,可以基于shadowmap的基本原理,根據(jù)n個(gè)場景深度圖,確定受光像素點(diǎn)p1及其周邊的各個(gè)參考像素點(diǎn)是否處于陰影中。
步驟c3:若均不在陰影中,則所述受光像素點(diǎn)的陰影因子取值為0;若存在m個(gè)像素點(diǎn)在陰影中,則根據(jù)所述m個(gè)像素點(diǎn)中的每一像素點(diǎn)對應(yīng)的預(yù)設(shè)陰影值,確定所述受光像素點(diǎn)的陰影因子取值,其中,0<m≤m+1。
可以為陰影因子預(yù)設(shè)一個(gè)取值范圍[0,z],關(guān)于受光像素點(diǎn)p1以及m個(gè)參考像素點(diǎn)即共m+1個(gè)像素點(diǎn),對于每個(gè)像素點(diǎn),當(dāng)其在陰影中時(shí),該像素點(diǎn)對應(yīng)的預(yù)設(shè)陰影值可以是z/(m+1),當(dāng)其不在陰影中時(shí),該像素點(diǎn)對應(yīng)的預(yù)設(shè)陰影值可以是0。例如,假設(shè)參考像素點(diǎn)的個(gè)數(shù)為4,那么,受光像素點(diǎn)p1及參考像素點(diǎn)共是5個(gè)像素點(diǎn),又假設(shè)陰影因子的取值范圍為[0,1],如果這5個(gè)像素點(diǎn)均不在陰影中,則受光像素點(diǎn)p1的陰影因子為0,如果有3個(gè)像素點(diǎn)在陰影中,則受光像素點(diǎn)p1的陰影因子為0.6。
步驟d:根據(jù)所述受光像素點(diǎn)的本身紋理顏色、接收的光照顏色、環(huán)境本身顏色、所述陰影因子確定所述受光像素點(diǎn)的顏色。
在上述目標(biāo)視錐體validfrustum對應(yīng)的場景中,每一物體在受光面時(shí)才會(huì)接收陰影,在背光面時(shí)只有基本的環(huán)境光亮度。因此,在本實(shí)施例中,可以利用下面公式計(jì)算每一受光像素點(diǎn)p1接收光照后的顏色值gy1:
gy1=nl*shadowfcator*(1-ambient)*ambient*lightcolor*texcolor
其中,nl為受光像素點(diǎn)p1的法線朝向和光源方向的點(diǎn)積;
shadowfcator為受光像素點(diǎn)p1對應(yīng)的陰影因子;
ambient代表環(huán)境光分量,即沒有光源時(shí)環(huán)境本身的顏色;
lightcolor為受光像素點(diǎn)p1接受的光照顏色;
texcolor為受光像素點(diǎn)p1本身的紋理色。
s504:根據(jù)所述背光面每一像素點(diǎn)接收的光照顏色,分別確定所述背光面每一像素點(diǎn)的顏色。
經(jīng)過步驟s502的光照顏色漸變,利用漸變的光照顏色確定背光面每一像素點(diǎn)的顏色,將使得物體具有豐富的顏色亮度。
在本申請的一種實(shí)施方式中,s504具體可以包括:根據(jù)所述背光面中每一背光像素點(diǎn)的本身紋理顏色、接收的光照顏色、環(huán)境本身顏色,確定所述背光像素點(diǎn)的顏色。具體可以利用下面公式計(jì)算每一背光像素點(diǎn)p2接收光照后的顏色值gy2:
gy2=ambient*lightcolor*texcolor
其中,ambient代表環(huán)境光分量,即沒有光源時(shí)環(huán)境本身的顏色;
lightcolor為背光像素點(diǎn)p2接受的光照顏色;
texcolor為受光像素點(diǎn)p2本身的紋理色。
綜上,由于目標(biāo)物體接收的光照顏色存在漸變,因此,當(dāng)利用光照顏色確定目標(biāo)物體在接收光照后的顏色時(shí),可以使場景中各物體顏色過渡更加平滑自然,從而可以清楚區(qū)分物體正光面、背光面、陰影等區(qū)域,進(jìn)而提升了物體渲染效果。
當(dāng)對場景圖像進(jìn)行渲染時(shí),可以開啟深度測試,這樣,開放圖形庫(opengraphicslibrary,簡稱opengl)就不會(huì)再去繪制模型(以眼睛位置為視點(diǎn)的場景物體)中被遮擋的部分,這樣實(shí)現(xiàn)的顯示畫面更為真實(shí)。但是,由于深度緩沖區(qū)精度的限制,對于深度相差非常小的情況,比如在同一平面對兩個(gè)物體進(jìn)行繪制,當(dāng)二者的深度值相差很小時(shí),opengl就不能正確判定兩者的深度值,從而導(dǎo)致深度測試的結(jié)果不可預(yù)測,可能出現(xiàn)畫面中前后兩個(gè)物體交錯(cuò)閃爍的情況,這種情況稱為z-fighting。例如,如圖7所示的z-fighting現(xiàn)象示意圖,其中,深色區(qū)域?yàn)橐粋€(gè)物體圖像、淺色區(qū)域?yàn)榱硪粋€(gè)物體圖像,二者出現(xiàn)交錯(cuò)顯示的情況。
為了避免z-fighting現(xiàn)象,本申請實(shí)施例進(jìn)一步可以包括:
降低第一距離與第二距離之間的比值,其中,所述第一距離為所述遠(yuǎn)裁剪面與所述眼睛位置之間的距離,所述第二距離為所述近裁剪面與所述眼睛位置之間的距離。
在本實(shí)施例中,參見圖8所示的裁剪面示意圖,其中,圖中的視錐體是上述內(nèi)容介紹的目標(biāo)視錐體validfrustum,近平面即為近裁剪面,遠(yuǎn)平面即為遠(yuǎn)裁剪面。為了有效降低發(fā)生z-fighting現(xiàn)象的可能性,首先確定遠(yuǎn)裁剪面與眼睛位置之間的距離l1以及近裁剪面與眼睛位置之間的距離l2,然后在確定場景中存在兩個(gè)或兩個(gè)以上的物體都在遠(yuǎn)近裁剪面內(nèi)的情況下時(shí),盡量降低距離l1與距離l2的比值,這樣可以有效提高場景渲染時(shí)的z軸精度。
在渲染地圖這類大規(guī)模的三維場景時(shí),經(jīng)驗(yàn)發(fā)現(xiàn)遠(yuǎn)裁剪面距離眼睛位置的距離是場景高度的10倍時(shí),就基本是人眼對物體的分辨極限了,再遠(yuǎn)處的物體人眼已經(jīng)分辨不清楚了,因此設(shè)置場景的遠(yuǎn)裁剪面最多是視野高度的10倍,其中,所述視野高度為眼睛位置與地面之間的垂直距離,因此,當(dāng)人眼的視角為平視時(shí),設(shè)置場景遠(yuǎn)裁剪面為視野高度的10倍,如圖9所示的平視視角的場景示意圖,此時(shí),視錐體向上向量lookup的z值為1。
但是,如圖10所示的俯視視角的場景示意圖,當(dāng)人眼的視角為俯視角時(shí),遠(yuǎn)裁剪面會(huì)減小,此時(shí)視錐體向上向量lookup的z值會(huì)減小,可見,遠(yuǎn)裁剪面的大小與lookup的z值(簡稱為lookup.z)正相關(guān);當(dāng)人眼的視角為垂直向下時(shí),即人眼方向與地面垂直時(shí),視錐體向上向量lookup的z值為0。
基于以上內(nèi)容,在本申請的一種實(shí)施方式中,可以按照以下方式確定遠(yuǎn)裁剪面與眼睛位置之間的距離即所述第一距離:根據(jù)所述目標(biāo)視錐體向上向量的z值、視野高度確定所述第一距離,其中,所述視野高度為所述眼睛位置與地面之間的垂直距離。
在本實(shí)施方式中,具體可以按照以下公式計(jì)算遠(yuǎn)裁剪面與眼睛位置之間的距離ffar:
ffar=fheight*2/fz;
其中,fheight為視野高度;fz=max(0.2,(1-lookup.z)),lookup.z是所述目標(biāo)視錐體向上向量的z值。
由于lookup.z的取值范圍為[0,1],因此,fz的取值范圍為[0.2,1],當(dāng)fz=0.2時(shí),ffar的取值就是人眼平視時(shí)的分辨極限對應(yīng)的最遠(yuǎn)距離(即10倍視野高度)。
在本申請的一種實(shí)施方式中,所述第一距離與所述第二距離之間的比值可以為5。在本實(shí)施例中,由于人眼觀察的景物均在場景的地面上,因此在設(shè)置了合理的遠(yuǎn)裁剪面后,近裁剪面可以適當(dāng)拉遠(yuǎn),即減小遠(yuǎn)裁剪面與眼睛位置的距離與近裁剪面與眼睛位置的距離之間的比值,在實(shí)際中,將遠(yuǎn)裁剪面與眼睛位置之間的距離ffar的1/5作為近裁剪面與眼睛位置之間的距離fnear,即fnear=ffar/5,可以實(shí)現(xiàn)較好的圖像顯示效果,降低了發(fā)生z-fighting現(xiàn)象的可能性。
綜上,通過動(dòng)態(tài)調(diào)節(jié)遠(yuǎn)近裁剪面與眼睛位置之間的距離,可以在渲染場景時(shí)使目標(biāo)視錐體的z軸精度大大提高,從而有效避免了z-fighting現(xiàn)象
參見圖11,為本申請實(shí)施例提供的一種陰影圖的生成裝置的組成示意圖,該裝置包括:
區(qū)域預(yù)劃分單元1101,用于預(yù)先將至少一張shadowmap紋理劃分為n個(gè)相同大小的紋理區(qū)域,其中,n≥2;
視錐體生成單元1102,用于生成以眼睛位置為視點(diǎn)的目標(biāo)視錐體;
視錐體分割單元1103,用于將所述目標(biāo)視錐體由近至遠(yuǎn)分割成n個(gè)子視錐體,其中,每個(gè)子視錐體的區(qū)域由近至遠(yuǎn)依次增大;
渲染參數(shù)生成單元1104,用于生成所述子視錐體的渲染參數(shù),所述渲染參數(shù)包括視圖矩陣和投影矩陣;
深度圖渲染單元1105,用于根據(jù)所述子視錐體的渲染參數(shù),在一個(gè)所述紋理區(qū)域內(nèi)渲染所述子視錐體對應(yīng)的場景物體,得到以光源位置為視點(diǎn)的場景深度圖。
在本申請的一種實(shí)施方式中,所述裝置還包括:
位置判斷單元,用于判斷所述子視錐體的位置相比于上一時(shí)刻是否發(fā)生變化;
深度圖重生單元,用于若所述子視錐體的位置相比于上一時(shí)刻發(fā)生變化,則觸發(fā)所述深度圖渲染單元1105;
深度圖保持單元,用于所述子視錐體的位置相比于上一時(shí)刻沒有發(fā)生變化,則繼續(xù)使用所述子視錐體在上一時(shí)刻對應(yīng)的場景深度圖。
在本申請的一種實(shí)施方式中,所述位置判斷單元包括:
距離確定子單元,用于確定歷史位置與當(dāng)前位置之間的相互距離,其中,所述歷史位置為上一時(shí)刻所述子視錐體的包圍球中心的坐標(biāo),所述當(dāng)前位置為當(dāng)前時(shí)刻所述子視錐體的包圍球中心的坐標(biāo);
閾值判斷子單元,用于判斷所述相互距離是否大于預(yù)設(shè)閾值;
位置確定子單元,用于若所述相互距離大于預(yù)設(shè)閾值,則確定所述子視錐體中的物體的當(dāng)前位置相比于上一時(shí)刻發(fā)生變化;若所述相互距離是否小于或等于預(yù)設(shè)閾值,則確定所述子視錐體中的物體的當(dāng)前位置相比于上一時(shí)刻未發(fā)生變化。
在本申請的一種實(shí)施方式中,所述裝置還包括:
受背光面確定單元,用于確定目標(biāo)物體的受光面和背光面,其中,所述目標(biāo)物體為所述目標(biāo)視錐體中的物體;
漸變顏色配置單元,用于為所述受光面與所述背光面的過渡區(qū)域配置漸變的光照顏色;
受光面顏色確定單元,用于根據(jù)所述受光面每一像素點(diǎn)接收的光照顏色,分別確定所述受光面每一像素點(diǎn)的顏色;
背光面顏色確定單元,用于根據(jù)所述背光面每一像素點(diǎn)接收的光照顏色,分別確定所述背光面每一像素點(diǎn)的顏色。
在本申請的一種實(shí)施方式中,所述受背光面確定單元包括:
點(diǎn)積計(jì)算子單元,用于計(jì)算所述目標(biāo)物體表面每一像素點(diǎn)對應(yīng)的點(diǎn)積,其中,所述點(diǎn)積為所述像素點(diǎn)的法線朝向與光源方向的點(diǎn)積;
光面確定子單元,用于若所述像素點(diǎn)對應(yīng)的點(diǎn)積大于0,則確定所述像素點(diǎn)位于受光面;若所述像素點(diǎn)對應(yīng)的點(diǎn)積等于0,則確定所述像素點(diǎn)位于受光面與背光面的交界處;若所述像素點(diǎn)對應(yīng)的點(diǎn)積小于0,則確定所述像素點(diǎn)位于背光面。
在本申請的一種實(shí)施方式中,所述漸變顏色配置單元包括:
區(qū)間選取子單元,用于從點(diǎn)積取值范圍[-1,1]內(nèi),選取一個(gè)取值區(qū)間[-x1,x2],其中,x1和x2均為正數(shù)且小于1;
區(qū)域選擇子單元,用于從所述目標(biāo)物體表面選擇一個(gè)過渡區(qū)域,其中,所述過渡區(qū)域內(nèi)每一像素點(diǎn)對應(yīng)的點(diǎn)積在所述取值區(qū)間[-x1,x2]內(nèi);
顏色配置子單元,用于使所述過渡區(qū)域一側(cè)接收的第一光照顏色向另一側(cè)接收的第二光照顏色漸變,其中,所述第一光照顏色為除所述過渡區(qū)域以外的受光面接收的固定光照顏色,所述第二光照顏色為除所述過渡區(qū)域以外的背光面接收的固定光照顏色。
在本申請的一種實(shí)施方式中,所述受光面顏色確定單元包括:
陰影因子確定子單元,用于確定所述受光面中每一受光像素點(diǎn)對應(yīng)的陰影因子,其中,所述陰影因子的大小與所述受光像素點(diǎn)所受的陰影遮蔽程度相關(guān);
受光顏色確定子單元,用于根據(jù)所述受光像素點(diǎn)的本身紋理顏色、接收的光照顏色、環(huán)境本身顏色、所述陰影因子確定所述受光像素點(diǎn)的顏色。
在本申請的一種實(shí)施方式中,所述陰影因子確定子單元包括:
參考像素點(diǎn)選取模塊,用于選取所述受光像素點(diǎn)周邊的m個(gè)參考像素點(diǎn),其中,m≥2;
像素點(diǎn)位置確定模塊,用于利用所述場景深度圖,確定所述受光像素點(diǎn)和所述參考像素點(diǎn)是否處于陰影中;
陰影因子確定模塊,用于若均不在陰影中,則所述受光像素點(diǎn)的陰影因子取值為0;若存在m個(gè)像素點(diǎn)在陰影中,則根據(jù)所述m個(gè)像素點(diǎn)中的每一像素點(diǎn)對應(yīng)的預(yù)設(shè)陰影值,確定所述受光像素點(diǎn)的陰影因子取值,其中,0<m≤m+1。
在本申請的一種實(shí)施方式中,所述背光面顏色確定單元,具體用于根據(jù)所述背光面中每一背光像素點(diǎn)的本身紋理顏色、接收的光照顏色、環(huán)境本身顏色,確定所述背光像素點(diǎn)的顏色。
在本申請的一種實(shí)施方式中,所述裝置還包括:
比值降低單元,用于降低第一距離與第二距離之間的比值,其中,所述第一距離為所述遠(yuǎn)裁剪面與所述眼睛位置之間的距離,所述第二距離為所述近裁剪面與所述眼睛位置之間的距離。
在本申請的一種實(shí)施方式中,所述裝置還包括:
距離確定單元,用于根據(jù)所述目標(biāo)視錐體向上向量的z值、視野高度確定所述第一距離,其中,所述視野高度為所述眼睛位置與地面之間的垂直距離。
在本申請的一種實(shí)施方式中,所述第一距離與所述第二距離之間的比值為5。
本發(fā)明實(shí)施例還提供了一種陰影圖的生成裝置的硬件構(gòu)成??砂ㄖ辽僖粋€(gè)處理器(例如cpu),至少一個(gè)網(wǎng)絡(luò)接口或者其他通信接口,存儲(chǔ)器,和至少一個(gè)通信總線,用于實(shí)現(xiàn)這些裝置之間的連接通信。處理器用于執(zhí)行存儲(chǔ)器中存儲(chǔ)的可執(zhí)行模塊,例如計(jì)算機(jī)程序。存儲(chǔ)器可能包含高速隨機(jī)存取存儲(chǔ)器(ram:randomaccessmemory),也可能還包括非不穩(wěn)定的存儲(chǔ)器(non-volatilememory),例如至少一個(gè)磁盤存儲(chǔ)器。通過至少一個(gè)網(wǎng)絡(luò)接口(可以是有線或者無線)實(shí)現(xiàn)該系統(tǒng)網(wǎng)關(guān)與至少一個(gè)其他網(wǎng)元之間的通信連接,可以使用互聯(lián)網(wǎng),廣域網(wǎng),本地網(wǎng),城域網(wǎng)等。
參見圖12,在一些實(shí)施方式中,存儲(chǔ)器中存儲(chǔ)了程序指令,程序指令可以被處理器執(zhí)行,其中,程序指令可包括區(qū)域預(yù)劃分單元1101、視錐體生成單元1102、視錐體分割單元1103、渲染參數(shù)生成單元1104、深度圖渲染單元1105等。各單元的具體實(shí)現(xiàn)可參見上述裝置實(shí)施例所揭示的相應(yīng)單元,這里不再贅述。
通過以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法中的全部或部分步驟可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn)?;谶@樣的理解,本申請的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如rom/ram、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者諸如媒體網(wǎng)關(guān)等網(wǎng)絡(luò)通信設(shè)備,等等)執(zhí)行本申請各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
需要說明的是,本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。對于實(shí)施例公開的裝置而言,由于其與實(shí)施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
對所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本申請。對這些實(shí)施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本申請的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本申請將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。