亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于GS的粒子系統(tǒng)在風(fēng)場驅(qū)動下構(gòu)建流線動畫的方法與流程

文檔序號:12805027閱讀:371來源:國知局
基于GS的粒子系統(tǒng)在風(fēng)場驅(qū)動下構(gòu)建流線動畫的方法與流程

[技術(shù)領(lǐng)域]

本發(fā)明涉及一種direct3d11的數(shù)據(jù)處理與著色器的構(gòu)建方法,具體是一種基于gs(幾何著色器)的粒子系統(tǒng)在模式風(fēng)場驅(qū)動下構(gòu)建風(fēng)場流線動畫的方法。

[

背景技術(shù):
]

隨著數(shù)值預(yù)報和計算機技術(shù)的發(fā)展,氣象預(yù)報人員常使用高分辨率數(shù)值天氣預(yù)報模式開展氣象預(yù)報,這些數(shù)值天氣預(yù)報模式輸出的風(fēng)場數(shù)據(jù)可以反映出模式預(yù)報的網(wǎng)格內(nèi)風(fēng)場的強度和方向信息。

風(fēng)矢量桿是風(fēng)場數(shù)據(jù)傳統(tǒng)的繪制方式,風(fēng)矢量桿有方向和強度的信息,用此來表示網(wǎng)格中某一個點上風(fēng)的方向和大小。但這個顯示方案有以下弊端:

1、由于風(fēng)矢量桿的繪制占了屏幕上的一部分空間,所以在實際繪制風(fēng)場的風(fēng)矢量桿的時候,我們往往是隔開幾個網(wǎng)格點繪制的,否則所有的風(fēng)矢量桿會相互重疊。比如有500×500個網(wǎng)格點的風(fēng)矢量需要在屏幕上繪制,我們在水平方向和豎直方向每隔開4個點繪制,這樣有便只有100×100個風(fēng)矢量桿最終被繪制在屏幕上,大部分網(wǎng)格點上的風(fēng)場信息依然沒有被繪制出來。這種抽樣繪制風(fēng)場網(wǎng)格數(shù)據(jù)的方式不能全面地呈現(xiàn)風(fēng)場的全部信息。

2、雖然我們可以通過放大模式網(wǎng)格的局部來繪制網(wǎng)格中某一個部分的全部風(fēng)矢量桿,但是這樣的繪制方式切割了局部與整體的聯(lián)系,在這種處理方案中會帶來只見樹木,不見森林的弊端。

3、傳統(tǒng)的風(fēng)矢量桿的繪制方式是一種靜態(tài)圖像的繪制,表達不出風(fēng)場的運動感。

4、在氣象上,除了中尺度的臺風(fēng)系統(tǒng)或范圍較大的副高、低壓等天氣系統(tǒng)能從風(fēng)矢量桿抽樣繪制的繪圖中看出來,其他的小范圍的氣流擾動很難被人們直觀地察覺出來或者由于抽樣繪制的緣故根本沒在屏幕上顯示出來。

[

技術(shù)實現(xiàn)要素:
]

本發(fā)明客服了上述技術(shù)的不足,提出了一個基于gs的粒子系統(tǒng)在模式風(fēng)場驅(qū)動下風(fēng)場流線動畫的顯示技術(shù)(基于gs的粒子系統(tǒng)在模式風(fēng)場驅(qū)動下構(gòu)建風(fēng)場流線動畫的方法)。本發(fā)明用大量的、流動的線條(粒子帶)來展現(xiàn)一個風(fēng)場的運動趨勢,線條流動的方向和速度,反映了風(fēng)場某處的風(fēng)速和風(fēng)向。為實現(xiàn)上述目的,本發(fā)明采用了下列技術(shù)方案:

一種基于gs的粒子系統(tǒng)在模式風(fēng)場驅(qū)動下構(gòu)建風(fēng)場流線動畫的方法,其設(shè)計思想是,1)風(fēng)場流線動畫由大量的粒子帶構(gòu)成,例如,每一個粒子帶是以10個控制頂點為基礎(chǔ),由20個三角面組成。在本方法中,一個粒子帶即為風(fēng)場流線動畫中的一條運動的流線。2)設(shè)計了一個原始的控制點生成、發(fā)展和消亡的處理模塊,作用是對每條風(fēng)場流線(粒子帶)的控制點進行起始位置、生命周期、強度等要素的控制。3)設(shè)計了一個gs(幾何著色器)模塊,其主要作用是在顯卡可編程管道的gs階段,在上面提到的控制點的基礎(chǔ)上動態(tài)地在顯卡內(nèi)部生成更多的頂點,從而構(gòu)成渲染每個粒子帶所需的三角面。

具體來說:

一種基于gs的粒子系統(tǒng)在模式風(fēng)場驅(qū)動下構(gòu)建風(fēng)場流線動畫的方法,由大量的粒子帶構(gòu)成風(fēng)場流線動畫,每一個粒子帶是以m個控制頂點為基礎(chǔ),由相應(yīng)的三角面構(gòu)成;一個粒子帶即為風(fēng)場流線動畫中的一條運動的流線;先建立控制點處理模塊,用于對構(gòu)成每條風(fēng)場流線的粒子帶的控制點進行起始位置、生命周期、強度要素的控制;再建立幾何著色器gs模塊,用于在顯卡可編程管道的幾何著色器gs處理階段,在所述控制點的基礎(chǔ)上動態(tài)地在顯卡內(nèi)部生成更多的頂點,從而構(gòu)成渲染每個粒子帶所需的三角面;

具體步驟包括:

1)對風(fēng)速劃分了n個等級(在本發(fā)明中,可以是n=8),從色譜中選取了n種顏色作為風(fēng)速大小的示意;

創(chuàng)建了一個一維紋理,該紋理為1×n個像素點,這n個像素點對應(yīng)所述的n種顏色;該一維紋理用于在后續(xù)步驟的幾何著色器gs中用作風(fēng)速的取樣信息;

2)控制點生成模塊:

將屏幕區(qū)域劃分成多塊相同面積的控制子區(qū)域,每個控制子區(qū)域的范圍內(nèi)有n個粒子帶(在本發(fā)明中,可以是n=200);

設(shè)每個粒子帶的生存時間為t(在本發(fā)明中,可以是t=6)秒,隨后消亡,并隨后在該控制子區(qū)域的其它位置隨機重新生成,那么在每一秒內(nèi),控制點生成模塊在每一個控制子區(qū)域內(nèi)隨機生成n/t個控制點;

3)粒子帶的構(gòu)成:

每個粒子帶是由c個(本發(fā)明中,可以是c=10)控制點對應(yīng)的2×(c-1)個三角面組成,每兩個三角面組成一個四邊形,四邊形的四個頂點以相應(yīng)的控制點為參考;

在頂點進入顯卡可編程流水線處理之前,先通過cpu的計算、指定控制點的經(jīng)緯度坐標(biāo)位置;然后在顯卡的幾何著色器gs處理階段,在每個控制點的四周動態(tài)地生成4個頂點,這4個頂點構(gòu)成所述兩個三角面;

4)控制點頂點的數(shù)據(jù)結(jié)構(gòu)的設(shè)計:

經(jīng)緯度數(shù)據(jù),

生存時間,

強度,

顏色和透明值,

當(dāng)前控制點和下一個控制點的偏角;

5)控制點的位置計算:

一個粒子帶用到了c個控制點,用含有步驟4)列出的元素構(gòu)建頂點數(shù)據(jù)數(shù)組來存儲這些控制點的信息;

控制點位置計算的頻率是每隔一幀計算一次;

雖然每條粒子帶由c個控制點構(gòu)成,但是每次計算的時候,只計算最新時刻的一個控制點;如果到了第m+1幀,m個頂點都已經(jīng)計算過了,那么從第2個頂點至第m個頂點依次往前挪動一位,這樣原來的第1個頂點數(shù)據(jù)數(shù)組的元素被第2個改寫,第2個被第3個改寫,直至第m-1個被第m個改寫;第m個頂點數(shù)據(jù)數(shù)組的元素空出來后計算當(dāng)前時刻第m個控制點;

新控制點的位置為上個控制點的位置加上其在當(dāng)前幀受到風(fēng)場影響下的偏移位置,方法為:

首先計算上個控制點的風(fēng)速和風(fēng)向,方法為取風(fēng)場網(wǎng)格中和上個控制點相鄰的4個頂點(即該控制點在這4個頂點構(gòu)成的正方形內(nèi)),使用該控制點到4個頂點距離的倒數(shù)為權(quán)重進行線性插值,從而計算出該控制點的合成風(fēng)速和風(fēng)向。在這種線性插值的方案中,可以看到如果控制點在4個頂點的幾何中心的位置,那么控制點的風(fēng)速和風(fēng)向角度取4個頂點的平均值,如果控制點和4個頂點中的某個點重合,那么控制點的風(fēng)速和風(fēng)向就取和其重合的頂點的數(shù)值。

有了上個控制點的位置和其風(fēng)速風(fēng)向,我們就可以計算出新控制點的位置了。

6)當(dāng)前控制點與上一個控制點的偏角值計算:

該偏角值的作用是在gs階段中,根據(jù)控制點構(gòu)建四邊形時,確定四邊形四條邊的角度;

偏角值的計算是每隔一幀計算一次;

如果到了第m幀,處理第1至第m-1個的偏角值的改寫操作,方法為:

從第2個偏角值至第m個偏角值依次往前挪動一位,這樣原來的第1個偏角值被第2個改寫,第2個被第3個改寫,直至第m-1個被第m個改寫;第m個偏角值空出來后計算當(dāng)前時刻第m個偏角值;

此處,第1幀計算第1個控制點時,由于沒有上一個控制點,所以該控制點的偏角值設(shè)置為0;

7)控制點強度的計算:

強度值反映風(fēng)速的大小,設(shè)風(fēng)場最小風(fēng)速為0,最大風(fēng)速為vmax,把該控制點的強度值重新映射到區(qū)間[0,1]內(nèi);強度值在后續(xù)的gs階段用作取樣步驟1)的1×n紋理的顏色信息,在0到1之間,線性取值1×n紋理中的特定顏色值;

強度的值的計算是,到了第m幀,處理第1至第m-1個的強度值的改寫操作,方法為:從第2個強度值至第m個強度值依次往前挪動一位,這樣原來的第1個強度值被第2個改寫,第2個被第3個改寫,直至第m-1個被第m個改寫;第m個強度值空出來后計算當(dāng)前時刻第m個強度值;

8)控制點生存時間的計算:

生存時間表明了一個粒子帶在屏幕上可見的時間范圍;

粒子帶新生成時,生存時間賦值為0,以后每幀渲染前,該數(shù)值加1;

如果到了設(shè)定的結(jié)束時間,則重新清空該控制點數(shù)組,然后對控制點數(shù)組的第一個控制點在當(dāng)前控制子區(qū)域內(nèi)重新隨機賦予新的初始位置;則一個粒子帶在到了預(yù)定的時間消亡后又隨機在當(dāng)前控制子區(qū)域的另外一處位置重新開始顯示了;

9)頂點著色器vs階段:用于將顯卡的輸入裝配單元ia傳過來的數(shù)據(jù)提交給隨后的gs;在vs中,數(shù)據(jù)不做任何處理,該vs只起到了傳遞數(shù)據(jù)的作用;

10)幾何著色器gs階段:

先將vs傳遞過來的控制點坐標(biāo)進行世界矩陣-觀察矩陣-投影矩陣的變換,變換之后,控制點的坐標(biāo)即為屏幕空間的坐標(biāo);

接下來,動態(tài)生成圍繞該控制點的四個頂點來構(gòu)建四邊形,該四邊形是由2個三角形拼成:

設(shè)定四邊形的上下兩邊為垂直于該控制點的偏角方向,將控制點垂直偏角方向左移一個像素得到點pa,將控制點垂直偏角方向右移一個像素得到點控制點右移一個像素得到pb,這樣粒子帶的寬度變?yōu)?個像素寬;

四邊形的左右兩邊和該控制點的偏角方向平行,即

由點pa沿著平行偏角方向移動當(dāng)前控制點和上個控制點的位置差得到點pc;

由點pb沿著平行偏角方向移動當(dāng)前控制點和上個控制點的位置差得到點pd;

四邊形的四個頂點在屏幕上的位置計算出來之后,給這四個點的顏色賦值,在步驟7)中,控制點的強度已經(jīng)歸一化到[0,1]之間,把該強度值作為紋理坐標(biāo)uv參數(shù)的u值,v值取0.5,在步驟1)生成的1×n紋理上取樣,取樣得到的顏色值賦給頂點;

11)像素著色器ps階段:

gs階段生成的頂點數(shù)據(jù)經(jīng)過顯卡渲染的光柵化操作后傳入ps,像素著色器將接收到的像素渲染到渲染表面,最后在屏幕上顯示出每幀的圖像。

本發(fā)明的有益效果如下:

1、摒棄了以往固定管道的渲染管線,使用了基于direct3d11的顯卡可編程管道,絕大多數(shù)的計算都在顯卡的流處理器陣列中完成,從根本上解脫了cpu的計算負擔(dān)。

2、對于每條渲染的粒子帶,使用cpu來計算控制點的位置和強度等信息,保證了對頂點的靈活控制能力;在顯卡的gs階段,根據(jù)cpu計算出控制點的位置,動態(tài)生成三角面,然后取樣強度信息對頂點的顏色和透明度進行控制。在該過程中,充分地利用了顯卡并行處理單元強大的計算能力,極大地減輕了cpu的計算負擔(dān),并十分可觀地提高了渲染的幀率。

3、使用本發(fā)明的渲染方案,可以清晰再現(xiàn)模式預(yù)報范圍內(nèi)各個天氣系統(tǒng)發(fā)生發(fā)展的過程,以及不同天氣系統(tǒng)彼此之間相互影響和作用的過程;可以清晰、詳細地描繪出臺風(fēng)、副高、鋒面、西風(fēng)急流等天氣系統(tǒng),對于小擾動系統(tǒng)也有很直觀的表現(xiàn)力。

[附圖說明]

圖1為本發(fā)明各個著色器的工作流程圖。

圖2為使用本技術(shù)方案渲染的風(fēng)場流線動畫中的某一時刻的截圖,從圖中我們可以明顯地看到2005年第0505號海棠臺風(fēng)的運動態(tài)勢以及和周邊天氣系統(tǒng)以及和地形的相互聯(lián)系和作用。

[具體實施方式]

下面結(jié)合附圖與本發(fā)明的實施方式作進一步詳細地描述:

1、本發(fā)明對于風(fēng)速劃分了8個等級,從藍色到紅色的色譜中等間隔地選取了8種顏色作為風(fēng)速大小的示意,藍色為最小,紅色為最大。創(chuàng)建了一個一維紋理,該紋理為1×8個像素點,這8個像素點對應(yīng)上述的8種顏色,在后續(xù)步驟的幾何著色器gs中用作風(fēng)速的取樣信息。

2、控制點生成模塊:將屏幕區(qū)域劃分成16×9塊相同面積的控制子區(qū)域,每個控制子區(qū)域的范圍內(nèi)包含n個粒子帶,在本例中,n取值是200。

設(shè)定每個粒子帶的生存時間為t秒,隨后消亡并在下一秒中在該控制子區(qū)域的其它位置隨機重新生成,那么在每一秒內(nèi),控制點生成模塊在每一個子區(qū)域范圍內(nèi)隨機生成n/t個控制點,這樣便保證了在空間和時間的尺度上,粒子帶生成的平均性。在本例中,t值取值為6秒。

3、粒子帶的構(gòu)成:風(fēng)場流線的每條粒子帶,是由10個控制點對應(yīng)的20個三角面組成,每兩個三角面組成一個四邊形,四邊形的四個頂點以控制點為參考,方法在后面詳細說明。

在頂點進入顯卡可編程流水線處理之前,通過cpu的計算指定控制點的經(jīng)緯度坐標(biāo)位置。然后在顯卡的幾何著色器gs處理階段,在每個控制點的四周動態(tài)地生成4個頂點,上述的兩個三角面便由這4個頂點構(gòu)成。

4、控制點頂點的數(shù)據(jù)結(jié)構(gòu)的設(shè)計:

經(jīng)緯度數(shù)據(jù)(float2),

生存時間(float),

強度(float),

顏色和透明值(dword),

當(dāng)前控制點和下一個控制點的偏角(float)

以上float、dword均為4個字節(jié),float2表示兩個float類型的數(shù)據(jù)。

5、控制點的位置計算:一個粒子帶用到了10個控制點,本例用含有10個元素的頂點數(shù)據(jù)數(shù)組來存儲這些控制點的信息。

控制點位置計算的頻率是每隔一幀計算一次,假設(shè)動畫每秒定幀40,即一秒內(nèi)對于某個控制點只計算了20次。雖然每條粒子帶在本方案中由10個控制點構(gòu)成,但是每次計算的時候,只計算最新時刻的一個控制點,如果到了第11幀,10個頂點都已近計算過了,那么從第2個頂點至第10個頂點依次往前挪動一位,這樣原來的第1個頂點數(shù)據(jù)數(shù)組的元素被第2個改寫,第2個被第3個改寫,直至第9個被第10個改寫。第10個頂點數(shù)據(jù)數(shù)組的元素空出來后計算當(dāng)前時刻第10個控制點。

新控制點的位置為上個控制點的位置加上其在當(dāng)前幀受到風(fēng)場影響下的偏移位置:由上個控制點的位置可以確定其在模式風(fēng)場網(wǎng)格中的位置;然后取風(fēng)場網(wǎng)格中和該控制點相鄰的4個頂點(即步驟3中,構(gòu)成兩個三角面的4個頂點)的風(fēng)速和角度做線性插值,得到一個合成的風(fēng)速和風(fēng)向,計算出的偏移方向和風(fēng)向一致,偏移的距離和風(fēng)速成線性關(guān)系。

線性參數(shù)的大小根據(jù)實際地圖的底圖分辨率設(shè)定一個合適的值,在本發(fā)明中,全球等經(jīng)緯度地圖第4級(寬4096,高2048)的分辨率下,線性參數(shù)大小為20像素點。

6、控制點數(shù)組中當(dāng)前控制點與上一個控制點的偏角計算:該偏角的作用是在gs階段中根據(jù)控制點構(gòu)建四邊形時,確定四邊形四邊的角度。和控制點位置的計算類似,也是隔幀計算最新一個控制點與上個控制點的偏角,如果到了第11幀,處理第1至第9個控制點偏角值的改寫操作也和步驟5相同。需要指出的是第一幀計算第一個控制點時由于沒有上一個控制點,所以該控制點的偏角設(shè)置為0。

7、控制點強度的計算:該強度反映了風(fēng)速的大小,設(shè)風(fēng)場最小風(fēng)速為0,最大風(fēng)速為vmax,把該控制點的強度重新映射到區(qū)間[0,1]內(nèi),該值在后面的gs階段用作取樣步驟1的1×8紋理的顏色信息,強度為0時取值是藍色,1時取值為紅色,在0到1之間,線性取值1*8紋理中的某個顏色值。強度的計算也是計算最新的一個控制點,處理第1至第9個控制點強度的改寫操作也和步驟5相同。

8、控制點生存時間的計算:生存時間表明了一個粒子帶在屏幕上可見的時間范圍。粒子帶新生成時,生存時間賦值為0,以后每幀渲染前,該數(shù)值加1。如果到了設(shè)定的結(jié)束時間,則重新清空該控制點數(shù)組,然后對數(shù)組第一個控制點在當(dāng)前控制子區(qū)域內(nèi)重新隨機賦予新的初始位置,這樣一個粒子帶在到了預(yù)定的時間消亡后又隨機在當(dāng)前控制子區(qū)域的另外一處位置重新開始顯示了。

以上的計算,都是在每幀渲染前由cpu計算的,可以看出,使用控制點來抽象一個四邊形,而且更多的操作是數(shù)組的賦值,這樣極大地減輕了cpu的計算負擔(dān)。步驟5至步驟8,可以看作是每幀渲染前的預(yù)處理。接下來,將預(yù)處理過的控制點數(shù)組傳入顯卡的ia(輸入裝配)單元,開始隨后的可編程渲染處理。

9、vs(頂點著色器)階段:功能是將由顯卡ia(輸入裝配)單元傳過來的數(shù)據(jù)提交給隨后的gs,在vs中,數(shù)據(jù)不做任何處理,該vs只起到了傳遞數(shù)據(jù)的作用。

10、gs(幾何著色器)階段:將vs傳遞過來的控制點坐標(biāo)進行世界矩陣-觀察矩陣-投影矩陣的變換,變換之后,控制點的坐標(biāo)即為屏幕空間的坐標(biāo)。接下來便是動態(tài)生成圍繞該控制點的四個頂點來構(gòu)建四邊形(實際上是由2個三角形拼成),設(shè)定四邊形的上下兩邊為垂直該控制點的偏角方向,左右各偏移一個像素得到點pa,和pb,這樣粒子帶的寬度變?yōu)?個像素寬。四邊形的左右兩邊和該控制點的偏角方向平行,即由點pa沿著平行偏角方向移動當(dāng)前控制點和上個控制點的位置差得到點pc,由點pb沿著平行偏角方向移動當(dāng)前控制點和上個控制點的位置差得到點pd。四邊形的四個頂點在屏幕上的位置計算出來之后,給這四個點的顏色賦值,在步驟7中,控制點的強度已經(jīng)歸一化到[0,1]之間,我們把該值作為紋理坐標(biāo)uv參數(shù)的u值,v值取0.5,在步驟一生成的1*8紋理上取樣,取樣得到的顏色值賦給頂點。

11、ps(像素著色器)階段:gs階段生成的頂點數(shù)據(jù)經(jīng)過系統(tǒng)的光柵化操作后傳入ps,本著色器將接收到的像素渲染到渲染表面,最后在屏幕上顯示出每幀的圖像。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1