李全亮,何漢武,吳悅明+
(1.廣東工業(yè)大學(xué) 機電工程學(xué)院, 廣東 廣州 510006;2.廣東工貿(mào)職業(yè)技術(shù)學(xué)院 機械工程系, 廣東 廣州 510510)
AR技術(shù)[1,2]是一種跨多個學(xué)科的綜合體[3],AR系統(tǒng)的開發(fā)涉及大量的圖形學(xué)和平臺相關(guān)的代碼編寫,開發(fā)門檻高。
目前,可用于AR系統(tǒng)開發(fā)的工具包主要有采用人工標(biāo)識跟蹤定位的ARToolKit[4]工具包、采用自然特征進行跟蹤定位的Vuforia[5]工具包和EasyAR[6]工具包。雖然這些開發(fā)包封裝了底層的跟蹤注冊算法,但仍然需要開發(fā)者編寫大量的代碼來控制場景中模型的布局、渲染、運動等工作。為了簡化AR系統(tǒng)的開發(fā)流程,Jee等開發(fā)了一種基于AR的電子學(xué)習(xí)應(yīng)用開發(fā)工具[7],以及褚偉龍等提出了一種移動AR框架系統(tǒng)[8],這類開發(fā)工具可制作的簡單AR系統(tǒng),但開發(fā)過程不夠直觀和靈活,所制作的AR系統(tǒng)的交互功能相對單一。此外,Hürst等提出了一種創(chuàng)建和編輯三維物體的AR應(yīng)用[9],而文獻[10,11]則側(cè)重于AR場景動畫的可視化制作。
基于以上情況,本文提出并實現(xiàn)了一種用于開發(fā)AR系統(tǒng)的可視化創(chuàng)作平臺。該平臺的開發(fā)工具提供了圖形化的設(shè)計界面,設(shè)計人員通過對界面圖元的拖曳、連線和設(shè)置圖元的相關(guān)參數(shù)完成AR作品的設(shè)計。而平臺的AR瀏覽器通過解析AR作品來呈現(xiàn)AR的設(shè)計效果。該平臺的整個開發(fā)過程無需編寫代碼,且直觀、高效。
為了讓設(shè)計人員能靈活、直觀地添加AR系統(tǒng)標(biāo)識、虛擬模型和交互方法,本文提出了一種基于路由圖的復(fù)雜交互邏輯表達方法。該方法用不同類型的圖元模塊來表示AR系統(tǒng)的各部分功能,并用不同類型圖元模塊的組合來表示AR系統(tǒng)的邏輯序列或動作序列,該方法的具體描述如下。
根據(jù)AR系統(tǒng)的實現(xiàn)過程,圖元模塊分成4種基本類型:
(1)標(biāo)識:AR系統(tǒng)跟蹤注冊所用的標(biāo)識;
(2)模型:AR系統(tǒng)中的虛擬模型;
(3)事件:AR系統(tǒng)中的交互方法;
(4)行為:響應(yīng)某個事件的系統(tǒng)處理行為。
規(guī)定圖元模塊間的組合方式只有以下3種:
(1)標(biāo)識-模型:表示在某標(biāo)識上顯示某個虛擬模型;
(2)模型-事件:表示某個虛擬模型被某個交互方法所控制;
(3)事件-行為:表示某個交互方法被觸發(fā)時,系統(tǒng)執(zhí)行某個處理行為。
圖元模塊間的連貫組合將形成一個路由圖,如圖1所示,路由圖有四級路由節(jié)點,并規(guī)定標(biāo)識作為根節(jié)點,而模型、事件、行為分別為二級節(jié)點、三級節(jié)點、四級節(jié)點。
圖1 AR路由圖
假設(shè)圖1中的B1、B2、B3分別為動畫行為、移動行為和旋轉(zhuǎn)行為,則該路由圖所配置的AR系統(tǒng)可解釋為:在該AR系統(tǒng)中選擇標(biāo)識I1作為系統(tǒng)的標(biāo)識,而在該標(biāo)識上顯示M1、M2和M3這3個模型。其中事件E1控制著模型M1,而事件E2同時控制著模型M2和模型M3。當(dāng)事件E1被觸發(fā)時,模型M2將執(zhí)行某個動作且沿著某個方向移動。而當(dāng)事件E2被觸發(fā)時,模型M2和模型M3同時繞某個方向旋轉(zhuǎn)。
本文用一個交互方法同時控制一個模型的移動和另一個模型的隱藏為例來說明該表達方法的實現(xiàn)過程。第一步定義圖元模塊的屬性,這些屬性的定義都與系統(tǒng)的功能需求相關(guān)。AR系統(tǒng)最基本的功能是將虛擬模型顯示在標(biāo)識的某個位置上,因此標(biāo)識圖元要有文件名稱屬性,而模型圖元要有位置、可見性等基本屬性。AR系統(tǒng)另一重要功能是與虛擬物體的交互,以虛擬按鈕交互為例,則按鈕事件圖元應(yīng)有虛擬按鈕位置、觸發(fā)方式等屬性,而行為圖元要有作用對象屬性以及與行為類型相關(guān)的屬性,如圖2所示。行為圖元的作用對象屬性值默認為Default,代表該行為作用于在同一支路上的模型,如圖2中的移動行為圖元,它的作用對象為模型A。而圖2中的隱藏行為圖元的作用對象屬性值并不是Default,而是指定了模型B,這是為了實現(xiàn)同一個交互方法同時控制模型A的移動和模型B的隱藏。
圖2 路由圖的解析
第二步解析路由圖,系統(tǒng)根據(jù)路由圖中的圖元模塊間的組合和圖元模塊的屬性來動態(tài)添加模型、交互方法等,其中交互方法的動態(tài)添加為本平臺的核心。交互方法添加方式如下:①預(yù)定義相應(yīng)的交互類來存儲事件圖元與行為圖元的屬性值,并用C#的List集合來存儲這些交互類的實例化對象;②預(yù)定義相應(yīng)的交互函數(shù)和行為函數(shù)來控制模型的運動;③根據(jù)事件的類型,將交互類集合放在相應(yīng)的交互函數(shù)下遍歷。如圖2所示,按鈕交互類集合放在OnGUI()函數(shù)[12]中遍歷,當(dāng)檢查到虛擬按鈕按下時,系統(tǒng)將執(zhí)行移動和隱藏這個兩種行為方法。
根據(jù)任務(wù)的不同將平臺劃分為3個部分:AR圖形化開發(fā)工具、AR瀏覽器、AR服務(wù)器。平臺整體框架如圖3所示。
圖3 平臺整體框架
設(shè)計人員借助AR圖形化開發(fā)工具完成AR系統(tǒng)內(nèi)容的創(chuàng)作并生成相應(yīng)的AR作品,AR作品由4種文件組成,它包括用于三維注冊的識別文件、系統(tǒng)配置文件、模型文件和音頻文件。AR服務(wù)器用于AR作品的存放和管理,并供AR瀏覽器下載,本平臺采用IIS(internet information server)服務(wù)器作為AR服務(wù)器。AR瀏覽器用于對AR作品進行加載和解析,并呈現(xiàn)相應(yīng)的AR效果。
本平臺采用ARToolKit開發(fā)包來求解攝像機在真實場景中的姿態(tài)。ARToolKit是一個基于人工標(biāo)識的AR工具包,它擁有穩(wěn)定的圖像識別算法和圖像追蹤算法,并提供NFT(natural feature tracking)標(biāo)識和方形標(biāo)識的制作方法。因此,用戶無需考慮跟蹤注冊技術(shù)的實現(xiàn)問題。
2.2.1 開發(fā)工具的整體設(shè)計
AR圖形化開發(fā)工具按照功能的不同劃分為標(biāo)識制作模塊、模型處理模塊、系統(tǒng)配置模塊和調(diào)試模塊共4大模塊。標(biāo)識制作模塊負責(zé)標(biāo)識文件的生成,該模塊內(nèi)置ARToolKit工具包所提供的標(biāo)識制作工具;模型處理模塊負責(zé)獲取模型的原始姿態(tài)、大小和動畫等信息,將所獲取的信息保存在XML文件中。所有的模型或動畫都需要經(jīng)過Unity3D工具打包成.unity3d格式,再導(dǎo)入開發(fā)工具中;系統(tǒng)配置模塊為整個系統(tǒng)的核心,采用了基于路由圖的復(fù)雜交互邏輯表達方法來完成AR系統(tǒng)的設(shè)計,而路由圖最終被編譯成XML配置文件。調(diào)試模塊實質(zhì)為AR瀏覽器內(nèi)置于該模塊中,用于解析XML配置文件并呈現(xiàn)AR系統(tǒng)的設(shè)計效果。本開發(fā)工具的工作流程如圖4所示。
圖4 AR圖形化開發(fā)工具的工作流程
2.2.2 開發(fā)工具交互界面的設(shè)計
本開發(fā)工具的用戶為非程序開發(fā)人員。為了達到易學(xué)易用的目的,采用了類似于畫樹狀圖的圖形化交互式開發(fā)AR系統(tǒng)。開發(fā)人員將各種圖元模塊按照邏輯順序連接在一起組成AR路由圖就可完成AR系統(tǒng)的配置。針對上述特點,開發(fā)工具的界面設(shè)計成由5個窗體組成的交互界面,其中一個窗體作為父窗體,用于放置菜單欄和其它4個子窗體,如圖5所示。
圖5 開發(fā)工具的交互界面
圖5的窗體1為工具箱,用于陳列各類圖元模塊。其中每個圖元模塊都為一個獨立的對象,代表著AR系統(tǒng)相關(guān)的功能。窗體2為圖形編輯器,用于繪制路由圖,繪圖過程就是AR系統(tǒng)內(nèi)容的創(chuàng)作過程。窗體3為屬性編輯器,用于設(shè)置圖元模塊參數(shù)。窗體4為信息輸出框,實時顯示AR系統(tǒng)的配置信息。該開發(fā)工具為Microsoft Visual Studio工具開發(fā)的C# Winform窗體應(yīng)用程序,采用WeifenLuo.WinFormsUI.Docking技術(shù)來實現(xiàn)界面的布局,窗體之間的數(shù)據(jù)傳遞采用靜態(tài)變量和委托來實現(xiàn)。4個子窗體的實現(xiàn)如下:
(1)工具箱:工具箱中的圖元模塊是由AR系統(tǒng)某個功能抽象而成。由于圖元模塊的4種基本類型各有多種類別,可再細分成不同種類,見表1。采用Winform窗體的TreeView控件來陳列各類圖元模塊,其中將基本類型作為TreeView控件中父節(jié)點。
表1 工具箱的圖元模塊類別
每個圖元模塊的數(shù)據(jù)結(jié)構(gòu)都包括:數(shù)據(jù)信息、位置信息和類型信息,如圖6所示單個圖元模塊的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)信息記錄模塊的id號、模塊類型、圖片索引值等信息。位置信息記錄模塊對應(yīng)圖片的坐標(biāo)信息。而類型信息與圖元模塊的類型有關(guān),如類型為模型的圖元模塊,其類型信息為模型的縮放、位置等。
圖6 單個模塊的數(shù)據(jù)結(jié)構(gòu)
(2)圖形編輯器:編輯器的任務(wù)是繪制由工具箱拖出來的圖元模塊,以及將不同類型的圖元模塊按邏輯順序連接起來形成路由圖。在該編輯器上添加自定義的畫布控件,該控件的大小能適應(yīng)窗體的變化,并利用C#的GDI+所提供的函數(shù)在該畫布上繪制圖元和連線。由工具箱拖動到編輯器上的圖元模塊,都存放在一個List集合里。兩圖元模塊進行連線時,都需要檢查兩圖元模塊的類型是否符合基于路由圖的復(fù)雜交互邏輯表達方法所規(guī)定的組合方式,若不滿足則將信息反饋給用戶。由于圖元模塊的拖放順序和模塊間的連線順序是任意的,為了便于路由圖的解析,圖元模塊之間的關(guān)系用DataTable表來記錄,記錄方式見表2。該表為圖1路由圖的關(guān)系記錄表,其中表的每一行只記錄兩個連接在一起的圖元模塊名稱。
表2 圖元模塊間的關(guān)系記錄
路由圖中的圖元模塊都具備移動、修改和刪除等操作,而實現(xiàn)這些操作的關(guān)鍵是找出鼠標(biāo)指針?biāo)傅膱D元模塊。查找方式通過判斷鼠標(biāo)的坐標(biāo)(x,y)與圖元模塊的位置信息(u,v)是否滿足式(1)來確定
(1)
式中:dwidth、dhigh分別為圖元模塊對應(yīng)圖片的高度和寬度。逐個比較存放在List集合中的圖元模塊的位置信息和鼠標(biāo)的坐標(biāo)信息,當(dāng)滿足式(1)時,則說明該圖元就是所要找的圖元模塊。
(3)屬性編輯器:用于修改圖形編輯器上的圖元模塊的類型信息和部分數(shù)據(jù)信息。該編輯器根據(jù)要修改圖元模塊的類型信息和數(shù)據(jù)信息動態(tài)生成相應(yīng)的C#的Winform窗體控件,如TextBox文本框、ComboBox復(fù)選框、Label標(biāo)簽等。
(4)信息輸出框:用于顯示AR系統(tǒng)的配置情況,起輔助開發(fā)的作用,也是系統(tǒng)配置文件生成的依據(jù)。根據(jù)關(guān)系記錄表的數(shù)據(jù),用C#的DataGridView控件將路由圖的所有合理分支給單獨羅列出來。輸出框只羅列兩種分支:①標(biāo)識→模型;②標(biāo)識→模型→事件→行為。其它類型分支或單獨一個圖元模塊均屬于不合理分支而不予羅列。如根據(jù)表2中記錄,可羅列出根節(jié)點為I1的分支有:①I1→M1;②I1→M2→E1→B1;③I1→M2→E1→B2。
2.2.3 系統(tǒng)配置文件的生成
本系統(tǒng)使用XML文件作為配置文件,因為XML文檔具有獨特的自描述性,且自結(jié)構(gòu)化,既能自定義節(jié)點信息,又能很好地對應(yīng)路由圖的邏輯信息[13]。根據(jù)信息輸出框的所記錄的AR系統(tǒng)配置信息,從List集合獲取相應(yīng)圖元模塊的數(shù)據(jù)并生成XML配置文件,文件的生成格式如圖7所示,該圖也為圖1路由圖的配置代碼片段。XML配置文件分成兩部分:①標(biāo)識-模型;②事件-行為。這是為了便于AR瀏覽器對配置文件的解析。
圖7 系統(tǒng)XML配置文件
AR瀏覽器是負責(zé)解析開發(fā)工具所生成的AR作品并呈現(xiàn)相應(yīng)的AR效果的應(yīng)用軟件,它可運行于Windows、Android和IOS等操作系統(tǒng)的設(shè)備。對于不同操作系統(tǒng)的設(shè)備,AR瀏覽器的交互方式也有所不同。如在Android平臺上,AR瀏覽器沒有鼠標(biāo)、鍵盤和Kinect等交互方式。AR瀏覽器采用了C/S架構(gòu),并借助于Unity3D工具開發(fā)而成,以解決應(yīng)用軟件的模型渲染、交互、跨平臺等問題。根據(jù)AR瀏覽器的工作流程,該瀏覽器可化劃分成圖像采集模塊、跟蹤注冊模塊、虛實融合模塊、交互模塊、虛擬信息處理模塊、以及音頻模塊和顯示模塊,如圖8所示。
圖8 AR瀏覽器的工作流程
圖像采集模塊負責(zé)真實場景的視頻采集,獲取場景中的標(biāo)識信息;跟蹤注冊模塊負責(zé)計算出攝像頭在真實場景中的姿態(tài),該模塊借助于ARToolKit的函數(shù)完成;虛實融合模塊負責(zé)將虛擬信息與真實場景的信息進行配準(zhǔn),并將配準(zhǔn)后的虛擬信息疊加到視頻幀上;交互模塊負責(zé)用戶與系統(tǒng)的交互處理,實時檢測用戶是否按下鍵盤、鼠標(biāo)、點擊屏幕等操作,以發(fā)出相應(yīng)的行為指令;虛擬信息處理模塊負責(zé)虛擬信息的生成,該模塊根據(jù)交互模塊發(fā)出的指令添加或刪除相應(yīng)的虛擬物體;音頻模塊的作用是根據(jù)交互模塊發(fā)出的指令播放相應(yīng)的音樂;顯示模塊負責(zé)將虛實融合后的信息呈現(xiàn)給用戶。
另外AR瀏覽器在開始運行時,首先根據(jù)XML配置文件的配置信息完成對跟蹤注冊模塊和交互模塊的初始化。跟蹤注冊模塊初始化主要是將標(biāo)識的類別、名稱、標(biāo)識文件的數(shù)據(jù)和標(biāo)識所對應(yīng)的模型數(shù)據(jù)保存到內(nèi)存中。而交互模塊的初始化是根據(jù)XML配置文件中的EventConfig節(jié)點數(shù)據(jù)動態(tài)添加相應(yīng)的交互方法,如根據(jù)圖7中的Event_Button事件節(jié)點信息,在Unity3D的OnGUI()函數(shù)中添加GUI.Button()方法。接著根據(jù)行為節(jié)點信息,在該方法中添加用于發(fā)出相應(yīng)指令的行為方法。
針對機械領(lǐng)域的設(shè)備裝配圖紙比較復(fù)雜、不夠直觀,工程師很難看懂的問題。作者以二級圓錐圓柱齒輪減速器裝配為例,利用本平臺開發(fā)了一款運行于Android設(shè)備上的AR系統(tǒng)。該系統(tǒng)可讓工程師用手機掃描圖紙就可看到減速器的模型,點擊該模型可看到減速器的爆炸圖。該系統(tǒng)還具有查看某些零件的裝配動畫和播放零件裝配的技術(shù)要求音樂等功能。
首先,將減速器的模型文件和音頻文件導(dǎo)入到平臺的開發(fā)工具中。接著將減速器的裝配圖紙上傳到開發(fā)工具的標(biāo)識制作模塊并制作成NFT標(biāo)識。接著根據(jù)用戶需求設(shè)計AR系統(tǒng)的內(nèi)容,即配置AR路由圖,配置過程如下:①將NFT標(biāo)識圖元拖動到編輯界面作為路由圖的根節(jié)點,并設(shè)置該圖元的標(biāo)識屬性。②拖出兩個模型圖元,一個是裝配好的減速器模型A,另一個是帶裝配動畫的減速器模型B,并設(shè)置好它們在真實場景中的姿態(tài)。③拖出7個按鈕圖元,其中4個用于控制模型A的移動和旋轉(zhuǎn),另外3個控制模型B裝配動畫的播放。再拖出碰撞圖元控制模型A和模型B的顯示與隱藏。④為事件圖元添加行為圖元,如為控制模型B裝配動畫播放的按鈕圖元添加動畫、音樂和標(biāo)題等行為圖元,具體配置如圖9所示。⑤對所配置的內(nèi)容進行調(diào)試,調(diào)試無誤后生成AR作品并上傳至AR服務(wù)器。
圖9 AR系統(tǒng)的路由配置
最后,打開安裝在Android手機上的AR瀏覽器,從AR服務(wù)下載剛上傳的AR作品。下載完成后AR瀏覽器會自動完成初始化并打開手機的攝像頭,將攝像頭對準(zhǔn)減速器的裝配圖紙,手機屏幕會顯示減速器的三維模型,如圖10(a)所示,可以對三維模型進行移動、旋轉(zhuǎn)等操作。點擊屏幕上的虛擬按鈕,將播放減速器的三維裝配動畫和介紹音樂,如10(b)所示。而圖10(c)為兩種標(biāo)識下的場景,顯示的是減速器的部分零件模型。
圖10 AR瀏覽器的AR效果
由該實例可以看出本平臺可讓設(shè)計人員在不掌握AR的相關(guān)技術(shù)和編寫代碼情況也能高效快速地完成AR系統(tǒng)的開發(fā),開發(fā)過程靈活簡單,具有一定的應(yīng)用價值。為了進一步體現(xiàn)本可視化開發(fā)平臺的優(yōu)點,使用本平臺開發(fā)AR系統(tǒng)與傳統(tǒng)的文本編程方式開發(fā)AR系統(tǒng)作比較,見表3。以及使用本平臺和其它創(chuàng)作工具作對比,見表4。
表3 AR系統(tǒng)開發(fā)對比
表4 AR系統(tǒng)創(chuàng)作工具對比
本文提出了一種基于路由圖的交互邏輯表達方法,該方法可讓用戶快速地制作出復(fù)雜多樣的AR內(nèi)容。本平臺采用了圖元模塊與連線的鼠標(biāo)操作編輯方式來開發(fā)AR系統(tǒng),避免了傳統(tǒng)的文本編程方式易產(chǎn)生語法、邏輯等錯誤的問題,降低了AR系統(tǒng)開發(fā)的難度與時間。
綜上所述,本文提出了一種利用直觀的圖形化交互方式來開發(fā)AR系統(tǒng)的可視化創(chuàng)作平臺,該平臺可讓非程序員在不掌握高深的AR開發(fā)技術(shù)的前提下也能高效快速地把自己的創(chuàng)意想法變成AR作品,具有較好的應(yīng)用價值。