錢旭冉,朱 明,蔡 栩
(中國科學(xué)院國家天文臺,北京 100012)
CN 53-1189/P ISSN 1672-7673
基于Blender的天文數(shù)據(jù)三維可視化*
錢旭冉,朱 明,蔡 栩
(中國科學(xué)院國家天文臺,北京 100012)
天文學(xué)是一門以觀測為基礎(chǔ)的古老學(xué)科,在不同波段的各種形式天文望遠(yuǎn)鏡的觀測已經(jīng)積累了大量的數(shù)據(jù),天文學(xué)領(lǐng)域?qū)?shù)據(jù)的處理與展示有著很高的要求與期望。目前有很多團(tuán)隊(duì)著力于開發(fā)天文數(shù)據(jù)的可視化分析工具和軟件,同時(shí),有很多其他領(lǐng)域的軟件,通過整合和修改也可以應(yīng)用到天文數(shù)據(jù)上。介紹了對三維建模軟件Blender的工具包的再開發(fā),結(jié)合其內(nèi)置的Python API和BPY庫,實(shí)現(xiàn)對常用天文數(shù)據(jù)三維數(shù)據(jù)單元(Data Cube)和N體模擬結(jié)果的實(shí)時(shí)靜態(tài)和動態(tài)三維可視化。
三維可視化;Blender;三維數(shù)據(jù)單元;N體模擬;Python
近年來, 隨著科技的進(jìn)步, 無論是地面的還是天空的觀測設(shè)備都在不斷增加、改進(jìn)和升級,各波段擁有各自優(yōu)秀的望遠(yuǎn)鏡建成并投入使用,如阿塔卡馬大型毫米波/亞毫米波陣列(ALMA)[1]、澳大利亞平方千米陣列(ASKAP)[2]以及位于智利的光學(xué)觀測設(shè)備Very Large Telescope(VLT)*http://www.eso.org/public/teles-instr/vlt/等,隨著觀測能力越來越強(qiáng),接收系統(tǒng)獲得的數(shù)據(jù)量也越來越大,數(shù)據(jù)中包含的多維度信息也越來越豐富。
如何從“高維度”數(shù)據(jù)中完整展現(xiàn)所有的信息,對于天文這樣一個以數(shù)據(jù)為基礎(chǔ)的學(xué)科來說至關(guān)重要。利用數(shù)據(jù)可視化方法,可以發(fā)現(xiàn)數(shù)據(jù)背后的隱藏信息,還原和重構(gòu)信息之間的相互關(guān)系,正如美國計(jì)算機(jī)科學(xué)家布魯斯·麥考梅克在1987年關(guān)于科學(xué)可視化的定義*http://zh.wikipedia.org/zh-cn/%E7%A7%91%E5%AD%A6%E5%8F%AF%E8%A7%86%E5%8C%96中闡述的,數(shù)據(jù)可視化能夠“利用計(jì)算機(jī)圖形學(xué)來創(chuàng)建視覺圖像,幫助人們理解科學(xué)技術(shù)概念或結(jié)果的那些錯綜復(fù)雜而又往往規(guī)模龐大的數(shù)字表現(xiàn)形式”。對天文數(shù)據(jù)進(jìn)行可視化有利于展示復(fù)雜天體如分子云、星系的結(jié)構(gòu),建立恒星形成、星系演化等模型,并且有助于對三維宇宙大尺度結(jié)構(gòu)的研究??梢哉f,有效地展示多維度信息是天文研究的重要手段。
而目前的天文數(shù)據(jù)處理軟件大多數(shù)沒有完善的三維展示功能,對云、煙等無定形態(tài)物質(zhì)和大規(guī)模粒子的三維模擬方法仍處在探索和發(fā)展中,部分天文軟件采用利用二維圖像加上一維譜線的方式體現(xiàn)三維特征,例如Starlink*http://starlink.jach.hawaii.edu/starlink軟件包,或是按一定序列動態(tài)展示二維圖像的方式顯示三維特征,例如GIPSY*http://www.astro.rug.nl/~gipsy/等,但這些傳統(tǒng)的二維圖像顯示模式已不能滿足科學(xué)家們的需求,未來的天文研究需要更完善的數(shù)據(jù)展示方法和工具。
隨著越來越多的科學(xué)家和團(tuán)組意識到三維可視化對天文領(lǐng)域研究的重要性,并致力于開發(fā)滿足宇宙及星系結(jié)構(gòu)研究需求的三維可視化工具,可視化工具包的開發(fā)成為天文領(lǐng)域一個熱門的研究方向,目前已經(jīng)有一批軟件被開發(fā)并且使用,例如美國國家射電天文臺(National Radio Astronomy Observatory)開發(fā)的圖像展示與分析工具CASA Viewer*https://safe.nrao.edu/wiki/bin/view/Software/CasaViewer,小型科學(xué)家團(tuán)隊(duì)開發(fā)的用于光滑粒子流體動力學(xué)的光線
跟蹤算法Splotch*http://www.mpa-garching.mpg.de/~kdolag/Splotch/,以及斯威本科技大學(xué)(Swinburne University of Technology)開發(fā)的三維可視化軟件S2PLOT*http://astronomy.swin.edu.au/s2plot/index.php?title=S2PLOT等等,這些軟件為相關(guān)領(lǐng)域的天文學(xué)家?guī)砹吮憷?/p>
與此同時(shí),天文數(shù)據(jù)結(jié)構(gòu)復(fù)雜、無定形態(tài)等特征,與其他領(lǐng)域的數(shù)據(jù)具有高度相似性,例如醫(yī)學(xué)上展現(xiàn)組織結(jié)構(gòu)的三維影像,地理上的等高線圖等。由于有廣泛的社會需求,這些領(lǐng)域已擁有比較成熟的三維展示軟件,例如醫(yī)學(xué)圖像軟件3Dslicer*http://www.slicer.org/。如果天文數(shù)據(jù)能轉(zhuǎn)換成相應(yīng)的格式,也可以使用這些軟件研究天文領(lǐng)域的復(fù)雜圖像如恒星形成區(qū)等[3]。
本文為天文學(xué)家介紹一款動畫媒體領(lǐng)域使用的專業(yè)三維建模軟件——Blender,及其在天文領(lǐng)域的優(yōu)勢和應(yīng)用,并詳細(xì)說明對三維數(shù)據(jù)單元和N體模擬數(shù)據(jù)的三維可視化工具的開發(fā)過程。
本文使用的Blender[4]工具是一款支持高質(zhì)量的建模、動畫和渲染的開源三維建模軟件,在GNU GLP的官方下載下支持Linux、Mac OS X、Windows操作系統(tǒng)平臺,且在不同平臺下界面保持一致。Blender內(nèi)核由C語言寫成,界面部分由C++寫成,Python作為其應(yīng)用程序編程接口(Application Programming Interface, API)及腳本編輯語言。為了方便用戶進(jìn)行更靈活的開發(fā),Blender將用戶界面(User Interface, UI)的開發(fā)代碼封裝到BPY庫中,用戶可以通過編寫Python腳本自定義用戶界面,并將自定義用戶界面置于工具欄、屬性欄等不同位置,還可以添加各種控件。
其靈活的圖形界面,使得科學(xué)家在導(dǎo)入腳本后便可像使用一般軟件那樣利用Blender實(shí)現(xiàn)天文數(shù)據(jù)的可視化與簡單分析,同時(shí),Blender支持很多數(shù)據(jù)格式,包括靜態(tài)圖片常用的PNG、GIF、JPEG、TIF格式,動畫的AVI、H.264、Quicktime、MPEG格式等,以及常用的三維模型文件格式,同時(shí),Blender軟件包含Python文本編輯器和命令行窗口,因此它能夠方便地處理各種類型的天文數(shù)據(jù)例如FITS、HDF等,通過導(dǎo)入相應(yīng)的Python科學(xué)擴(kuò)展包也可以對數(shù)據(jù)進(jìn)行快速讀取和計(jì)算[5]。
與普通三維建模軟件相比,Blender具有跨平臺性、用戶界面可擴(kuò)展性以及能夠直接展示和處理天文數(shù)據(jù)的特點(diǎn);與天文軟件包相比,Blender具有更好的可視化效果,并能夠?qū)崟r(shí)地觀察數(shù)據(jù)對象的三維結(jié)構(gòu),如圖1,分別展示了不同工具包對同一數(shù)據(jù)的三維可視化效果,數(shù)據(jù)源為范圍z<=3 300 km/s鄰近星系星表Cosmicflow-1 Distance[6]。
從圖1可以看到,Blender可以實(shí)時(shí)地從不同角度對一個數(shù)據(jù)源的形態(tài)結(jié)構(gòu)進(jìn)行觀察,自由靈活地調(diào)整視角,并且數(shù)據(jù)展示的清晰度更高,結(jié)構(gòu)特征表現(xiàn)得更為明顯,用戶還可以通過材質(zhì)紋理等個性化設(shè)置將數(shù)據(jù)模型渲染成高分辨率彩色圖像,將研究成果更好地展現(xiàn)給公眾。
由于對不同的數(shù)據(jù)結(jié)構(gòu)處理需要使用不同的Python擴(kuò)展包,重新編寫程序,因此為了節(jié)約時(shí)間,方便進(jìn)一步分析,在Blender環(huán)境下開發(fā)了對特定結(jié)構(gòu)數(shù)據(jù)三維數(shù)據(jù)單元和N體模擬結(jié)果進(jìn)行三維可視化的工具包。
譜線三維數(shù)據(jù)單元在射電天文觀測中有著廣泛的運(yùn)用,大多數(shù)中性氫、CO等數(shù)據(jù)結(jié)構(gòu)均為三維數(shù)據(jù)單元,它由兩個空間維度(通常是RA和Dec)、一個頻率或波長維度以及通量值構(gòu)成,通常的天文處理軟件只是根據(jù)頻率或波長譜線展現(xiàn)相應(yīng)的二維圖像及其每一點(diǎn)的通量譜線,對于三維數(shù)據(jù)單元的整體結(jié)構(gòu)并沒有一個完整展示。而在研究中,不僅應(yīng)該考慮單獨(dú)分子云的特征,更應(yīng)該把握其形態(tài)結(jié)構(gòu)和動力學(xué)結(jié)構(gòu),估計(jì)周圍物質(zhì)對它的影響,才可以更好地研究其形成和演化規(guī)律。因此,對三維數(shù)據(jù)單元的三維可視化能夠更好地了解它的動態(tài)結(jié)構(gòu),為研究恒星形成和星系演化做準(zhǔn)備,甚至可以在宇宙大尺度結(jié)構(gòu)的研究上做一些科學(xué)推測。
圖1 比較Blender與普通軟件的可視化效果。左上圖為利用Python自帶的繪圖庫Matplotlib對數(shù)據(jù)的三維可視化,左下為用IDL繪制的結(jié)果,右側(cè)為Blender的四視圖效果和渲染結(jié)果
Fig.1 Comparison between the visualization results of the Blender and commonly used software packages. The upper-left panel shows the results of the Matplotlib, which is the built-in plotting library of the Python package. The lower-left panel shows the results of using the IDL. The four panels in the middle and right constitute a set of four-view display rendered using the Blender
下面以FCRAO 14 m望遠(yuǎn)鏡對G25.4-0.14分子云[7]的CO譜線觀測數(shù)據(jù)為例展示基于Blender開發(fā)的三維可視化插件工具。示例數(shù)據(jù)是一個三維數(shù)據(jù)單元,其文件為標(biāo)準(zhǔn)FITS格式,包含頭文件和圖像數(shù)據(jù)兩部分,在頭文件中用鍵值對的方式存儲了文件基本信息以及與觀測、定標(biāo)有關(guān)的一些信息,圖像數(shù)據(jù)部分為三維數(shù)組結(jié)構(gòu),每個數(shù)組元素存儲了當(dāng)前位置的源的通量值,對應(yīng)銀道面坐標(biāo)銀經(jīng)范圍是25.20°~26.00°、銀緯范圍是-0.504°~0.117°,徑向速度范圍是90.476~105.354 km/s,根據(jù)以下公式計(jì)算出分子云中心位置距離太陽為約5.7 kpc。
(1)
(2)
工具包的設(shè)計(jì)思路參考了開源工具包FRELLED*http://www.rhysy.net/frelled.html,使用體繪制技術(shù)展示三維數(shù)據(jù)單元,并將整個可視化工具分為三大模塊,分別為數(shù)據(jù)預(yù)處理模塊、三維模型重建模塊和數(shù)據(jù)分析模塊,每一個模塊有一個用戶界面面板和相應(yīng)的一系列控件實(shí)現(xiàn)用戶交互,這三大功能模塊的具體實(shí)現(xiàn)方法將分別在2.1、2.2和2.3節(jié)進(jìn)行闡述,2.4節(jié)對當(dāng)前工作進(jìn)行總結(jié)。
2.1 數(shù)據(jù)預(yù)處理
對標(biāo)準(zhǔn)FITS格式的譜線數(shù)據(jù)進(jìn)行坐標(biāo)轉(zhuǎn)換、圖像提取等操作,為后續(xù)的三維建模和數(shù)據(jù)分析模塊做準(zhǔn)備,預(yù)處理過程主要分為以下三個步驟:
(1)通過Python的PYFITS擴(kuò)展庫讀取FITS文件的頭信息中的關(guān)鍵字值和數(shù)據(jù)部分內(nèi)容,對應(yīng)關(guān)鍵字含義可參考FITS格式說明文檔[8]。
(2)根據(jù)變量naxes的值,對使用了齊次坐標(biāo)的數(shù)據(jù)集進(jìn)行格式轉(zhuǎn)換,將數(shù)據(jù)集轉(zhuǎn)換為圖像坐標(biāo)下的三維坐標(biāo)格式。
(3)格式轉(zhuǎn)換完成后,通過Matplotlib中的Pyplot庫,將三維數(shù)據(jù)單元數(shù)據(jù)按等間距不同方向投影分割成一系列切片圖片(Slicers),并通過設(shè)置圖片的Alpha*Alpha通道是一個8位的灰度通道,該通道用256級灰度來記錄圖像中的透明度信息,定義透明、不透明和半透明區(qū)域,其中黑表示全透明,白表示不透明,灰表示半透明值改變圖片的透明度。為了獲得更好的可視化效果,需要對每個切片圖片做“剪裁”操作,也就是設(shè)定每個切片所要展現(xiàn)的通量數(shù)值范圍,最后將約900張圖片集存放在指定位置備用。處理前后對比圖如圖2,通過對比可以發(fā)現(xiàn)適當(dāng)方法可以有效地減少每個切片圖片的噪聲,這樣在重建后使得數(shù)據(jù)結(jié)構(gòu)更清晰。
圖2“Adaptive”處理前后效果對比,左為處理前,右為處理后
Fig.2 Comparison of images before and after the adaptive processing (in the left and right panels, respectively)
2.2 三維模型重建
將已處理的圖片作為紋理貼圖到新建的目標(biāo)對象上,并完成圖像坐標(biāo)向世界坐標(biāo)的轉(zhuǎn)換,設(shè)置目標(biāo)對象紋理時(shí)使用的是UV貼圖,可以在Blender的3D Viewport中不通過渲染,使用Texture Mode實(shí)時(shí)、多角度觀察重建的三維模型的結(jié)構(gòu)特征,具體流程如圖3。
圖3 三維模型重建流程示意圖
Fig.3 A flowchart of constructing a 3D model
2.3 數(shù)據(jù)分析
因?yàn)锽lender內(nèi)置Python API的特點(diǎn),可以基于現(xiàn)有的Python科學(xué)數(shù)據(jù)擴(kuò)展包進(jìn)行數(shù)據(jù)分析功能的開發(fā)和擴(kuò)展,這里僅對已開發(fā)功能做一個簡單介紹。
(1)在三維模型重建完成后,選定特定區(qū)域進(jìn)行數(shù)據(jù)分析,在Blender的四視圖下,可以準(zhǔn)確定位興趣區(qū)域。
(2)通過Python的Matplotlib繪圖庫,繪制選取區(qū)域的等高線圖(Contours)和三維等高線序列圖。
(3)自動將相關(guān)參數(shù)傳到SDSS或NED數(shù)據(jù)庫獲得相應(yīng)的光學(xué)波段成圖數(shù)據(jù),并可以自動保存數(shù)據(jù)圖像以進(jìn)一步探究該區(qū)域是否有恒星或星系。
2.4 小結(jié)
本工具具有良好的可移植性,不需要配置使用環(huán)境,在Blender中導(dǎo)入腳本即可,且圖形化界面易于使用和操作。功能上實(shí)現(xiàn)了對FITS格式的三維數(shù)據(jù)單元數(shù)據(jù)的實(shí)時(shí)可視化及簡單分析,并具有可擴(kuò)展性,可以通過Python編程補(bǔ)充和完善現(xiàn)有的數(shù)據(jù)處理功能。
傳統(tǒng)的二維處理方式不能解釋隱藏規(guī)律的特點(diǎn),而利用三維可視化能夠從大量的數(shù)據(jù)中提取有用的信息,或者得到其他方式不容易觀察的數(shù)據(jù)特征。對于三維數(shù)據(jù)單元數(shù)據(jù),二維圖像展示方法丟失的在頻率維度的信息可以通過這個工具被展示,根據(jù)對應(yīng)的旋轉(zhuǎn)曲線和速度分布推導(dǎo)出其空間分布關(guān)系,并還原到三維模型中,從而得到整體的結(jié)構(gòu)信息。從圖4對G25.4-0.14分子云的二維和三維展示的效果對比中可以發(fā)現(xiàn),在二維圖中的結(jié)構(gòu)看上去很像一個環(huán)狀結(jié)構(gòu)的分子云,但在三維圖中環(huán)狀結(jié)構(gòu)并不明顯,很可能是由于投影效應(yīng)而形成二維的環(huán)。根據(jù)(1)、 (2)式,還可以把徑向速度和分子云的距離相對應(yīng)。第三維度的徑向速度實(shí)際上可以看做是分子云的距離,因此圖4展示的是分子云的近似三維空間結(jié)構(gòu),直接展示了巨分子云復(fù)雜的三維空間分布,其中有很多子結(jié)構(gòu)是二維圖像無法展示的。
由此可見三維可視化對研究分子云、星系等復(fù)雜結(jié)構(gòu)的天體特征及其演化,建立物理模型等有較大的幫助。
圖4 展示了不同維度的演示效果。左上為利用Starlink軟件展示的頻率在Frequency=466通道(115.23 GHz)的二維圖像,右上為二維圖像中某一點(diǎn)的CO(1-0)譜線圖,下面兩幅是Blender的三維重建模型效果圖,以不同的角度展示
Fig.4 Comparison of the visualization results of different dimensions for the molecular cloud G25.4-0.14. The upper-left panel shows a 2D image observed at the frequency channel 466 (115.23GHz) and displayed using the Starlink package. The upper-right panel shows the spectral-line profile at one location in the image in the upper-left panel. The two bottom panels show the results of the 3D model in different viewing angles
Blender不僅可以對實(shí)測的三維數(shù)據(jù)單元數(shù)據(jù)進(jìn)行三維展示,對于大規(guī)模數(shù)值模擬(例如N-body模擬)生成的數(shù)據(jù)也有比較好的可視化效果。在現(xiàn)代天體物理學(xué)中,N體模擬是研究各種動力學(xué)系統(tǒng)演化的一個重要途徑。利用現(xiàn)代超級計(jì)算機(jī)的優(yōu)勢,大規(guī)模的N體模擬已達(dá)到數(shù)億級的粒子數(shù)規(guī)模。N體模擬使得全尺度的天體物理模擬得以達(dá)到空前的準(zhǔn)確率和所需的動態(tài)范圍,當(dāng)然同時(shí)也對數(shù)據(jù)存儲和可視化提出了巨大的挑戰(zhàn)。下面的例子展示了利用Blender為N體模擬數(shù)據(jù)進(jìn)行可視化處理,制作三維動畫的過程。
隨著SverreAarseth在20世紀(jì)60年代開發(fā)出第一個NBODY代碼——NBODY1,時(shí)至今日,新版本的N體模擬的代碼NBODY6++[9-10]正在被不斷完善和廣泛使用中,它是一個在大規(guī)模并行計(jì)算機(jī)組上運(yùn)行的、通過圖形處理器加速的、用來模擬星團(tuán)的直接N-body代碼*直接N-body代碼(Direct N-body code)指的是能夠直接解運(yùn)動方程而不需要做任何的假設(shè)或者簡化,它的優(yōu)點(diǎn)是計(jì)算結(jié)果的高度準(zhǔn)確性,缺點(diǎn)則是運(yùn)算復(fù)雜度太高。NBODY6++運(yùn)用四階Hermite積分,并有一系列先進(jìn)的處理方法例如獨(dú)立時(shí)間幀(Individual Time Step, ITS)、Ahmad-Cohen Neighbor Scheme、KS正則化[11]等等來加速計(jì)算。
本例中的數(shù)據(jù)通過NBODY6++代碼,將以Plummer Model*The Plummer model或Plummer sphere 是一個密度定律,由H.C. Plummer第一次使用來擬合球狀星團(tuán)的觀測結(jié)果。它經(jīng)常被N體模擬用作玩具模型(toy model)來模擬恒星系統(tǒng)為密度原型的兩個球狀星團(tuán)及其碰撞過程模擬出來。為了重構(gòu)模擬的動態(tài)演化過程,輸出時(shí)按照固定的時(shí)間間隔,創(chuàng)建一系列按時(shí)間順序排列的幀(Step#0, Step#1, …, Step#n)。通過Blender工具包開發(fā),導(dǎo)入所有幀中的數(shù)據(jù)并以動態(tài)圖的形式展現(xiàn)出來,實(shí)現(xiàn)N體模擬數(shù)據(jù)的動態(tài)三維可視化,具體的數(shù)據(jù)預(yù)處理過程和動畫實(shí)現(xiàn)方法分別見3.1、3.2節(jié)。
3.1 數(shù)據(jù)預(yù)處理
(1)本例中將NBODY6++模擬的數(shù)據(jù)存儲在HDF5中,HDF5是一個為大規(guī)模數(shù)值數(shù)據(jù)集進(jìn)行優(yōu)化的高性能IO庫。多維度(包括位置、速度、加速度、密度等)的粒子數(shù)據(jù)以分開的數(shù)組存儲。通過調(diào)用Python處理HDF5格式的擴(kuò)展庫h5py包,可以方便地將模擬數(shù)據(jù)導(dǎo)入Blender中。
(2)因?yàn)樵贜BODY6++中應(yīng)用了獨(dú)立時(shí)間幀策略,在給定的時(shí)間點(diǎn)僅有活躍粒子(active particles)信息會被整合。星團(tuán)中心的星經(jīng)常會交會(即將碰撞但是沒有發(fā)生碰撞),因此他們的動力學(xué)信息必須常更新。相應(yīng)地,星團(tuán)邊緣的星大多數(shù)在不受擾動的軌跡上運(yùn)動,這也就意味著它們需要少得多的計(jì)算。因此,在HDF5輸出中,僅存儲活躍粒子信息,并通過Hermite scheme為非活躍粒子插入粒子數(shù)據(jù),以節(jié)省存儲空間:
(3)
(4)
(3)如果使用回溯查找的方式查詢每個缺省粒子的最近更新信息,則每次查找的時(shí)間復(fù)雜度平均為O(n2),效率很低。這里通過“以空間換取時(shí)間”,定義一個定長數(shù)組latest_particle[],數(shù)組長度為粒子總數(shù),初始化信息為#Step0中每個粒子的屬性,按對應(yīng)ID存放所有粒子的初始狀態(tài)信息。在每個時(shí)間點(diǎn)讀取粒子信息時(shí)對latest_particle[]數(shù)組進(jìn)行更新,保證數(shù)組中存儲的是每個粒子的“最新”信息,這樣一來查找的時(shí)間復(fù)雜度降為O(n),減少了時(shí)間耗費(fèi)。
3.2 可視化實(shí)現(xiàn)與結(jié)論
本例中通過Blender中每一個實(shí)例對象對應(yīng)模擬數(shù)據(jù)一幀的方式實(shí)現(xiàn)模型建立,即將數(shù)據(jù)預(yù)處理得到的每一幀的完整粒子信息,給相應(yīng)的網(wǎng)格數(shù)據(jù)對象的頂點(diǎn)賦值,然后根據(jù)這些網(wǎng)格數(shù)據(jù)對象創(chuàng)建對應(yīng)的實(shí)例模型。由于一個模擬數(shù)據(jù)往往包含多個幀,因此需要建立多個模型,但是Python作為腳本語言效率較低,為了提高速度,這一過程可以通過C語言擴(kuò)展實(shí)現(xiàn)。
動態(tài)演示部分通過逐幀動畫*逐幀動畫是一種常見的動畫形式(Frame By Frame),其原理是在“連續(xù)的關(guān)鍵幀”中分解動畫動作,也就是在時(shí)間軸的每幀上逐幀繪制不同的內(nèi)容,使其連續(xù)播放而成動畫方法實(shí)現(xiàn)。為每一個實(shí)例模型的隱藏屬性的設(shè)置關(guān)鍵幀及其生存時(shí)間(Life Time),保證每個實(shí)例模型只在固定的時(shí)間出現(xiàn)一幀,由于視覺暫留效應(yīng),人眼所看到的則是連續(xù)的一段動畫,并且因?yàn)樵O(shè)置關(guān)鍵幀的函數(shù)封裝在BPY庫中,函數(shù)調(diào)用耗費(fèi)的時(shí)間很低,動畫生成的效率較高,并能獲得較好的可視化效果,如圖5,由4幅按時(shí)間序列的圖展示了用NBODY6++代碼模擬兩個星團(tuán)碰撞的過程,用戶可以選擇不同的背景和紋理獲得更好的渲染效果,生成形象逼真的動態(tài)視頻,達(dá)到良好的宣傳和出版效果,在上傳的視頻*視頻鏈接http://i.youku.com/u/UMTQ2MzYxNzY5Ng==/playlists中展示了利用Blender制作的三維可視化動畫。
圖5N體模擬效果圖
Fig.5 Our Blender-based 3D visualization of anN-body simulation sequence
由于Blender并不是專業(yè)的天文軟件,對于數(shù)據(jù)的分析等功能擴(kuò)展必須依賴于Python腳本編程完成,因此相對于Paraview*http://www.paraview.org/等專門作數(shù)據(jù)處理的軟件來說,性能方面有一定的局限性。但相比之下,專業(yè)處理軟件往往更專注于分析和計(jì)算功能,在可視化效果方面較差,因此可以通過開發(fā)展示N-body simulation數(shù)據(jù)的工具包作為輔助工具,將科學(xué)成果用更直觀、更美化的方式展現(xiàn)給讀者。
作為傳統(tǒng)數(shù)據(jù)處理模式的補(bǔ)充和完善,三維可視化不僅可以補(bǔ)充二維顯示對信息丟失的缺陷,還可以通過分析整體結(jié)構(gòu)獲得更多的信息。對于天文學(xué)這樣一門以數(shù)據(jù)為研究基礎(chǔ)的學(xué)科來說,三維可視化研究正逐漸成為數(shù)據(jù)分析中不可缺少的一部分。
本文使用非天文軟件Blender,根據(jù)所處理的天文數(shù)據(jù)類型、所關(guān)注的研究重點(diǎn),選取相應(yīng)的可視化技術(shù),結(jié)合Python腳本編程和Blender封裝的BPY庫,開發(fā)了分別針對三維數(shù)據(jù)單元數(shù)據(jù)和N體模擬數(shù)據(jù)結(jié)果的三維可視化工具包,通過此工具包不僅使得所演示的三維模型的相關(guān)參數(shù)符合科學(xué)性,并且三維實(shí)時(shí)多角度的顯示也使得科學(xué)家對數(shù)據(jù)的三維結(jié)構(gòu)特征有一個很好的把握,從而有助于進(jìn)一步研究天體結(jié)構(gòu)演化和模型建立。在未來的研究中,進(jìn)一步完善和擴(kuò)充現(xiàn)有工具包的展示和分析功能,并嘗試與其它現(xiàn)有成熟的天文分析工具包整合,得到一個三維可視化與數(shù)據(jù)處理分析功能并存的軟件包。
[1] Brown R L, Wild W, Cunningham C. ALMA-the Atacama large millimeter array[J]. Advances in Space Research, 2004, 34(3): 555-559.
[2] Johnston S, Bailes M, Barlel N, et al. Science with the Australian Square Kilometre Array Pathfinder[J]. Publications of the Astronomical Society of Australia, 2007, 24: 174-188.
[3] Goodman A A. Principles of high-dimensional data visualization in astronomy[J]. Astronomische Nachrichten, 2012, 333(5-6): 505-514.
[4] Hess R. Blender foundations: the essential guide to learning Blender 2.6[M]. Burlington: Focal Press, 2010.
[5] Kent B R. Visualizing astronomical data with Blender[J]. Publications of the Astronomical Society of the Pacific, 2013, 125(928): 731-748.
[6] Tully R B, Shaya E J, Karachentsev I D, et al. Our peculiar motion away from the Local Void[J]. The Astrophysical Journal, 2008, 676(1): 184-205.
[7] Ai M, Zhu M, Xiao L, et al. Properties of the UCHII region G25.4NW and its associated molecular cloud[J]. Research in Astronomy and Astrophysics, 2013, 13(8): 935-944.
[8] Greisen E W, Calabretta M R. Representations of world coordinates in FITS[J]. Astronomy and Astrophysics, 2002, 395: 1061-1075.
[9] Spurzem R. Direct N-body simulations[J]. Journal of Computational and Applied Mathematics, 1999, 109(1-2): 407-432.
[10]Spurzem R, Berentzen I, Berczik P, et al. Parallelization, special hardware and post-Newtonian dynamics in direct N-Body simulations[M]// The Cambridge N-Body Lectures. Germany: Springer, 2008: 377-389.
[11]Aarseth S J. Gravitational N-body simulations: tools and algorithms[J]. Britain: Cambridge University Press, 2010.
A Study of 3D Visualization of Astronomical Data Based on the Blender
Qian Xuran, Zhu Ming, Cai Xu
(National Astronomical Observatories, Chinese Academy of Science, Beijing 100012, China, Email: mz@nao.cas.cn)
Astronomy is entering a new era of discovery. Employing new facilities for observation and computation will routinely generate data in large amounts. It becomes increasingly important to efficiently process and display astronomical data. While visualization and analysis tools specialized for astronomy are being developed, it is also a trend to modify and integrate software packages in other scientific disciplines to work for astronomical data. As an example of the trend, we adapt the Blender, a graphic software tool with a flexible user interface and an enhanced development environment. In this paper we present the implementation of two Python modules as plugins for the Blender to display 3D spectral-line data cube and make 3D animations ofN-body simulations.
3D visualization; Blender; Data cube;N-body simulation; Python
國家自然科學(xué)基金 (11073028);國家重點(diǎn)基礎(chǔ)研究發(fā)展計(jì)劃 (973計(jì)劃) (2012CB821803) 資助.
2014-06-08;修定日期:2014-07-01 作者簡介:錢旭冉,女,碩士. 研究方向:天文數(shù)據(jù)可視化. Email: qianxuran@nao.cas.cn 通訊作者:朱 明,男,研究員. 研究方向:射電天文. Email: mz@nao.cas.cn
TP391.41
A
1672-7673(2015)02-0204-08