李佩峰 , 楊 震
(1.中國科學(xué)院空間科學(xué)與應(yīng)用研究中心 中國科學(xué)院復(fù)雜航天系統(tǒng)電子信息技術(shù)重點(diǎn)實(shí)驗(yàn)室,北京 100190;2.中國科學(xué)院大學(xué) 北京 100190)
在日地環(huán)境中,地球磁場作為常見的空間環(huán)境要素,是高層大氣、電離層與行星際物質(zhì)的重要聯(lián)系紐帶。地磁場能夠反射宇宙空間粒子流,降低和減除太陽風(fēng)對地球的輻射和傷害,如同一個(gè)無形的屏障,將地球包圍起來。地磁場分布廣泛,從地核到空間磁層邊緣處處存在[1]。
一般而言,地球磁場的變化很小,但是當(dāng)外界環(huán)境發(fā)生變化時(shí),例如太陽黑子的劇烈活動(dòng)、高速太陽風(fēng)的噴發(fā),地球磁場將發(fā)生擾動(dòng)變化,包括磁暴、亞暴、鉤擾、灣擾和地磁脈動(dòng)等活動(dòng),對人類以及地球環(huán)境產(chǎn)生極大的威脅。因此目前地球磁場等空間要素的監(jiān)測工作越來越受到各發(fā)達(dá)國家的重視。
空間環(huán)境數(shù)據(jù)具有空間尺度大、坐標(biāo)系復(fù)雜、數(shù)據(jù)種類多、數(shù)據(jù)量大等特點(diǎn),由于以往計(jì)算機(jī)技術(shù)發(fā)展的限制,早期對地球磁場等空間要素?cái)?shù)據(jù)的可視化研究方法有二維平面圖建立、等值面面繪制等方法[2],繪制效果較差,細(xì)節(jié)丟失嚴(yán)重。
本文通過對地球磁場數(shù)據(jù)的預(yù)處理工作,利用體繪制中的經(jīng)典算法—光線投射算法并加以改進(jìn),采用CUDA并行編程平臺(tái)進(jìn)行并行計(jì)算加速,取代以往的CPU串行計(jì)算模式,取得很高的計(jì)算比,實(shí)現(xiàn)體數(shù)據(jù)實(shí)時(shí)繪制效果。
可視化方法應(yīng)用到空間科學(xué)領(lǐng)域中,主要在以下幾個(gè)方面:空間對象運(yùn)動(dòng)規(guī)律的仿真可視化,由空間環(huán)境所導(dǎo)致的自然現(xiàn)象(如極光、日(月)食)的仿真可視化,對空間對象本身(如大氣、磁層、星云等)的仿真可視化等[2]。從技術(shù)方法上可以分為兩類:面繪制技術(shù)(Surface Rendering)和體繪制技術(shù)(Volume Rendering)。
面繪制的主要思想是從數(shù)據(jù)場中提取一系列等值面,然后根據(jù)光照、明暗模型進(jìn)行渲染,從而得到三維結(jié)果影像。面繪制技術(shù)的核心是提取等值面,通過等值面構(gòu)建三角面片網(wǎng)格進(jìn)行渲染顯示。面繪制優(yōu)點(diǎn)是速度較快,缺點(diǎn)是算法結(jié)果只能反應(yīng)某些數(shù)據(jù)展現(xiàn)的結(jié)果,無法通過等值面獲取內(nèi)部或者等值面間關(guān)系的信息,同時(shí)面繪制技術(shù)沒有綜合利用數(shù)據(jù)場的信息,丟失細(xì)節(jié)嚴(yán)重[3]。
相對于面繪制技術(shù)而言,體繪制技術(shù)將三維數(shù)據(jù)直接轉(zhuǎn)化為結(jié)果圖像,不生成中間結(jié)果圖像(等值面)而直接得到渲染結(jié)果。該類算法可以生成三維體數(shù)據(jù)的整體圖像,包括細(xì)節(jié)信息,算法綜合利用體數(shù)據(jù)場的數(shù)據(jù),結(jié)果圖像質(zhì)量高,便于并行處理。但是缺點(diǎn)是計(jì)算量復(fù)雜,耗時(shí)長[3]。
由于體繪制技術(shù)效果更加突出,細(xì)節(jié)表現(xiàn)更好,可以充分利用體數(shù)據(jù)內(nèi)的數(shù)據(jù)信息,本文采用并行計(jì)算和算法優(yōu)化的方式克服體繪制的計(jì)算量大等缺點(diǎn),實(shí)現(xiàn)對磁場體數(shù)據(jù)的實(shí)時(shí)渲染。
光線投射法是以圖像空間為序的一種體繪制算法,由M.Levoy1988年在文獻(xiàn)[4]中提出。算法中三維數(shù)據(jù)場中的每個(gè)體素視為吸收和發(fā)射光線的粒子,根據(jù)每個(gè)體素的特性為其分配不同的顏色和不透明度值。然后從視角出發(fā),投射光線到投影屏幕上的每個(gè)像素點(diǎn),并對顏色和不透明度值沿視線方向進(jìn)行積分,從而得到一幅有半透明效果的二維結(jié)果圖像。
圖1為光線投射算法示意圖。
圖1 光線投射算法示意圖Fig.1 Schematic diagram of ray-casting algorithm
積分計(jì)算過程通過透明度和顏色映射表計(jì)算。透明度本質(zhì)上代表光穿透物體的能力,光穿透一個(gè)物體會(huì)導(dǎo)致波長比例的變化,如果穿越多個(gè)物體,則這種變化累加。所以,透明物體的渲染,本質(zhì)上是將透明物體的顏色和其后物體的顏色進(jìn)行混合,這被稱為alpha混合技術(shù)[5]。從前至后方向進(jìn)行采樣合成,光線計(jì)算公式為:
透明度合成如下:AΔi=(1-AΔi-1)Ci+AΔi-1
其中Ci為計(jì)算到第i點(diǎn)時(shí),光線的累計(jì)值,Ai-1為計(jì)算過i-1點(diǎn)后,光線的阻光度。
CUDA (Compute Unified Device Architecture),即計(jì)算統(tǒng)一設(shè)備架構(gòu),是NVIDIA公司在2007年6月份推出的并行計(jì)算架構(gòu),是第一個(gè)不需要圖形學(xué)API接口的類C語言通用計(jì)算開發(fā)環(huán)境和軟件系統(tǒng)。CUDA將GPU作為數(shù)據(jù)并行計(jì)算的設(shè)備,充分利用GPU強(qiáng)大的浮點(diǎn)數(shù)計(jì)算能力和多計(jì)算核心的特點(diǎn),完成大數(shù)據(jù)并行計(jì)算的任務(wù)。
CUDA工作模式中將CPU作為主機(jī)(Host),GPU作為設(shè)備 (Device),CPU主機(jī)端負(fù)責(zé)完成不適合并行處理的計(jì)算任務(wù)以及一些事務(wù)的處理,GPU設(shè)備端負(fù)責(zé)完成數(shù)據(jù)的并行計(jì)算。CUDA程序是包含主機(jī)代碼和設(shè)備代碼的統(tǒng)一源代碼。CPU和GPU各自擁有相互獨(dú)立的任務(wù)和存儲(chǔ)空間。
雖然光線投射算法的可視化效果突出,但是數(shù)據(jù)計(jì)算量過大,計(jì)算耗費(fèi)時(shí)間長?;隗w繪制實(shí)時(shí)渲染的目的,程序必須對光線投射算法進(jìn)行改進(jìn),提高可視化渲染速率。在保證體繪制渲染效果的前提下減少數(shù)據(jù)計(jì)算時(shí)間。算法改進(jìn)具體體現(xiàn)在光線投射提前終止、建立包圍盒減少光線計(jì)算個(gè)數(shù)等方面[7]。
1)光線提前終止
當(dāng)穿透光線經(jīng)過較多體素時(shí),根據(jù)光照模型原理,此時(shí)透過數(shù)據(jù)場的光線已經(jīng)沒有穿透數(shù)據(jù)場的能力,即沒有提供結(jié)果圖像結(jié)果貢獻(xiàn)的能力,此時(shí)光線應(yīng)提前終止,停止光線計(jì)算[8]。
2)建立包圍盒
并不是所有生成的光線都會(huì)穿透數(shù)據(jù)場,這些光線投射到屏幕的像素點(diǎn)并沒有任何價(jià)值,根據(jù)數(shù)據(jù)場的范圍搭建外層的包圍盒來忽略這些沒有意義的光線十分必要[9]。根據(jù)數(shù)據(jù)場的大小,判定如果需要計(jì)算的光線并不穿過數(shù)據(jù)場,則光線計(jì)算取消,該光線對應(yīng)投射的像素點(diǎn)灰度值設(shè)置為黑。若需要計(jì)算的光線穿過數(shù)據(jù)場,則光線的灰度貢獻(xiàn)值累積計(jì)算從進(jìn)入包圍盒的數(shù)據(jù)點(diǎn)起,到穿出數(shù)據(jù)場的數(shù)據(jù)點(diǎn)止進(jìn)行計(jì)算。
圖2 光線提前終止、構(gòu)建包圍盒減少光線計(jì)算量示意圖Fig.2 Schematic diagram of early termination of the light and construction of the bounding box to reduce the amount of light
紋理存儲(chǔ)器是一種只讀存儲(chǔ)器,由GPU用于紋理渲染的圖形專用單元發(fā)展而來,具備地址映射、數(shù)據(jù)濾波、緩存等功能。紋理存儲(chǔ)器尺寸較大,支持二維尋址,可以通過緩存加速訪問,適合實(shí)現(xiàn)圖像處理算法和查找表[6]。
由于在CUDA并行計(jì)算中,讀取紋理內(nèi)存數(shù)據(jù)速度較快,相對于其他CUDA存儲(chǔ)器方式提供了緩存機(jī)制,因此節(jié)約帶寬,實(shí)現(xiàn)加速訪問數(shù)據(jù)。因此本文將三維體數(shù)據(jù)儲(chǔ)存在紋理存儲(chǔ)器中。
紋理內(nèi)存數(shù)據(jù)存儲(chǔ)方式是一維、二維、三維的線性數(shù)組形式。但地球磁場原始數(shù)據(jù)并不是以規(guī)則化、等間距的存儲(chǔ)形式存儲(chǔ)。所以需要對地球磁場原始數(shù)據(jù)進(jìn)行預(yù)處理,通過三線性插值運(yùn)算規(guī)則化數(shù)據(jù)場,將原始數(shù)據(jù)規(guī)則化三維數(shù)組的存儲(chǔ)形式進(jìn)行紋理內(nèi)存綁定,實(shí)現(xiàn)對數(shù)據(jù)訪問的加速,實(shí)現(xiàn)可視化渲染中對數(shù)據(jù)源的加速訪問。
在可視化程序渲染過程中,當(dāng)需要切換不同時(shí)間的地磁場數(shù)據(jù)來觀察不同時(shí)間段的可視化渲染結(jié)果時(shí),需要調(diào)用函數(shù)從硬盤讀取地磁場數(shù)據(jù)到內(nèi)存,然后內(nèi)存拷貝到顯存,然后將之前已綁定的紋理內(nèi)存解綁,重新綁定新的體數(shù)據(jù)到紋理內(nèi)存,最后進(jìn)行并行處理計(jì)算。即便數(shù)據(jù)量很小,數(shù)據(jù)傳輸速度以及運(yùn)算速度很快,理論上上述操作都是需要時(shí)間進(jìn)行完成的,這就造成切換時(shí)的短暫延遲問題。
為了解決在體繪制可視化中因數(shù)據(jù)讀入、傳輸?shù)纫蛩卦斐射秩狙舆t,渲染速率低的問題,本文在3種存儲(chǔ)結(jié)構(gòu):硬盤存儲(chǔ)、內(nèi)存、顯存各自設(shè)定數(shù)據(jù)傳輸泵,在多線程處理中實(shí)現(xiàn)數(shù)據(jù)讀取、存儲(chǔ)、傳輸、運(yùn)算的動(dòng)態(tài)平衡,從而解決延時(shí)問題。
圖3 數(shù)據(jù)傳輸管線Fig.3 Data transmission pipeline
針對地球磁場數(shù)據(jù)可視化渲染試驗(yàn),本文采用數(shù)據(jù)為多時(shí)相的非等間距采樣的磁場原始數(shù)據(jù),數(shù)據(jù)存儲(chǔ)順序如下圖所示,數(shù)據(jù)存儲(chǔ)格式為二進(jìn)制存儲(chǔ),數(shù)據(jù)量大小為6.61 GB,其中包含53個(gè)時(shí)間段的體數(shù)據(jù)。
以地球磁場密度體數(shù)據(jù)為例,每個(gè)時(shí)相的密度數(shù)據(jù)的數(shù)據(jù)維度大小為160*162*162,以float四字節(jié)存儲(chǔ)體數(shù)據(jù)值,每個(gè)時(shí)相中密度屬性數(shù)據(jù)大小為16 M。以三維線性插值的方式對非規(guī)則數(shù)據(jù)進(jìn)行插值,插值后進(jìn)行灰度拉伸,規(guī)則化數(shù)據(jù)后數(shù)據(jù)維度大小為256*256*256。預(yù)處理后將規(guī)則化后數(shù)據(jù)綁定至紋理內(nèi)存渲染。
圖4 磁場原始數(shù)據(jù)存儲(chǔ)方式Fig.4 Storage format of original geomagnetic filed data
體繪制渲染試驗(yàn)采用硬件及軟件規(guī)格如表1。
體繪制渲染結(jié)果如下圖所示:
通過圖5磁場可視化渲染結(jié)果可以看出,本文試驗(yàn)方法對磁場體數(shù)據(jù)的可視化渲染:結(jié)果圖像成像清晰,細(xì)節(jié)表現(xiàn)出色,數(shù)據(jù)結(jié)果表達(dá)直觀。在512*512的窗口顯示中,可視化渲染速率達(dá)到60FPS以上,實(shí)現(xiàn)了地磁場數(shù)據(jù)的實(shí)時(shí)渲染目的。
以CPU串行計(jì)算為對比,將體數(shù)據(jù)分割為不同維度大小體數(shù)據(jù)塊為試驗(yàn)參考數(shù)據(jù),分別以串行計(jì)算模式和GPU并行計(jì)算模式進(jìn)行光線投射計(jì)算,計(jì)算耗時(shí)如下表所示:
表1 實(shí)驗(yàn)平臺(tái)硬件及軟件規(guī)格Tab.1 Hardware and software specifications of experimental platform
圖5 磁場可視化渲染結(jié)果Fig.5 The rendering results of geomagnetic field visualization
表2 GPU與CPU在光線投射計(jì)算階段所需時(shí)間對比Tab.2 The time needed for calculation in the light projection phase compare CPU with GPU
在CPU串行編程計(jì)算中,雖然亦對體繪制算法進(jìn)行包圍盒以及光線提前終止進(jìn)行改進(jìn),在數(shù)據(jù)量較小的數(shù)據(jù)塊渲染速度較快,但是計(jì)算速度仍然明顯劣與并行計(jì)算,而且數(shù)據(jù)量越大,計(jì)算時(shí)間就會(huì)更長,無法實(shí)時(shí)渲染。利用CUDA并行計(jì)算平臺(tái),經(jīng)過計(jì)算優(yōu)化,串行計(jì)算耗時(shí)很長的光線投射計(jì)算在并行計(jì)算模式下計(jì)算時(shí)間大大減少,可視化渲染已經(jīng)達(dá)到實(shí)時(shí)渲染水平。
本文以地球磁場數(shù)據(jù)為原始數(shù)據(jù)源,采用改進(jìn)的光線投射算法進(jìn)行可視化渲染。利用CUDA并行處理平臺(tái)實(shí)現(xiàn)了地球磁場數(shù)據(jù)的實(shí)時(shí)可視化仿真。通過并行計(jì)算模式解決了日地環(huán)境要素體數(shù)據(jù)中計(jì)算量大、計(jì)算時(shí)間長,難以實(shí)時(shí)的問題。同時(shí)可視化渲染結(jié)果充分利用體數(shù)據(jù)信息,相對以往面繪制等可視化技術(shù)細(xì)節(jié)表現(xiàn)突出,整體效果好。實(shí)時(shí)可視化渲染為空間環(huán)境的研究提供判定依據(jù),為空間規(guī)律的探索提供重要論證手段。
進(jìn)一步的工作是:1)海量數(shù)據(jù)的數(shù)據(jù)組織管理,實(shí)現(xiàn)光線投射的加速跳躍;2)體數(shù)據(jù)壓縮實(shí)現(xiàn);3)同一場景中多空間要素的可視化仿真。
[1]賀歡.空間環(huán)境可視化關(guān)鍵技術(shù)研究[D].北京:中科院空間科學(xué)與應(yīng)用研究中心,2009.
[2]李大林.日地空間環(huán)境仿真可視化技術(shù)研究[D].北京:中科院空間科學(xué)與應(yīng)用研究中心,2008.
[3]唐澤圣.三維數(shù)據(jù)場可視化[M].北京:清華大學(xué)出版社,1999.
[4]Levoy M.Display of Surfaces from Volume Data[J].IEEE Computer Graphics and Applications,1988,8(5):29-37.
[5]俞洲,孟新,彭曉東.基于CUDA海量空間數(shù)據(jù)實(shí)時(shí)體繪制研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2012,33(2):688-694.YUZhou,MENGXin,PENGXiao-dong.Research of real-time rendering of massive space data based on CUDA[J].Computer engineering and design,2012,33(2):688-694.
[6]NVIDIA CUDA統(tǒng)一計(jì)算設(shè)備架構(gòu)編程指南[Z].NVIDA.2014.
[7]解立志,周明全,田沄,等.基于光線投射算法的腦血管體繪制技術(shù)[J].系統(tǒng)仿真學(xué)報(bào),2012,,24(9):1864-1872.XIE Li-zhi,ZHOU Ming-guan,TIAN Yun,et al.Rendering technology for cerebrovascular medical volume data based on ray casting algorithm[J].Journal of System Simulation,2012,24(9):1864-1872.
[8]Levoy M,Efficient Ray Tracing of Volume Data[J].ACM Transactions on Graphics,1990,9(3):245-261.
[9]鄒華,高新波,呂新榮.層次包圍盒與GPU實(shí)現(xiàn)相結(jié)合的光線投射算法[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2009,21(2):172-178.ZOU Hua,GAO Xin-bo,LV Xin-rong.A ray casting algorithm based on hierarchical bounding volumes and GPU[J].Journal of Computer-aided Design and Computer Graphics,2009,21(2):172-178.