本發(fā)明涉及計(jì)算機(jī)圖形技術(shù)領(lǐng)域,特別是涉及一種非固定濃度的全球地形霧效渲染方法。
背景技術(shù):
在3dgis領(lǐng)域和飛行仿真系統(tǒng)中需要對全球地形影像進(jìn)行渲染,已經(jīng)有一些大氣散射模型來模擬大氣層的散射效果,但對全球地形霧效的建模還比較少,基本以使得繪制物體距離觀察者越遠(yuǎn)越看不清晰為目的來構(gòu)建模型。如下數(shù)學(xué)模型所示,a=a·e-d·distance;
其中,a為混合參數(shù),a為調(diào)整系數(shù),d為霧濃度,distance為相機(jī)到目標(biāo)點(diǎn)的距離。
這種類似的霧效建模不能實(shí)際地表達(dá)大氣帶來的霧效效果,但如果不進(jìn)行霧效模擬,又會使得三維場景缺乏立體感和豐富度。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明針對現(xiàn)有技術(shù)中缺乏立體感和豐富度的缺點(diǎn),提供了一種非固定濃度的全球地形霧效渲染方法。
為了解決上述技術(shù)問題,本發(fā)明通過下述技術(shù)方案得以解決。
一種非固定濃度的全球地形霧效渲染方法,包括如下步驟:
(1)構(gòu)建全球地形幾何瓦片:以三維模型中地球球心為坐標(biāo)系原點(diǎn)構(gòu)建全球地形的幾何瓦片;
(2)建立霧效濃度模型:根據(jù)大氣密度隨著海拔高度的增加而降低,建立霧效濃度模型,其構(gòu)建公式如下:
d=a·e-b·a,
其中,d為霧濃度,a為調(diào)整系數(shù),b為散射系數(shù),a為目標(biāo)點(diǎn)的海拔高度;
(3)計(jì)算霧總濃度d:首先構(gòu)建大氣外球,大氣外球半徑大于地球的長半軸,接著需要計(jì)算采樣起始點(diǎn),如視點(diǎn)在大氣外球之外,則采樣起始點(diǎn)為向量epn與大氣外球的交點(diǎn)p0;如視點(diǎn)在大氣外球之內(nèi),則采樣起始點(diǎn)即為視點(diǎn),則是p0=e;得到起始點(diǎn)后,那么epn與大氣外球的交點(diǎn)計(jì)算方法如下:
先算出p0到e點(diǎn)的距離n,
c=(length(eo))2-(length(p0o))2,
m=max{0,b2-4c},
其中,o為原點(diǎn),p0o為大氣外球的交點(diǎn)到原點(diǎn)的向量,eo為視點(diǎn)到原點(diǎn)的向量;
根據(jù)上述計(jì)算得出交點(diǎn)p0,
然后計(jì)算p0到pn的總濃度,計(jì)算方法如下:
設(shè)從p0到pn進(jìn)行n次采樣,采樣點(diǎn)集合為
p={p0,p1,p2,...,pn-1},
p0到pn的總濃度計(jì)算公式為,
(4)計(jì)算霧效顏色:設(shè)霧顏色cfog=(rf,gf,bf),pn的紋理顏色ctexture=(rt,gt,bt);將紋理顏色和霧顏色進(jìn)行混合,形成最終的霧效顏色值:c=ctexture·(1-d)+cfog·d;
(5)將步驟(3)得到的霧總濃度數(shù)值和步驟(4)得到的霧效顏色數(shù)值附加在全球地形瓦片上進(jìn)行渲染。
本發(fā)明由于采用了以上技術(shù)方案,具有顯著的技術(shù)效果:
本發(fā)明依據(jù)大氣密度的非均勻分布,構(gòu)建出霧濃度數(shù)學(xué)模型,通過霧濃度數(shù)據(jù)模型來對不同地形情況來計(jì)算不同的霧效濃度,建立起以地形為基準(zhǔn)的較為準(zhǔn)確的霧效濃度信息;同時,對霧效顏色進(jìn)行計(jì)算,與不同區(qū)域和地形的紋理顏色進(jìn)行混合,更加貼近實(shí)際的顏色和效果,通過兩個參數(shù)的設(shè)置能夠很好地模擬全球地形霧效效果。
附圖說明
圖1是本發(fā)明一種非固定濃度的全球地形霧效渲染方法中的全球霧效示意圖;
圖2是本發(fā)明一種非固定濃度的全球地形霧效渲染方法中規(guī)則網(wǎng)格的示意圖。
具體實(shí)施方式
下面結(jié)合附圖與實(shí)施例對本發(fā)明作進(jìn)一步詳細(xì)描述。
如圖1至圖2所示,一種非固定濃度的全球地形霧效渲染方法,包括如下步驟:
(1)構(gòu)建全球地形幾何瓦片:以三維模型中地球球心為坐標(biāo)系原點(diǎn)構(gòu)建全球地形的幾何瓦片;
(2)建立霧效濃度模型:根據(jù)大氣密度隨著海拔高度的增加而降低,建立霧效濃度模型,其構(gòu)建公式如下:
d=a·e-b·a,
其中,d為霧濃度,a為調(diào)整系數(shù),b為散射系數(shù),a為目標(biāo)點(diǎn)的海拔高度;
(3)計(jì)算霧總濃度d:首先構(gòu)建大氣外球,大氣外球半徑大于地球的長半軸,接著需要計(jì)算采樣起始點(diǎn),如視點(diǎn)在大氣外球之外,則采樣起始點(diǎn)為向量epn與大氣外球的交點(diǎn)p0;如視點(diǎn)在大氣外球之內(nèi),則采樣起始點(diǎn)即為視點(diǎn),則是p0=e;得到起始點(diǎn)后,那么epn與大氣外球的交點(diǎn)計(jì)算方法如下:
先算出p0到e點(diǎn)的距離n,
c=(length(eo))2-(length(p0o))2,
m=max{0,b2-4c},
其中,o為原點(diǎn),p0o為大氣外球的交點(diǎn)到原點(diǎn)的向量,eo為視點(diǎn)到原點(diǎn)的向量;
根據(jù)上述計(jì)算得出交點(diǎn)p0,
然后計(jì)算p0到pn的總濃度,計(jì)算方法如下:
設(shè)從p0到pn進(jìn)行n次采樣,采樣點(diǎn)集合為
p={p0,p1,p2,...,pn-1},
p0到pn的總濃度計(jì)算公式為,
(4)計(jì)算霧效顏色:設(shè)霧顏色cfog=(rf,gf,bf),pn的紋理顏色ctexture=(rt,gt,bt);將紋理顏色和霧顏色進(jìn)行混合,形成最終的霧效顏色值:c=ctexture·(1-d)+cfog·d;
如圖2所示,s0為大氣外球,s1為大氣內(nèi)球,epn為視點(diǎn)到目標(biāo)點(diǎn)的連線,并與s0交于p0點(diǎn),那么從p0pn線段上的每一點(diǎn)的濃度的總和就是從e點(diǎn)看向p1點(diǎn)的總濃度,表達(dá)式如下,
其中,a(t)=lenght(p0+(pn-p0)t)-r,t=length(pn-p0),考慮到表達(dá)式無法進(jìn)行積分,故在p0pn線段上進(jìn)行采樣并求和,現(xiàn)假設(shè),采樣次數(shù)為n次,采樣點(diǎn)的集合p={p0,p1,p2,...,pn-1},對應(yīng)的高程集合a={a0,a1,a2,...,an-1},那么
設(shè)目標(biāo)點(diǎn)pn的紋理顏色ctexture=(rt,gt,bt),霧顏色cfog=(rf,gf,bf),那么pn的最終顏色
c=ctexture·(1-d)+cfog·d
(5)將步驟(3)得到的霧總濃度數(shù)值和步驟(4)得到的霧效顏色數(shù)值附加在全球地形瓦片上進(jìn)行渲染。
本發(fā)明依據(jù)大氣密度的非均勻分布,構(gòu)建出霧濃度數(shù)學(xué)模型,通過霧濃度數(shù)據(jù)模型來對不同地形情況來計(jì)算不同的霧效濃度,建立起以地形為基準(zhǔn)的較為準(zhǔn)確的霧效濃度信息;同時,對霧效顏色進(jìn)行計(jì)算,與不同區(qū)域和地形的紋理顏色進(jìn)行混合,更加貼近實(shí)際的顏色和效果,通過兩個參數(shù)的設(shè)置能夠很好地模擬全球地形霧效效果。
實(shí)施例1
在建立霧效濃度模型:
d=a·e-b·a,
其中,a取0.2,b取0.001,采樣次數(shù)n取5次,霧顏色c=(0.5,0.6,0.7),其他系數(shù)根據(jù)具體的地形取值,構(gòu)建出如圖1所示的效果;
總之,以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明申請專利范圍所作的均等變化與修飾,皆應(yīng)屬本發(fā)明專利的涵蓋范圍。