葉少挺,吳子朝,梁森苗,鄭可鋒,祝利莉,胡為群,彭一輝
(1.浙江省農(nóng)業(yè)科學(xué)院,浙江杭州 310021;2.杭州電子科技大學(xué),浙江杭州 310058)
一種基于Unity3D的虛擬楊梅三維修剪系統(tǒng)
葉少挺1,吳子朝2,梁森苗1,鄭可鋒1,祝利莉1,胡為群1,彭一輝1
(1.浙江省農(nóng)業(yè)科學(xué)院,浙江杭州 310021;2.杭州電子科技大學(xué),浙江杭州 310058)
本文基于Unity3D平臺,提出了一種虛擬楊梅三維修剪系統(tǒng)的實(shí)現(xiàn)方法。該方法重點(diǎn)解決了場景模型組織、切割求交、重新三角化、知識展示等問題,設(shè)計(jì)和實(shí)現(xiàn)了修剪教學(xué)、標(biāo)準(zhǔn)修剪和自由修剪等功能。試驗(yàn)表明,系統(tǒng)功能完善,有較好的擬真度和交互性,可以滿足在Internet上發(fā)布和實(shí)時(shí)傳輸?shù)囊?,在推廣中也獲得了較好的評價(jià)。
Unity3D;楊梅;虛擬修剪;建模
對楊梅進(jìn)行適當(dāng)?shù)恼涡藜?,有利于培養(yǎng)結(jié)構(gòu)合理的豐產(chǎn)樹型,促進(jìn)幼樹營養(yǎng)生長向生殖生長轉(zhuǎn)化,提早進(jìn)入結(jié)果期,且可改善樹冠的通風(fēng)透光條件,減少病蟲害的發(fā)生,有利于提升果實(shí)品質(zhì)[1]。在實(shí)際生產(chǎn)中,種植者往往很難快速掌握修剪的技術(shù)和要訣,會由此導(dǎo)致修剪效果不佳,影響楊梅的生長和采收。
虛擬楊梅三維修剪系統(tǒng)(簡稱系統(tǒng))利用計(jì)算機(jī)圖形學(xué)和互聯(lián)網(wǎng)絡(luò)技術(shù),模擬一系列高仿真、可自主學(xué)習(xí)的虛擬楊梅植株場景,提供一種方便的可多次模擬、反復(fù)練習(xí),以掌握先進(jìn)修剪技術(shù)的新方法[2]。用戶可在系統(tǒng)中一邊自主修剪,一邊學(xué)習(xí)相關(guān)科學(xué)知識,最終過渡到實(shí)際生產(chǎn)中的楊梅修剪操作[2],達(dá)到快速學(xué)習(xí)和掌握楊梅修剪實(shí)用關(guān)鍵技術(shù)的系統(tǒng)目標(biāo)。
系統(tǒng)采用基于Web的虛擬現(xiàn)實(shí)技術(shù),面向Internet發(fā)布。用戶通過Web瀏覽器訪問系統(tǒng),使用鼠標(biāo)鍵盤可360°觀察虛擬楊梅植株,并進(jìn)行枝條修剪等交互操作。其修剪操作滿足如下要求:準(zhǔn)確、快速地拾取待剪枝條;修剪過程具有實(shí)時(shí)性;用戶界面友好,人機(jī)交互過程符合真實(shí)的人工修剪操作等[3]。
1.1 平臺選擇
目前,基于Web的虛擬現(xiàn)實(shí)開發(fā)工具主要有WebGL,Unity3D,VRML,Quest3D,Virtools, Cult3D等。其中Unity3D是由Unity Technologies開發(fā)的一個(gè)功能強(qiáng)大的集成游戲引擎和編輯器,它可以通過簡單的用戶界面迅速高效地創(chuàng)建對象、導(dǎo)入外部資源,并可通過簡單的拖拽操作實(shí)現(xiàn)諸如變量賦值,連接腳本等操作。目前,Unity3D以其優(yōu)越的框架已在眾多三維可視化應(yīng)用系統(tǒng)開發(fā)中用作支撐平臺。經(jīng)過綜合考慮,本系統(tǒng)采用Unity3D平臺進(jìn)行開發(fā)。
1.2 功能設(shè)計(jì)
系統(tǒng)擬提供以下功能模塊。
修剪教學(xué)。提供修剪入門教程。包括如何使用鼠標(biāo)選取枝條,選擇合理切割位置和切割方向等信息。
標(biāo)準(zhǔn)修剪。本模塊對用戶行為有一定的限制性和引導(dǎo)性。當(dāng)用戶使用鼠標(biāo)滑過待剪枝條時(shí),系統(tǒng)會將該枝條高亮顯示,同時(shí)提示枝條類型和修剪位置等信息,并在修剪完成后提示修剪原因和相關(guān)技術(shù)知識,逐步引導(dǎo)用戶修剪出標(biāo)準(zhǔn)的楊梅樹型。
自由修剪。是“標(biāo)準(zhǔn)修剪”的進(jìn)階功能,對用戶行為無限制。用戶可以沿任意方向?qū)χl進(jìn)行自主修剪,修剪過程中系統(tǒng)不作任何提示,直到修剪完成后才會給出相關(guān)評價(jià)。
2.1 場景模型組織
為了保持楊梅植株逼真的視覺效果,同時(shí)降低系統(tǒng)負(fù)擔(dān),系統(tǒng)使用面片建模法,在3D MAX中構(gòu)建具有較少面片數(shù)但不影響真實(shí)感的植株模型[4]。
根據(jù)現(xiàn)實(shí)中楊梅植株的枝條層次關(guān)系和修剪規(guī)范要求,植株模型被分解成若干個(gè)子模型,如圖1所示,標(biāo)號為②的二級主枝與③④號子枝條作為一個(gè)子模型被創(chuàng)建,該子模型的形態(tài)在術(shù)語中被稱為“直立枝”。在“標(biāo)準(zhǔn)修剪”模塊中這個(gè)“直立枝”模型將被整體高亮顯示并參與修剪運(yùn)算。
圖1 植株模型的組織關(guān)系
模型組織完畢后,導(dǎo)入到Unity3D中,分別通過具體設(shè)計(jì)賦予其材質(zhì)、光照等屬性,并添加交互事件和相關(guān)知識等接口,方便具體操作過程的交互和提示,具體流程如圖2所示。
圖2 虛擬場景構(gòu)建的流程
2.2 修剪算法
修剪算法是系統(tǒng)實(shí)現(xiàn)的核心部分。為了逼真地實(shí)現(xiàn)枝條修剪操作,系統(tǒng)采用鼠標(biāo)拖拽的方式來模擬該過程。
當(dāng)用戶在虛擬場景中點(diǎn)擊鼠標(biāo)并拖拽時(shí),采用光射投射算法確定該射線同網(wǎng)格的具體相交點(diǎn)和拖拽方向,并根據(jù)該相交點(diǎn)和拖拽方向確定相交平面。然后將該平面與相交的模型作求交,并采用基于八叉樹的數(shù)據(jù)結(jié)構(gòu)來加速該求交過程,得到三角形內(nèi)的切割位置。如圖3所示,當(dāng)用戶使用鼠標(biāo)在模型上作切割之后,通過射線與模型求交,會得到一系列與線條有相交的三角形列表。隨后,采用Delaunay三角剖分的策略來重新網(wǎng)格化。具體Delaunay策略描述如下。
圖3 植株模型切割的示意圖
(1)找出面片內(nèi)待插入的頂點(diǎn)(與邊有相交的頂點(diǎn)),將該點(diǎn)與該多邊形內(nèi)其他點(diǎn)相連,從而生成一系列新的三角形。
(2)由2個(gè)公共邊組成的四邊形進(jìn)行判斷,如果其中有一個(gè)三角形的外接圓包含第4個(gè)頂點(diǎn),則將這個(gè)四邊形的對角線進(jìn)行交換。
(3)對新的頂點(diǎn),迭代(1)(2)步,直到對所有新插入的點(diǎn)都做好三角化。
具體細(xì)節(jié)如圖4所示:給定一個(gè)三角形(頂點(diǎn)以a,b,c來表示)(圖4中a),如果在e,f處將該三角形切割分開(圖4中b),則通過任意連接一條邊,假設(shè)為a,f,計(jì)算其外接圓,判斷是否包含其他點(diǎn)(圖4中c),通過優(yōu)化最終將邊a,f優(yōu)化為e,c(圖4中d)。
圖4 Delaunay三角化過程
2.3 知識集成
為了讓用戶快速有效地掌握楊梅修剪技術(shù),系統(tǒng)在相關(guān)模塊中集成相關(guān)栽培知識,并在修剪過程中全方位實(shí)時(shí)展現(xiàn)。
這些知識存儲在一系列的XML文件中,并通過Unity3D自帶的GUI框架顯示。系統(tǒng)預(yù)加載和解析XML內(nèi)容信息后,通過判斷鼠標(biāo)位置和相關(guān)事件,觸發(fā)顯示事件。
圖5 “標(biāo)準(zhǔn)修剪”模塊的知識集成
系統(tǒng)開發(fā)完成后,相關(guān)實(shí)驗(yàn)在一臺普通PC(Intel Celeron E3300 2.5GHz/2GB/IE8/電信寬帶4 Mbps)上進(jìn)行。
速度試驗(yàn)。如首次通過Internet訪問系統(tǒng),其響應(yīng)時(shí)間平均為5~6 s,而再次訪問時(shí)間可縮短到2~3 s;訪問一些較大場景的響應(yīng)時(shí)間平均在3~5 s;通過鼠標(biāo)旋轉(zhuǎn)、縮放、平移和修剪操作響應(yīng)較實(shí)時(shí),基本感覺不到等待時(shí)間,其算法效率較高(模型擁有三角形面數(shù)55 180個(gè))。
功能試驗(yàn)。系統(tǒng)使用了一個(gè)典型的成年東魁楊梅植株模型,在這個(gè)模型上實(shí)現(xiàn)了修剪教學(xué)、標(biāo)準(zhǔn)修剪和自由修剪等功能模塊,部分修剪效果見圖6。
圖6 修剪前后植株形態(tài)的比較
系統(tǒng)存在局限性。在“自由修剪”功能模塊中,植株模型枝條在三維空間呈縱橫交錯(cuò)之勢,如果用戶在視野較遠(yuǎn)的情況下進(jìn)行修剪,其動作形成的平面可能會與不同緯度的多個(gè)枝條同時(shí)形成交集,導(dǎo)致修剪算法較難準(zhǔn)確判斷修剪目標(biāo)枝條,容易對非目標(biāo)枝條造成“誤傷”。
現(xiàn)階段實(shí)現(xiàn)精確修剪的操作規(guī)范。用戶需先使用鼠標(biāo)中鍵拉近與目標(biāo)枝條的距離,然后通過鼠標(biāo)左鍵在修剪部位做小范圍的手勢動作來完成。圖7展示了2種修剪方式的比較。
然而,此局限性并不影響系統(tǒng)的功能完整性和擬真度,因?yàn)楝F(xiàn)實(shí)中種植者一般只對距離較近的單根枝條進(jìn)行操作。
圖7 “自由修剪”模塊的鼠標(biāo)動作
兼容試驗(yàn)。因?yàn)閁nity3D平臺具有優(yōu)秀的兼容性,系統(tǒng)在IE,Safari,F(xiàn)irefox和Chrome等主流版本的瀏覽器下均能流暢運(yùn)行。
安全試驗(yàn)。項(xiàng)目組使用Web安全測試工具IBM Security AppScan對系統(tǒng)進(jìn)行了掃描實(shí)驗(yàn),發(fā)現(xiàn)中高風(fēng)險(xiǎn)0個(gè),低風(fēng)險(xiǎn)6個(gè),參考建議21個(gè),表明系統(tǒng)的安全性較強(qiáng)。
推廣試驗(yàn)??蒲腥藛T已將該系統(tǒng)推廣到5個(gè)鄉(xiāng)鎮(zhèn),共計(jì)培訓(xùn)種植者1 253人,受訓(xùn)人員評價(jià)該系統(tǒng)操作直觀,可反復(fù)練習(xí),對掌握楊梅修剪關(guān)鍵技術(shù)要點(diǎn)有較大幫助。
本文提出了一種使用Unity3D平臺來虛擬楊梅修剪操作的方法,可以有效模擬實(shí)際生產(chǎn)中的修剪操作,能夠滿足Web用戶實(shí)時(shí)交互性的需求[4],是數(shù)字農(nóng)業(yè)與傳統(tǒng)農(nóng)業(yè)研究相結(jié)合的一次協(xié)同創(chuàng)新,在現(xiàn)階段具有一定的先進(jìn)性和探索性,但系統(tǒng)的實(shí)用性仍有待進(jìn)一步提高。
隨著虛擬現(xiàn)實(shí)技術(shù)的進(jìn)一步發(fā)展和推廣,本方法將得到更多面數(shù)、更高逼真度和更優(yōu)秀算法的支撐,預(yù)期可以在農(nóng)業(yè)實(shí)用技術(shù)推廣和科研領(lǐng)域得到更廣泛的應(yīng)用。
[1] 謝志亮,吳振旺.浙江省四大楊梅良種及主要栽培技術(shù)[J].溫州農(nóng)業(yè)科技,2011(12):26-29.
[2] 田世平,苗良.模擬果樹修剪系統(tǒng)研究[J].農(nóng)業(yè)網(wǎng)絡(luò)信息,2006(2):32-38.
[3] 林定,陳崇成,唐麗玉,等.基于顏色編碼的虛擬樹木交互式修剪技術(shù)及其實(shí)現(xiàn)[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2011,23(11):1799-1807.
[4] 張倩倩,淮永建.網(wǎng)絡(luò)環(huán)境中虛擬樹木的建模和實(shí)時(shí)渲染研究[J].計(jì)算機(jī)仿真,2009,26(2):259-262.
(責(zé)任編輯:高 峻)
TP 391.7
:B
:0528-9017(2014)10-1632-03
文獻(xiàn)著錄格式:葉少挺,吳子朝,梁森苗,等.一種基于Unity3D的虛擬楊梅三維修剪系統(tǒng)[J].浙江農(nóng)業(yè)科學(xué),2014(10):1632-1635.
2014-06-12
浙江省農(nóng)科院科技創(chuàng)新能力提升工程項(xiàng)目(2012R28Y01E03);國家公益性行業(yè)(農(nóng)業(yè))科研專項(xiàng)經(jīng)費(fèi)(201203089)
葉少挺(1979-),男,助理研究員,從事農(nóng)業(yè)信息技術(shù)與數(shù)字農(nóng)業(yè)研究工作。E-mail:ysting@mail.zaas.ac.cn。