本發(fā)明涉及電磁散射領域,尤其是一種圖形電磁散射計算方法方法。
背景技術:
復雜目標的電磁散射特性是武器平臺設計必須考察的重要指標之一,通常使用圖形算法來計算電大尺寸的復雜目標雷達散射截面積(radarcrosssection,rcs),如飛機坦克等模型,其特殊的硬件消隱能力可以大大提高計算效率。當使用圖形算法計算大尺寸模型時,為了適應屏幕,往往模型會被縮放,因而損失精度,并且由于輸出精度的問題,圖形算法的計算結果總是存在少量偏差,同時一個模型的360度rcs計算總是需要消耗大量時間,效率還有待提高,如果能解決精度的問題,并使模型顯示不再受到屏幕限制,同時提高效率,則對復雜目標的電磁散射計算將有重大意義。
技術實現(xiàn)要素:
為了克服現(xiàn)有技術的不足,本發(fā)明提出了一種復雜目標的高精度快速電磁散射計算方法,該方法使圖形算法的計算精度大大提升,同時提高了圖形算法的計算效率,實現(xiàn)了高精度快速的復雜目標電磁散射計算。
本發(fā)明解決其技術問題所采用的技術方案的步驟如下:
步驟1:針對飛機導彈類目標進行3d建模,模型信息包括目標的位置信息、目標的材料以及目標材料對應的相對介電常數(shù)和相對磁導率,通過3d建模軟件調(diào)整模型角度和模型比例,使一個像素最多包含一個曲面結構,使用opengl中的glew庫函數(shù)控制圖形處理器(graphicsprocessingunit,gpu),搭建基于著色器處理圖形的cpu-gpu異構計算環(huán)境,同時在內(nèi)存與顯存中存儲基于物理光學法的圖形算法,通過程序編程控制中央處理器(centralprocessingunit,cpu)與gpu,當cpu與gpu均處于待命狀態(tài)時,則完成搭建基于gpu的協(xié)同計算框架,此時調(diào)用opengl的繪圖指令讀取3d模型中的模型信息并導入內(nèi)存;
步驟2:創(chuàng)建無光照的像素細分計算環(huán)境
使用opengl庫函數(shù)中的glbindrenderbuffers指令函數(shù),控制緩存部件gpu中的存儲控件幀緩存對象(framebufferobject,fbo),以fbo為顯示載體,將屏幕顯示控制在顯存中,使用glrenderbufferstorage指令函數(shù)設定fbo在顯存中的內(nèi)存空間,將fbo的大小提高到當前所使用屏幕分辨率大小的3到4倍,使用頂點著色器將步驟一中的模型信息離散到fbo緩存部件中,同時在頂點著色器中編程控制gpu將當前所使用屏幕上的每個像素按照像素邊長的中點進行二等分或四等分,即將原來一個像素的數(shù)據(jù)二等分后放大了4倍,或將像素邊長4等分后放大了16倍,以此實現(xiàn)像素的細分,細分后的像素根據(jù)模型位置信息對應步驟一中的模型信息,使用glshadersource函數(shù)將步驟一中的模型信息傳入頂點著色器,在頂點著色器中計算模型的法矢量后得到新的模型信息,使用gluseprogram函數(shù)將新的模型信息傳入gpu中的光柵化模塊,模型信息經(jīng)過光柵化即可離散成各個獨立的電磁參數(shù),電磁參數(shù)按照像素的位置信息一一對應保存至片元著色器中,至此,像素細分計算環(huán)境搭建完成;
步驟3:當片元著色器中獲取到步驟二中光柵化的以像素為單位的電磁參數(shù)時,片元著色器先進行電磁參數(shù)的單位換算和格式換算,換算后的電磁參數(shù)按照公式(1)計算即可得出rcs散射值,公式(1)如下:
式(1)中σ表示散射場,λ表示波長,∑pixels()表示細分后的像素為單位求和計算,f為幅度函數(shù),k為波數(shù),z′為像素深度,δs為細分后像素的投影面積,ed為繞射場分量,其中γ按照三種不同極化方式對應不同的計算公式,不同極化方式的γ計算公式如下:
其中n′x、n′y、n′z分別為法矢量在坐標軸xyz上的三個坐標分量,εr(2)、εr(1)分別為內(nèi)層和外層材料的相對介電常數(shù),μr(2)、μr(1)分別為內(nèi)層和外層材料的相對磁導率,α(1)為內(nèi)層材料入射角;
公式(1)中f如下所示:
其中l(wèi)、h分別為像素的寬和高,sinc為三角函數(shù),k為波數(shù),
步驟4:使用opengl中的映射函數(shù)glframebuffertexture將步驟3中計算的散射場分量保存在片元著色器中,然后使用映射函數(shù)將片元著色器中的散射場分量映射到紋理緩存中,通過映射函數(shù)glbindtexture將紋理緩存中的散射場分量數(shù)據(jù)映射到cpu內(nèi)存中,而后在cpu中完成求和,即可得到總散射場,并根據(jù)麥克斯韋公式計算表面電流,最終得到實時雷達散射截面積以及模型表面動態(tài)實時的電流強度。
本發(fā)明的有益效果是由于采用基于像素細分的圖形算法,有效避免復雜目標縮放在屏幕上,不同離散片元因為顯示精度而導致重合在一個像素上,致使模型細節(jié)損失。使用gpu并結合像素細分技術可以大幅度提高模型顯示精度及計算精度,極好的彌補了圖形算法相比于低頻算法精度差的問題,同時不再需要光照模型來獲取法矢量信息,光照模型無法避免因為光照顏色分量的精度限制,以及多次推倒計算帶來的誤差,而像素細分的圖形算法直接在gpu中就完成了法矢量的獲取以及后期rcs計算,計算結果統(tǒng)一保存到內(nèi)存中使用cpu完成最后疊加計算,大大提高了cpu和gpu的計算效率,其中精度從0.00135提高到了小數(shù)點后第七位,計算效率提到達30倍。
附圖說明
圖1為本發(fā)明的中央處理器圖形處理器協(xié)同計算框架圖。
圖2為本發(fā)明的雷達散射截面積計算結果圖。
具體實施方式
下面結合附圖和實施例對本發(fā)明進一步說明。
本發(fā)明的目的是為了解決在武器外形設計時,大尺寸的復雜目標,如飛機坦克等模型,不能精確快速的計算武器模型的雷達散射截面積的問題,通過本發(fā)明提供的方法,可以更精確、高效率的獲取雷達散射截面積,并且使模型電磁特效計算過程不在受到屏幕硬件條件的限制。
步驟1:針對飛機導彈類目標進行3d建模,模型信息包括目標的位置信息、目標的材料以及目標材料對應的相對介電常數(shù)和相對磁導率,通過3d建模軟件調(diào)整模型角度和模型比例,使一個像素最多包含一個曲面結構,使用opengl中的glew庫函數(shù)控制圖形處理器(graphicsprocessingunit,gpu),搭建基于著色器處理圖形的cpu-gpu異構計算環(huán)境,同時在內(nèi)存與顯存中存儲基于物理光學法的圖形算法,通過程序編程控制中央處理器(centralprocessingunit,cpu)與gpu,當cpu與gpu都處于待命狀態(tài)時,則完成搭建基于gpu的協(xié)同計算框架,此時調(diào)用opengl的繪圖指令讀取3d模型中的模型信息并導入內(nèi)存;
其中cpu-gpu協(xié)同計算框架圖如圖1所所示,基于gpu的計算框架是使用高版本的opengl來控制gpu中的著色器,將本該在cpu中運行的計算全部放到gpu中來執(zhí)行,極大的提高了計算的效率,同時可以直接獲取gpu中的模型處理數(shù)據(jù),不再需要光照模型來推算顯存中的模型數(shù)據(jù),減少了數(shù)據(jù)交換,同時省略了繁瑣的處理過程。其中,在cpu進行的模型參數(shù)變換都轉移到gpu中的頂點著色器中完成,以代替光照模型,并獲取rcs計算需要的相關數(shù)據(jù),同時將相關數(shù)據(jù)通過opengl導入顯存部件中,按照類型編號分組,以備后續(xù)計算使用。
步驟2:創(chuàng)建無光照的像素細分計算環(huán)境
使用opengl庫函數(shù)中的glbindrenderbuffers指令函數(shù),控制緩存部件gpu中的存儲控件幀緩存對象(framebufferobject,fbo),以fbo為顯示載體,將屏幕顯示控制在顯存中,使用glrenderbufferstorage指令函數(shù)設定fbo在顯存中的內(nèi)存空間,將fbo的大小提高到當前所使用屏幕分辨率大小的3到4倍,使用頂點著色器將步驟一中的模型信息離散到fbo緩存部件中,同時在頂點著色器中編程控制gpu將電腦屏幕上的每個像素按照像素邊長的中點進行二等分或四等分,即將原來一個像素的數(shù)據(jù)放大了4倍,或將像素邊長4等分后放大了16倍,以此實現(xiàn)像素的細分,細分后的像素根據(jù)模型位置信息對應步驟一中的模型信息,使用glshadersource函數(shù)將步驟一中的模型信息傳入頂點著色器,在頂點著色器中計算模型的法矢量后得到新的模型信息,使用gluseprogram函數(shù)將新的模型信息傳入gpu中的光柵化模塊,模型信息經(jīng)過光柵化即可離散成各個獨立的電磁參數(shù),電磁參數(shù)按照像素的位置信息一一對應保存至片元著色器中,至此,像素細分計算環(huán)境搭建完成;
利用opengl中對fbo的控制,實現(xiàn)像素細分技術,并同時使得雷達散射目標尺寸不受顯示器分辨率限制,使模型顯示放在顯示內(nèi)存中創(chuàng)建的虛擬屏幕中完成。細分像素可以有效避免復雜目標縮放在屏幕上,不同離散片元因為顯示精度而導致重合在一個像素上,致使模型細節(jié)損失,使用gpu,可以不考慮光照影響,并結合像素細分可以大幅度提高模型顯示精度及計算精度,極好的彌補了圖形算法相比于低頻算法精度差的問題;
像素細分完成后,按照細分后的像素對應的模型位置信息,獲取步驟1中準備好的計算數(shù)據(jù),使每個虛擬細分像素都精確對應各自的計算參數(shù),并按照虛擬細分像素將數(shù)據(jù)導入到gpu中的片元著色器中,片元著色器是綁定紋理,后期逐個像素進行二次處理的地方,因此可以在片元著色器中完成細分像素的逐個像素散射分量的計算。
步驟3:當片元著色器中獲取到步驟二中光柵化的以像素為單位的電磁參數(shù)時,片元著色器先進行電磁參數(shù)的單位換算和格式換算,換算后的電磁參數(shù)按照公式(1)計算即可得出rcs散射值,公式(1)如下:
式(1)中σ表示散射場,λ表示波長,σpixels()表示細分后的像素為單位求和計算,f為幅度函數(shù),k為波數(shù),z′為像素深度,δs為細分后像素的投影面積,ed為繞射場分量,其中γ按照三種不同極化方式對應不同的計算公式,不同極化方式的γ計算公式如下:
其中n′x、n′y、n′z分別為法矢量在坐標軸xyz上的三個坐標分量,εr(2)、εr(1)分別為內(nèi)層和外層材料的相對介電常數(shù),μr(2)、μr(1)分別為內(nèi)層和外層材料的相對磁導率,α(1)為內(nèi)層材料入射角;
步驟一中搭建的協(xié)同計算框架為一個cpu和gpu并行的計算環(huán)境,所以公式(1)中每個細分后的像素的計算為互不影響的并行運算,極大地節(jié)約了rcs離散后的大量數(shù)據(jù)處理時間;
公式(1)中f如下所示:
其中l(wèi)、h分別為像素的寬和高,sinc為三角函數(shù),k為波數(shù),
步驟4:使用opengl中的映射函數(shù)glframebuffertexture將步驟3中計算的散射場分量保存在片元著色器中,然后使用映射函數(shù)將片元著色器中的散射場分量映射到紋理緩存中,通過映射函數(shù)glbindtexture將紋理緩存中的散射場分量數(shù)據(jù)映射到cpu內(nèi)存中,而后在cpu中完成求和,即可得到總散射場,并根據(jù)麥克斯韋公式計算表面電流,最終得到實時雷達散射截面積(radarcrosssection,rcs)以及模型表面動態(tài)實時的電流強度。
本發(fā)明的仿真計算模型為理想導體球體,球體直徑為500mm,仿真條件為:頻率8ghz,垂直極化采樣間隔為0.1度,共計算180度。
首先,繪制高精度球體模型,而后導入gpu計算程序,在各個著色器中完成相應指令命令的加載,則gpu會自動完成計算直到輸出最終rcs計算結果,分別使用傳統(tǒng)的圖形算法,以及不同細分規(guī)格的gpu加速算法多次計算,最終得到如圖2所示結果。
圖2中理論值代表的是理想導體球的理論值,可以看出,傳統(tǒng)圖形算法計算的rcs值起伏較大,且均值偏離理論值較高,加速算法(1.0)為使用gpu算法,虛擬屏幕設定以736*736為標準分辨率,像素細分倍數(shù)為1倍,加速算法(2.0)為像素細分倍數(shù)為4倍的算法,加速算法(4.0)為像素細分倍數(shù)為16倍的算法,發(fā)現(xiàn)加速算法計算結果起伏更小,更平穩(wěn),并且隨著細分倍數(shù)的增加,計算結果起伏更小,并且均值更加貼近于理論值,由此證明本發(fā)明的正確性,同時也說明本發(fā)明明顯提高了計算的精確度。
如下為計算理想導體球的時間對比表:
其中gpu計算中像素細分倍數(shù)為1倍,速度提高倍數(shù)達到35.7倍,也證明了本發(fā)明的高效性。