李 東 高何璇 何玉英 賈尚云 李紅嶺 金 李 張 旭 高曉陽③
(1 甘肅農(nóng)業(yè)大學機電工程學院 甘肅蘭州 730000;2 甘肅省干旱生境作物學重點實驗室 甘肅蘭州 730000;3 蘭州銀行網(wǎng)絡金融部 甘肅蘭州 730000;4 中國人民銀行蘭州支行 甘肅蘭州 730000)
農(nóng)業(yè)在整個國家的經(jīng)濟中扮演著舉足輕重的角色。早在20世紀60年代中期國外就開始研究農(nóng)作物模型,模擬農(nóng)作物的生長過程,探索預測作物產(chǎn)量[1-2]。隨著科學技術(shù)的飛速進步,國內(nèi)外相繼涌現(xiàn)出了許多作物模型系統(tǒng)和虛擬植物可視化軟件。目前,虛擬植物研究主要是解決農(nóng)作物生長的虛擬模型[3-5]。
利用OpenGL的繪圖函數(shù),對其主要器官的莖、葉和根進行了仿真設(shè)計。該系統(tǒng)基于WIN‐DOWS,基于OpenGL的 Visual Studio 2010作為開發(fā)平臺。
OpenGL系統(tǒng)是一個專業(yè)圖形庫,具有很多圖形編程接口和功能函數(shù)。本文利用OpenGL提供的圖形繪制功能,實現(xiàn)黃芪生長的不同形態(tài)和生長過程可視化[6]。
1.1.1 繪制模型[7]
首先利用該方法在植株的各個部位上輸入一個節(jié)點,并在該圖形庫中調(diào)用該功能,比如glver‐tex3f()并指定各頂點,將這些點繪制成多邊形,再進行變形拼接等構(gòu)建出三維模型。
1.1.2 模型坐標變換
使用 OpenGL的 glTranslate()、glscale()、glscale()轉(zhuǎn)換功能對該模型的坐標進行平移、旋轉(zhuǎn)和縮放,從而設(shè)定該模型的座標值。
1.1.3 顯示圖畫
為了防止在建模過程中出現(xiàn)的卡頓,使用兩種不同的緩存技術(shù)進行繪制[8]。通過調(diào)用glflush()函數(shù)來顯示緩存中的內(nèi)容,再調(diào)用swapbuf‐fers函數(shù)交換2個緩存的數(shù)據(jù),實現(xiàn)邊繪制邊顯示的雙緩存顯示,節(jié)省繪制等待時間,提高動畫顯示流暢效果。
1.1.4 顏色光照設(shè)定
為了讓本論文的模型更加真實,利用OpenGL的RGB色彩空間處理功能設(shè)置了glcolor3f()的模式色彩,然后進行了光照。
1.1.5 動畫顯示效果
為了防止在建模過程中出現(xiàn)卡頓,使用2種不同的緩存技術(shù)進行繪制。使用glflush()功能來表示快取中的內(nèi)容,然后調(diào)用swapbuffers功能對兩個高速緩存進行交換,從而達到了“邊渲染即顯示”的雙重緩沖效應,節(jié)約了繪圖延遲,改善了動畫的流暢性。
本論文中的黃芪生長仿真系統(tǒng)由場景、黃芪器官、黃芪植株、rule等組成。在這些分類中,or‐gan類是指確定各個器官特征的所有虛擬器官的總稱。根據(jù)不同組織之間的父子聯(lián)系,以黃芪的主莖為根,構(gòu)建了一個具有代表性的虛擬器官;根據(jù)試驗所得的黃芪生長規(guī)律,確定了其生長規(guī)律;最后,根據(jù)植物與生長規(guī)律的組合,進行了黃芪的可視化仿真[9-11]。
要實現(xiàn)黃芪的形態(tài)可視化,必須先建立一個立體的器官幾何模型。根據(jù)植物形態(tài)建成模擬模型輸出的葉片和其他器官的形態(tài)參數(shù),對其器官進行觀察[12]。
葉片的幾何建模,黃芪的葉子包括葉柄,葉柄在葉的下面是柱狀的,多片相并著生于枝條節(jié)間。本文對葉片選用NURBS曲面來建模[8]。NURBS 曲面表示如下:
(i=0、1、......m,j=0、1、...n) -一組控制點。wi,j-加權(quán)系數(shù),它與最高點di,j相關(guān)聯(lián)。Ni,k(i=0、 1、 ......m),Nj,l(j=0、1、......n),即u次k,v次標準B樣條,其中,u和v方向的結(jié)點向量U=(u0,u1,..., um+ k+1),按照德布爾遞推公式確定V=(v0,v1,...,vn+l+1)。在NURBS平面上,確定了其控制點,并進行了數(shù)學建模。在NURBS的各個表面上,有10行的控制點,5行的刀片和刀柄,每行7個控制點。刀片的前行是一個由7個控制點組成的矩形,并將其作為一個外切型的圓形[13]。
本文采用 OpenGL圖形庫的相關(guān)功能函數(shù),在visual Studio 2010 平臺上[12,14-16]。首先,建立了一個基于植物的器官模型,并以一個類的形式進行了封裝。以黃芪為對象,分別進行了植株繪制類、莖類類編程,具體內(nèi)容如下。
2.2.1 繪制植株
Class CCapsicum:public CObeject//植株繪制類的定義
2.2.2 莖繪制類
2.2.3 繪制葉類
本文主要實現(xiàn)黃芪生長過程中形態(tài)變化功能,設(shè)計的程序運行后將開始從幼苗期到成熟期的黃芪植株虛擬生長仿真。程序的主要功能是顯示黃芪從幼苗期到成熟期的植株生長過程,分別顯示黃芪在幼苗期、分支期(生長期)和成熟期等的生長狀態(tài),也可單獨顯示在生長過程中黃芪各器官(葉、莖)的發(fā)育變化[11,14-15]。
本程序的主菜單及選項操作有:
“文件”選項卡。下面的選擇是:“幼苗期”——表示在苗期的成長?!胺种凇薄谥θ~發(fā)育過程中的表現(xiàn)?!俺墒炱凇薄诔墒祀A段的表現(xiàn)?!巴顺觥薄x開該體系。
選擇“控制”。下面的選擇是:“暫?!薄V股L并在這個時候查看它的成長狀況。“日/夜”——可以在白天或晚上之間進行轉(zhuǎn)換[16]。
在“生長過程”中選擇“整株植物”——展示了整個黃耆的整個成長歷程?!叭~”——觀察了不同時期的紅花葉片的生長情況。“莖”——說明了不同時期的黃芪根的生長情況。
“程序說明”選項位于“幫助”菜單下。
研究在WINDOWS操作系統(tǒng)下,以visual stu‐dio為開發(fā)平臺,運用OpenGL圖形庫,首先設(shè)計建立了黃芪虛擬生長系統(tǒng)的主要功能模塊和結(jié)構(gòu)框架[17]?;谛螒B(tài)建成模型輸出的葉莖等器官的形態(tài)特征參數(shù),采用NURBS曲面方法建立了黃芪葉片及莖稈3維模型[18],并對所建幾何模型進行顏色和光照等渲染處理,提高了仿真顯示效果及逼真度。然后,根據(jù)黃芪田間實驗取得的植株生長變化規(guī)則,以建立的植物器官為基本圖形單元,采用類封裝方法,實現(xiàn)了植物類繪制、莖類、葉類的虛擬程序[19]。最后,結(jié)合植物和植物的生長規(guī)律,形成一個情景,進行黃芪生長可視化模擬仿真,并對黃芪生長可視化系統(tǒng)的操作功能進行了簡要說明。仿真運行結(jié)果表明本研究基本實現(xiàn)設(shè)計要求。隨著虛擬仿真技術(shù)的不斷進步還仍要繼續(xù)完善改進。