本發(fā)明涉及計算機圖形學在地理信息系統(tǒng)(gis)的應用領域,具體涉及實現(xiàn)三維場景中地球海洋水效的方法。
背景技術:
隨著數(shù)字地球普及、智慧城市的推廣,地理信息產(chǎn)業(yè)備受政府、企業(yè)的關注與支持,得到了長足發(fā)展,對地球平臺的顯示效果要求也越來越高,而海洋占據(jù)了地球表面積的71%,海浪的模擬在工程領域和商用領域同樣有著廣泛的應用價值,對海洋浪流的模擬已到了不可忽略的地步。硬件的不斷更新迭代,現(xiàn)有的渲染硬件都支持了可編程管線渲染,實現(xiàn)對不同渲染狀態(tài)的控制,進而可將計算機圖形中的很多技術應用到其中,使得海洋浪流的計算機模擬更得心應手。
目前,針對海洋浪流的模擬研究主要有三個方向,一是使用大量頂點構建物理模型,二是基于幾何建模的凹凸紋理映射,以及基于粒子系統(tǒng)的動力建模。頂點物理建模以及動力模型建模的海洋模型模擬動態(tài)水效需大量的節(jié)點數(shù)據(jù),對頂點數(shù)據(jù)進行模擬變換產(chǎn)生海面水浪的效果,但其對數(shù)據(jù)帶寬尤為寶貴的地理信息展示平臺而言,以大量頂點變換來模擬真實水效所導致的資源消耗是不可忽略的,增加了數(shù)據(jù)量的同時也降低了渲染的速率,難以滿足實時性要求,因此本發(fā)明針對地理信息平臺采用幾何建模方法設計一種資源消耗有限,同時能滿足人們高體驗感的地球海洋水效方法。
技術實現(xiàn)要素:
為了解決上述技術問題,本發(fā)明提出了一種實現(xiàn)三維場景中地球海洋水效的方法,其包括如下步驟:
步驟1、建立標記圖層;
步驟2、產(chǎn)生海浪紋理,并加載;
步驟3、使用頂點著色器進行頂點變換;
步驟4、使用片元著色器進行像素著色;
步驟5、對海洋表面顏色、紋理、材質、光照進行融合和混合計算,得到繪制數(shù)據(jù)。
其中,所述步驟1包括:
初始化球面數(shù)據(jù);
選取某一海域標記圖;
為所述海域標記圖添加坐標參考,并作為一個圖層加載在場景中,其中apha值置為1對應海洋區(qū)域,apha值置為0對應的陸地區(qū)域;
根據(jù)場景調(diào)度過程中與其他圖層一致實現(xiàn)對所述海域標記圖的瓦片切割。
其中,所述步驟2包括:
將不同波長、不同頻率以及不同振幅的余弦波線性疊加形成的法矢圖,生成凹凸紋理照片。
其中,將不同波長、不同頻率以及不同振幅的余弦波線性疊加形成的法矢圖,具體為將所述凹凸紋理照片視為按以下公式的形式將不同波長、不同頻率以及不同振幅的余弦波線性疊加形成的法矢圖,
式中y(u,v)為凹凸紋理在(u,v)處的像素值,an為振幅,k為角波數(shù),c為相位。
其中,所述步驟3包括:
在渲染地球模型時,采用簡化的球面投影解算其經(jīng)緯坐標值,以經(jīng)緯度都為0的點為紋理起始坐標點,以向東為紋理u向,以向北為紋理v向,設置紋理貼圖為重復方式;再通過每幀改變法矢紋理的紋理坐標值實現(xiàn)海浪波動的效果,改變設置紋理坐標的變化幅度speed來模擬水流速度,設置旋轉角α,其中α在0到2π之間,來控制紋理的旋轉以模擬水流方向,從而在頂點著色階段紋理坐標的計算應具有如下形式,:
其中speed表示水流速度,α為旋轉角,frametime為幀時長。
其中,所述步驟4包括:在渲染管線渲染過程中,傳入gpu端的數(shù)據(jù)經(jīng)過頂點變換后的提交至片元著色階段,在片元著色階段對傳入的數(shù)據(jù)賦予顏色后提交給硬件進行光柵化顯示在窗口中的指定位置。
其中,所述步驟4還包括:
對傳入片元著色器的頂點數(shù)據(jù)首先根據(jù)紋理坐標進行多重紋理融合,獲取所述標記圖層對應紋理坐標處的紋理值,判斷其apha通道的值,若apha為1表示該處頂點為海洋區(qū)域,對該頂點添加光照修改其顏色值,達到有陽光照射下的較為真實狀態(tài),否則表示為大陸區(qū)域,不再對頂點多重紋理融合后的顏色值進行浪效以及光照變換。
其中,所述陽光照射的光照模型采用phong光照模型,其包括環(huán)境反射部分,和漫反射與鏡面反射部分,其中漫反射分量和鏡面反射分量表示特定光源照射在景物表面上產(chǎn)生的反射光,單光源情況的計算公式如下:
i=kaipa+ip(kdcosi+kscosnθ)
其中ka、kd、ks分別為材質對環(huán)境光、漫反射光、鏡面光的反射參數(shù),與物體的表面材質有關,角度i為頂點法線與光線方向夾角,θ為光線的反射方向與視線方向的夾角,ipa為環(huán)境光光強。
與現(xiàn)有技術相比,本發(fā)明具有能夠精確模擬海浪效果、高度擬真等優(yōu)點。
附圖說明
圖1為與本發(fā)明某一實施例一致的圖片分割創(chuàng)建四叉樹示意圖;
圖2為與本發(fā)明某一實施例一致的影像圖片文理坐標示意圖;
圖3為與本發(fā)明某一實施例一致的法矢量文理圖;
圖4為與本發(fā)明某一實施例一致的海域標記圖。
具體實施例
本發(fā)明的具體實現(xiàn)如下。
1)標記圖層的建立。
在全球影像中,將海洋區(qū)域的像素值或者圖像apha通道的apha值置為1,對應的陸地區(qū)域apha值置為0。以帶海洋標記的全球影像為藍本,創(chuàng)建標記圖層,實現(xiàn)對標記圖的瓦片切割,進而讓其作為一個圖層在地球場景顯示時進行調(diào)度。創(chuàng)建瓦片過程為對標記影像采用如圖1所示方式的一分四的形式創(chuàng)建四叉樹,其中左側為對一幅圖像進行四分示意過程,右側為對圖像進行逐層四分所產(chǎn)生的四叉樹結構,調(diào)度時根據(jù)瓦片層級以及位置利用生成的四叉樹來調(diào)用不同位置的瓦片到場景中進行顯示。
初始化球面數(shù)據(jù)后,將選取的任意圖添加坐標參考后作為一個圖層加載在場景中,本發(fā)明中以圖4作為圖層,其中apha值置為1對應海洋區(qū)域,apha值置為0對應的陸地區(qū)域。在根據(jù)場景調(diào)度過程中隨其他圖層一致實現(xiàn)對標記圖的瓦片切割。
2)海浪紋理的生產(chǎn)及加載。
shader著色技術實現(xiàn)水效為通過綁定特定紋理照片并讓紋理圖片朝不同方向移動即可表現(xiàn)出波浪效果,將凹凸紋理照片視為按以下公式的形式將不同波長、不同頻率以及不同振幅的余弦波線性疊加形成的法矢圖,
式中y(u,v)為凹凸紋理在(u,v)處的像素值,an為振幅,k為角波數(shù),c為相位。
圖3顯示了采用上式生成的一種海浪紋理矢量圖。
3)頂點著色器頂點變換
在渲染地球模型時,傳入gpu端的數(shù)據(jù)為橢球形頂點數(shù)據(jù),其對應著全球紋理坐標存在墨卡托投影式,由于標記圖像的精度,海域的標識并不準確,因此采用簡化的球面投影解算其經(jīng)緯坐標值,以經(jīng)緯度都為0的點為紋理起始坐標點,以向東為紋理u向,以向北為紋理v向,如附圖2所示,設置紋理貼圖為重復方式;再通過每幀改變法矢紋理的紋理坐標值可以實現(xiàn)海浪波動的效果,改變設置紋理坐標的變化幅度speed來達到設置紋理移動的速度來模擬水流速度,設置旋轉角α(α取0-2π)來控制紋理的旋轉以模擬水流方向,因此,在頂點著色階段紋理坐標的計算應具有如下形式:
其中speed表示水流速度,α為旋轉角,frametime為幀時長。
例如,在渲染地球模型時,傳入gpu端的渲染實體數(shù)據(jù)采用球面投影解算其粗略經(jīng)緯坐標值,再以經(jīng)緯度都為0的點為紋理起始坐標點,以向東為紋理u向,以向北為紋理v向,以經(jīng)緯度計算頂點距離起始點的卯酉圈距離作為u軸的坐標,以及子午線長度作為v軸的坐標作為頂點像素的紋理坐標傳給片元著色,再通過每幀改變法矢紋理的紋理坐標值可以實現(xiàn)海浪波動的效果,改變設置紋理坐標的變化幅度speed(可作為參數(shù)傳入,默認取5)來達到設置紋理移動的速度來模擬水流速度,設置旋轉角α(取0表示正東方向)
α(α取0表示向東示向)。
4片元著色器像素著色
在渲染管線渲染過程中,傳入gpu端的數(shù)據(jù)經(jīng)過頂點變換后的提交至片元著色階段,在片元著色階段對傳入的數(shù)據(jù)賦予顏色后提交給硬件進行光柵化顯示在窗口中得指定位置。頂點的顏色確定主要有紋理采樣器獲取紋理的顏色或者直接賦取確定的顏色值,若有必要可繼續(xù)添加光照系統(tǒng)對顏色進行修改。
對傳入片元著色器的頂點數(shù)據(jù)首先根據(jù)紋理坐標進行多重紋理融合,該融合階段實現(xiàn)了對地形多圖層紋理的融合,獲取標記圖層對應紋理坐標處的紋理值,判斷其apha通道的值,若apha為1表示該處頂點為海洋區(qū)域,對該頂點添加光照修改其顏色值,達到有陽光照射下的較為真實狀態(tài),否則表示為大陸區(qū)域,不再對頂點多重紋理融合后的顏色值進行浪效以及光照變換。
光照模型采用較為常用的phong光照模型,該模型由兩部分組成,一是環(huán)境反射,二是漫反射與鏡面反射,漫反射分量和鏡面反射分量則表示特定光源照射在景物表面上產(chǎn)生的反射光,單光源情況的計算公式如下:
i=kaipa+ip(kdcosi+kscosnθ)
其中ka、kd、ks分別為材質對環(huán)境光、漫反射光、鏡面光的反射參數(shù),與物體的表面材質有關,角度i為頂點法線與光線方向夾角,θ為光線的反射方向與視線方向的夾角,ipa為環(huán)境光光強。根據(jù)點的法矢按照phong光照模型計算反射光以及漫反射光分量,與背景色疊加形成該點像素的顏色。
進行光照變換的當前像素所需的法矢量通過由第二步生成的法矢紋理圖,使用紋理采樣器根據(jù)紋理坐標獲取其顏色值歸一化后作為當前點的法矢。由于每幀所對應的紋理坐標不一樣,變現(xiàn)出當前屏幕顏色的改變而具有海浪的效果。
在本說明書的描述中,參考術語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結合該實施例或示例描述的具體特征、結構、材料或者特點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特征、結構、材料或者特點可以在任何的一個或多個實施例或示例中以合適的方式結合。
盡管已經(jīng)示出和描述了本發(fā)明的實施例,本領域的普通技術人員可以理解:在不脫離本發(fā)明的原理和宗旨的情況下可以對這些實施例進行多種變化、修改、替換和變型,本發(fā)明的范圍由權利要求及其等同物限定。