• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于OpenGL和VC的樹木三維可視化模擬實現(xiàn)1)

      2010-08-09 11:07:16趙慶丹羅傳文孫海洪
      東北林業(yè)大學學報 2010年11期
      關鍵詞:圓臺樹干繪制

      趙慶丹 羅傳文 孫海洪 陳 立

      (東北林業(yè)大學,哈爾濱,150040)

      近年來,隨著科學計算可視化技術的發(fā)展,日益深入了對樹木生長機理的研究、森林生態(tài)系統(tǒng)的模擬與預測的研究。人們力求構造更加通用的三維建模與可視化系統(tǒng),對樹木及林分的自然生長和人工經(jīng)營措施等進行實時的本真還原和科學模擬,讓決策者有一個真實的、身臨其境的感受,對輔助森林經(jīng)營管理及影響評價具有極其重要的科學意義。所以,以樹木、森林景觀為主要對象的計算機建模和可視化技術成為森林經(jīng)理學、生態(tài)學、自然地理學、植物學等領域的一個研究熱點[1-2]。自1968年美國生物學家Aristid Lindenmayer提出L-system并被Smith引入到圖形學以來,國外專家學者在植物可視化領域做了許多研究[3]:1981年,美國科學家Witten和Sander提出了對部分樹木的形態(tài)結構進行計算機模擬的DLA模型;1984年,Aono與Knnii提出了樹木三維幾何模型,使用分枝角、開度角等幾何參量,實施對樹木幾何結構的控制和修改;Toronto大學景觀研究中心構造了以圖像方式表達樹木模型的數(shù)學建筑物模型;EXRI公司的ArcView 3DX則采用簡單矢量植物模型;Gruen Al等人利用自主開發(fā)的三維交互式建模系統(tǒng)建立了一些城市景觀模型,但真實性較差。我國數(shù)字植物研究始于20世紀90年代,起步相對較晚,但近年來我國在此領域也取得了一定的進展[4]4-19:郝小琴、宋鐵英等較早地在樹木可視化方面進行了開創(chuàng)性的工作;徐楊等應用L-System模擬樹木的基本形狀;魏瓊等以DOL為基本算法,對樹木的形態(tài)進行三維模擬;雷蕾等提出了一種基于能量模型的葉片紋理構造算法,比通常的紋理貼圖法有更好的隨機性和立體感;宋仁波、常敏基于實測數(shù)據(jù)和經(jīng)驗模型建立了長白落葉松人工林單木靜態(tài)結構模型等。由于樹木形態(tài)的復雜性,以及樹木生長的生理確定性(如樹種、方向性等生理性質(zhì))和長勢不確定性(如生長受地理位置、條件等約束)等特點,使得樹木三維可視化的研究至今仍未得到一個完備的三維計算機樹木模型。筆者將以東北重要樹種——紅松(Pinus koraiensisSieb)為例,將表達樹木形態(tài)結構特征的實測數(shù)據(jù)轉化為圖形或圖像形式在計算機上進行模擬,積累樹木建模和繪制的經(jīng)驗,逐步開發(fā)一個通用的樹木模型及可視化系統(tǒng),以期在林業(yè)研究領域得以應用。

      1 研究方法與模型構建

      1.1 研究方法

      樹木可視化,就是一種運用計算機圖形學的理論與方法對樹木形態(tài)結構和生長過程進行仿真的技術。它將構成樹木形態(tài)結構特征的數(shù)據(jù)轉化為圖形或圖像形式在計算機上進行模擬,即把樹木結構的描述方法與幾何形態(tài)參數(shù)反演成具體的樹木空間形態(tài),通過光照、紋理、渲染等手段繪制成樹木[4]12。

      文中以穆棱地區(qū)天然次生混交林(穆H-1)中的紅松為例,在VC++6.0開發(fā)平臺上結合OpenGL開放式圖形庫,采用傳統(tǒng)的幾何實體建模技術和樹木形態(tài)結構相結合方法,實現(xiàn)基于實測數(shù)據(jù)(包括胸徑、樹高、一級枝條構件的組成數(shù)據(jù)(枝條、弦長、基徑、著枝角度、方位角、弓高等))的靜態(tài)單木可視化模擬。同時,運用紋理貼圖技術,對樹模型及樹木生長的環(huán)境進行真實感描繪,將這些圖片轉化為二維紋理放置于三維樹模型可視化系統(tǒng)中,以提高模擬的逼真性。

      1.2 結構模型

      結構模型一般包括分解信息、幾何結構信息(描述各組分的形狀和空間位置)和拓撲結構信息3個部分的內(nèi)容[5]。幾何結構模型是指對植物整體和器官的三維幾何形態(tài)的描述。拓撲結構模型描述植物器官之間的連接關系。植物的拓撲結構與其分解的組成單元密切相關。文中主要討論幾何形態(tài)描述的方法,且只對紅松的地上部分(樹干、枝條、樹葉)進行三維可視化研究。

      1.2.1 樹干模型

      樹干是樹木的重要組成部分,其干形一般有通直、完滿、彎曲、尖削以及主干是否明顯之分。紅松的干形通直、明顯,且分叉少。干形的變化,隨其粗度自下而上逐漸減少,可用形狀和削度來描述。樹干的形狀一般從橫斷面和縱斷面兩個方面進行研究。在研究中,橫斷面被認為是圓形的。樹干的縱斷面形狀由干曲線式來描述。(孔茲干曲線式:y2=Pxr。式中:y為樹干橫斷面半徑;x為樹干梢頭至該橫斷面的長度;P表示系數(shù);r為形狀指數(shù),且r=2[ln(y1)-ln(y2)]/[ln(x1)-ln(x2)]。

      經(jīng)學者研究表明,樹干各部分的形狀指數(shù)一般都不是整數(shù),即樹干各部分只是近似于某種幾何體。所以,結合干形削度(d2r/D2=-0.108 6+1.085 9(H-Lr)/(H-1.3)。式中:D為胸徑;H為樹高;Lr為任一高度;dr為高度Lr處的直徑)的變化,將樹干按區(qū)分段(每個區(qū)段長度為1 m)進行解析,并將樹干看作由若干個圓臺體和一個圓錐體組成。

      圖1 樹干模型

      1.2.2 枝條模型

      枝條的長度、大小、方位以及與樹干的角度決定著樹冠的形狀,并對葉片起著支撐的作用,它的分枝結構決定著葉片的空間分布。枝條分枝級數(shù)的確定依據(jù)文獻[6]采用由內(nèi)及外的方法,即以主干為0級枝,從樹干上分出來的枝條為1級枝,從1級枝上分出來的枝條為二級枝,從2級枝條分出來的枝條為3級枝,并以此類推。枝條的建模繪制也采用簡單的幾何圖形及利用實測的數(shù)據(jù)生成。以一級枝條為例,將枝條分成若干斷,將每一斷看成是圓柱體或圓臺體,進行一定角度的偏轉來實現(xiàn)。通過總著枝深度、方位角、著枝角度可以確定一級枝條的具體生長位置,通過基徑、枝長、弦長和弓高數(shù)據(jù)可以確定枝條的生長和形態(tài)。

      由于枝條存在彎曲度,其繪制方法略不同于樹干,一般有參數(shù)曲線擬合方法和參數(shù)設定彎曲度模擬的方法。前者需要對枝條的彎曲形狀做大量測量,不適合模擬植物形態(tài)及其生長過程。后者雖然簡單,但是很難形成逼真的彎曲形狀。鑒于二級枝條、三級枝條……數(shù)量多,且不容易進行測量,故以分形理論,用迭代的方法產(chǎn)生這種具有自相似性的結構。每一個枝段可以用彎折、扭轉、長度和半徑4個參數(shù)來表示。一條形態(tài)復雜的樹枝可以看成是由一個給定初始值的枝段通過若干次的迭代生成的。通過生枝段的參數(shù)設置并經(jīng)過若干次的迭代之后,樹枝將逐段發(fā)生扭轉,各枝段的長度和半徑均將逐漸縮小,而各枝段的彎折程度則保持不變。

      1.2.3 樹葉模型

      紅松的葉子為針形,且為五針一束。每一針葉子組成的形狀近似為細長的圓錐體,在繪制葉子時,可以根據(jù)實測的葉子的長度、寬度和厚度采用簡單的幾何圖形來繪制。但如果對樹葉逐片通過實測數(shù)據(jù)進行幾何建模,將耗費巨大的空間和計算量。因此需要將空間上相鄰的多個葉片及連接它們的細枝合并,形成“葉簇”。有些研究[4]96則采用“枝片”來簡化細枝條的幾何表示,即采用一種基于圖像的枝條細節(jié)表示方式,由一個可變形、由細枝中心線擴展而成的四邊形條帶來表示細枝及其子枝和葉子,然后用預計算的枝片紋理實現(xiàn)葉簇的外觀。這種方法能顯著地減少模型的面片數(shù)量,又能獲得更多細節(jié),實現(xiàn)葉子和細枝條的模擬,并達到仿真效果。研究中葉子的建模繪制利用OpenGL提供的簡單的線條圖形函數(shù)并利用實測的數(shù)據(jù)、參考葉簇方式繪制生成。

      2 樹木可視化實現(xiàn)

      2.1 基本流程與步驟

      三維世界中的物體經(jīng)過一系列的幾何變換,通過投影使物體以合適的狀態(tài)顯示出來,然后定義視口,使投影后的物體顯示其內(nèi),相應的流程見圖2。

      圖2 三維圖形繪制的實現(xiàn)流程

      [7],基于OpenGL的樹木可視化可以分為5個步驟。

      ①坐標變換,生成基本圖元:將現(xiàn)實世界中的物體顯示到計算機的二維屏幕上需要一系列復雜的過程,主要涉及多種坐標系之間的轉換。根據(jù)基本圖形單元建立景物模型,并且對所建立的模型進行數(shù)學描述。在 OpenGL中,所有的幾何體都是由若干個有序的頂點集合來描述,而不是將線段、多邊形組合起來構造幾何體。

      ②裁剪變換:把景物模型放在三維空間的合適位置上,并且設置視點以觀察所感興趣的場景。三維幾何物體是在三維坐標中考慮的,當三維圖形的頂點繪制到屏幕上時,它將是二維圖像。因此,將幾何物體的三維坐標轉化到屏幕上的像素位置,需要在計算機進行3種操作:矩陣相乘的變換,包括造型、視圖和投影等操作,這些操作包括旋轉、平移、縮放、反射、正交投影和透視投影;窗口裁減,由于場景是在一個矩形窗口中創(chuàng)建的,所以位于窗口之外的物體必須要裁減掉;視口變換,即在變換坐標和屏幕像素之間建立對應關系。

      ③色彩與光照:根據(jù)應用要求來確定色彩,同時確定光照條件。

      ④光柵化,生成圖形片段:把景物模型的數(shù)學描述及其色彩信息轉換成計算機屏幕上的像素點。

      ⑤紋理貼圖:圖形硬件處理的幾何圖形越多,它所需要的渲染時間就越多,為了快速真實地反映現(xiàn)實感,采用簡單的圖形應用到一個多邊形的表面。文中樹干部分即采用該方法,先將采集的樹干紋理圖像進行過濾,然后在物體表面進行貼圖。

      2.2 應用接口的建立

      在Visual C++中應用OpenGL編程的主要步驟具體有4個部分。

      ①建立應用程序Win32API與OpenGL庫文件之間的聯(lián)系,并加入庫文件 opengl32.lib、glu32.lib 和 glaux.lib,在由MFCApplication Wizard生成的視圖類的頭文件中,加入gl.h、glu.h和glaux.h。應用程序即可調(diào)用OpenGL提供的數(shù)據(jù)類型和函數(shù)。

      ②設置像素格式和管理著色描述表:在創(chuàng)建一個繪圖描述表RC(Render Context,又稱渲染描述表)之前,首先要設置像素格式,完成像素格式的設置后,需要為OpenGL建立RC,只有建立RC后,OpenGL才能調(diào)用繪圖原語在窗口中繪出圖形。通過填寫結構PIXELFORMATDESCRIPTOR來設置顯示設備描述表DC(Device Context)的位圖格式屬性;MySetupPixelFormat()函數(shù)主要完成建立對所需像素格式的描述,選擇系統(tǒng)支持的最接近的像素格式,然后指定為DC的像素格式。圖形繪制完畢后,應斷開當前線程與RC的聯(lián)系,并刪除RC,可在視圖類的WM_DESTROY消息處理函數(shù)中完成。

      ③建立OpenGL視點,添加成員變量和成員函數(shù),調(diào)用OpenGL函數(shù)繪制圖形:主要是定義視景體、清除深度緩存、設置投影模式、建立光照模型、作圖、圖形平移、旋轉等,完成繪圖的初始化及圖形渲染繪制。

      ④消隱:物體被阻擋部分的光線不能到達觀察者的眼中,這些部分就是隱藏部分,是不可見的。如果要使計算機顯示具有真實感的三維物體,必須在視點確定之后,就將物體表面上不可見的點、線、面消去。OpenGL執(zhí)行這一過程的方法叫做圖形消隱。

      2.3 紅松單木可視化模擬

      2.3.1 樹干模擬

      為了讓繪制的圖形與現(xiàn)實中的樹干看起來更加接近,根據(jù)前面構建的樹干模型,將樹干看成是由一系列圓臺體和一個圓錐體組成,樹干的橫斷面幾何形狀近似為圓形。具體方法就是將樹干分為合適的若干段(圓臺),而不同段的上下底直徑可以通過實測數(shù)據(jù)或者樹木的削度方程,即不同高度處計算出來的直徑來獲得,主要參數(shù)包括標準地號、樹木號、RH(相對高系數(shù))、樹高、對應樹高處的直徑等。這樣就會模擬出和現(xiàn)實相接近的圖形,并且使模擬出來的圖形能夠具有生物學的意義。

      首先,讀取實測數(shù)據(jù)并進行數(shù)據(jù)有效性檢查。單木實測靜態(tài)數(shù)據(jù)文件以EXCEL形式存放。包括以下字段項:標準地號(穆棱混交林一號地)、解析木號(紅松平均木)、RH、h(相對高)、D(相對高處帶皮直徑)、樹高(樹木全高)。結構形式及數(shù)據(jù)如表1所示。

      其次,建立一個結構體,表示和存儲各個圓臺體的信息,包括三維坐標、旋轉角度、上下兩個面的半徑、圓臺體高度、頂點數(shù)組等。

      然后,通過改進后的圓臺體繪制函數(shù)進行繪制。OpenGL提供了圓臺體幾何繪制函數(shù)gluCylinder(),但由于該函數(shù)控制的每一段圓臺體上、下面的邊數(shù)并不能隨著模擬樹干的斷面直徑進行變化,同時在紋理貼圖方面也不能根據(jù)樹高的大小進行調(diào)節(jié),所以將不同的圓臺按照合適的角度、位置拼接出來合適的圖形,是研究的關鍵所在。

      完成樹干繪制后,為了達到更加逼真的顯示效果,應對樹干進行渲染。具體實現(xiàn)方法是:從下自上先渲染第一個圓臺體,然后將坐標系在Y軸方向上移第一個圓臺體的高度,進行第二個圓臺體的渲染,再上移第二個圓臺體的高度,渲染第三個……依次遞進。

      2.3.2 枝條模擬

      通過前人的理論研究和實踐分析發(fā)現(xiàn)[9],一級枝在樹干上的垂直分布,基本符合均勻分布。一級干主要參數(shù)有枝的方位角、著枝角度、彎曲度、枝長、枝的基徑、枝長、弦長、弓高。通過方位角、著枝深度(或總著枝深度)和著枝角度控制一級枝生長的位置,通過枝節(jié)數(shù)、枝長和基徑的生長方程控制一級枝的生長及形態(tài)。結構形式及數(shù)據(jù)如表2所示。

      表1 解析木樹干實測數(shù)據(jù)

      表2 解析木部分枝條實測數(shù)據(jù)

      枝條的繪制方法與樹干的繪制過程基本一致,如果樹枝是直的,那么可以將枝條看成是圓錐體,如果是彎曲樹枝,枝條的幾何形狀可以近似看成是由若干段圓臺體加一個圓錐體相互偏轉一定的角度組成拼接的弧線。一般,自然情況下生長的枝條都具有一定的弧度,所以文中所繪制的都是帶有一定弧度的枝條。同時,基于復雜的分枝結構,采用遞歸算法生成枝條。為了進一步繪制多樣化和更加自然的樹木,在樹木生長過程中引入隨機性和枝粗衰減系數(shù),其中隨機性包括多個生成規(guī)則的隨機選擇,生成分枝前的隨機擾動[10]。

      2.3.3 樹葉模擬

      葉子的主要參數(shù)包括葉的葉數(shù)、束量、長度、寬度以及高度。其中葉數(shù)為一束葉子的針數(shù),紅松葉子是五針一束,所以葉數(shù)為5,在繪制時采用了相連具有一定角度的5根線條表示;葉子的長度、寬度、高度由實測數(shù)據(jù)取值(將樹冠分為上中下3層,每層各挑選一個標準枝并采集葉子樣本,再將葉子樣本按長、中、短分為3組,并分別測得長、寬、高各值。見表3),通過OpenGL線條寬度設定。由于樹葉多,很難進行方位角、著枝角度等參數(shù)的測量,所以一律采用隨機方法產(chǎn)生。

      在繪制樹葉時,每束用相連且有一定角度的5根線條表示,每根線條由若干段組成,且稍有扭曲,所以將每段偏轉一定的角度來反映葉子的扭曲。葉子的初始化由兩個函數(shù)完成。InitMyLeavs()函數(shù)完成樹干上最上一段樹干(當年生)的葉子初始化,另一個函數(shù)InitMyLeaf()對具體的枝條葉子初始化。葉子的渲染由MyShowLeavs()函數(shù)通過調(diào)用葉子結構體成員函數(shù)Draw()實現(xiàn)。

      表3 解析木樹葉實測數(shù)據(jù)

      圖3 樹木可視化的效果

      2.4 樹木生長環(huán)境模擬

      真實感的三維地形繪制,必須采用現(xiàn)實世界中的具體數(shù)據(jù)來構造,一般采用數(shù)字高程模型方法。這種方法生成的地形精度高,但是數(shù)據(jù)結構復雜,圖形生成速度慢。文中對地形方面沒有那么高的要求,主要是滿足感官上的要求,所以采用模擬地形的方法隨機生成地形,但是不能和現(xiàn)實世界一一對應。

      在場景中繪制藍天白云效果,可以增強場景的真實程度,繪制方法主要有盒子方法和球形方法[11],雖然這兩種方法模擬出的云彩都有流動感,但是兩者有較大差別。為了增強系統(tǒng)的運行速度,采用盒子方法,簡單建立天空效果。云彩的繪制時通過一個四邊形上貼一幅云彩圖像來模擬,流動效果是通過變換紋理坐標來實現(xiàn),再加上霧化效果以達到更加逼真的效果。

      3 結論

      在總結分析前人工作的基礎上,重點圍繞基于幾何實體的樹木建模技術對樹木三維可視化技術進行了研究探討,并對紅松進行了三維可視化模擬,實現(xiàn)了較逼真的樹木三維可視化效果,真實描繪樹木生長的環(huán)境。但也存一些缺點和不足,有待進一步的研究與提高:改進渲染算法,有效降低林木渲染的復雜性問題;與計算機硬件技術相結合,進一步提高渲染速度的問題;采用更加合適的構圖法,從而建立更加通用的樹木模型,解決樹木種類繁多、不能適合所有樹種的問題;動態(tài)模擬樹木生長過程問題。

      參考文獻

      [1]陳彥云,林琿,孫漢秋,等.高度復雜植物場景的構造和真實感繪制[J].計算機學報,2000,23(9):917-925.

      [2]郝小琴.林業(yè)科學與可視化[J].林業(yè)科學,2001,37(6):105-109.

      [3]劉倩.三維可視化技術的應用研究[D].鄭州:河南農(nóng)業(yè)大學,2008.

      [4]劉兆剛.樟子松人工林樹冠動態(tài)三維圖形模擬技術的研究[D].哈爾濱:東北林業(yè)大學,2003.

      [5]Godin C,Caraglio Y.A Multiscale Model of Plant Topological Structures[J].Jtheor Biol,1998,191(1):1-46.

      [6]肖銳.樟子松人工林樹木構筑型的研究[D].哈爾濱:東北林業(yè)大學,2006.

      [7]費廣正,蘆麗丹,陳立新.可視化OpenGL程序設計[M].北京:清華大學出版社,2001.

      [8]Wright R S,Michael S Jr.OpenGL超級寶典[M].3版.徐波,譯.北京:人民郵電出版社,2005.

      [9]雷相東,常敏,陸元昌,等.長白落葉松單木生長可視化系統(tǒng)設計與實現(xiàn)[J].計算機工程與應用,2006,42(17):180-183.

      [10]陳曉,彭國華,趙叢.基于分形三維L系統(tǒng)的真實樹木搖曳動態(tài)模擬[J].計算機工程與應用,2008,44(26):77-79.

      [11]和平鴿工作室.OpenGL高級編程與可視化系統(tǒng)開發(fā):高級編程篇[M].2版.北京:中國水利水電出版社,2006.

      猜你喜歡
      圓臺樹干繪制
      Art on coffee cups
      為什么樹干不是方的?
      軍事文摘(2021年16期)2021-11-05 08:49:16
      放學后
      童話世界(2018年17期)2018-07-30 01:52:02
      1.1.3圓柱、圓錐、圓臺
      為什么要在樹干上刷白漿
      為什么要在樹干上刷白漿
      為什么要在樹干上刷一層白漿
      機身共形圓臺陣結構對地雜波譜特性影響分析
      現(xiàn)代紅木家具鑒賞——十二生肖圓臺
      在轉變中繪制新藍圖
      和田县| 津南区| 社会| 镇康县| 昌黎县| 喀喇| 南漳县| 雷山县| 邮箱| 泸州市| 林口县| 双江| 阳谷县| 登封市| 岳池县| 调兵山市| 迁西县| 浮山县| 繁昌县| 宝山区| 工布江达县| 蒙城县| 弥渡县| 东台市| 盐池县| 涿鹿县| 水富县| 洞口县| 米易县| 芷江| 白河县| 辽阳市| 阜新市| 宁乡县| 九江市| 通道| 建平县| 吉林省| 炉霍县| 嘉兴市| 文成县|