李君
鄭州旅游職業(yè)學(xué)院 河南 鄭州 451464
對于計算機(jī)編程教學(xué)而言,最重要的是就是動手實(shí)踐。利用AR技術(shù)進(jìn)行計算機(jī)編程教學(xué)系統(tǒng)的設(shè)計,可以增強(qiáng)實(shí)踐教學(xué),從而幫助學(xué)生熟悉計算機(jī)編程相關(guān)知識。下文,筆者將以AR技術(shù)的計算機(jī)編程教學(xué)系統(tǒng)設(shè)計為文章主題,就如何應(yīng)用AR技術(shù)進(jìn)行系統(tǒng)設(shè)計進(jìn)行詳細(xì)的討論。
增強(qiáng)現(xiàn)實(shí)(augmented reality, AR)技術(shù)是在虛擬現(xiàn)實(shí)(virtual reality ,VR )技術(shù)的基礎(chǔ)上產(chǎn)生的,AR技術(shù)對于真實(shí)環(huán)境中的信息進(jìn)行三維注冊,將計算機(jī)生成的虛擬信息疊加應(yīng)用到真實(shí)世界,利用傳感技術(shù)和顯示設(shè)備將虛擬信息和真實(shí)世界統(tǒng)一在一個畫面或空間內(nèi),從而實(shí)現(xiàn)對現(xiàn)實(shí)世界的增強(qiáng),達(dá)到超越現(xiàn)實(shí)的感官體驗(yàn)。隨著虛擬現(xiàn)實(shí)技術(shù)和增強(qiáng)現(xiàn)實(shí)技術(shù)的發(fā)展,各大領(lǐng)域都開始立足于該技術(shù)進(jìn)行相關(guān)工作的改革,教學(xué)領(lǐng)域也不例外。隨著科學(xué)技術(shù)的不斷發(fā)展,VR / AR技術(shù)開始被不斷應(yīng)用,市場的需求正在推動AR產(chǎn)業(yè)不斷發(fā)展。基于AR技術(shù)對計算機(jī)編程教學(xué)系統(tǒng)進(jìn)行設(shè)計,已經(jīng)成為計算機(jī)編程教學(xué)的必然發(fā)展趨勢[1]。
計算機(jī)編程教學(xué)系統(tǒng)的總體設(shè)計為,首先需要開設(shè)一個信息輸入模塊,顯而易見,信息輸入模塊的作用是用于采集一些信息。信息輸入模塊主要獲取兩部分信息,第一采集客戶端在系統(tǒng)中輸入的需求信息,第二則是通過標(biāo)志物特征點(diǎn)信息的處理與匹配,獲取服務(wù)器端虛擬模型信息。除了信息輸入模塊,還要在系統(tǒng)中開發(fā)融合顯示模塊,融合顯示模塊需要信息輸入模塊為之提供服務(wù),即融合顯示模塊根據(jù)信息輸入模塊捕獲的信息,實(shí)時跟蹤注冊虛擬信息在真實(shí)世界的位置,然后進(jìn)行真實(shí)信息與虛擬信息的疊加融合顯示。
在開發(fā)融合顯示模塊時,首先通過三維建模軟件Solidworks進(jìn)行所需要展示框架的建模工作。在建模時應(yīng)該注意,Unity3D只能識別模型格式為.fbx的模型文件,因此在進(jìn)行識別時,需將其他格式的模型文件通過格式轉(zhuǎn)換軟件轉(zhuǎn)換為.fbx格式的模型文件才能繼續(xù)進(jìn)行融合模塊的開發(fā)。模式轉(zhuǎn)換完畢之后,將所需的模型文件導(dǎo)入Unity 3D中。然后將Imagetarget 包導(dǎo)入Unity 3D 中并粘貼License Key。將.fbx模型文件放置在相應(yīng)的Image target下,調(diào)整大小及位置等模型文件參數(shù)。最后進(jìn)行相應(yīng)設(shè)置并打包發(fā)布。在計算機(jī)編程系統(tǒng)中,還要添加最核心的人機(jī)交互模塊。在人機(jī)交互模塊中,用戶可以通過計算機(jī)的用戶界面進(jìn)行操作,與教學(xué)輔助系統(tǒng)進(jìn)行連接等。人機(jī)交互是該系統(tǒng)的核心,是開展教學(xué)的重要接口。也是用戶使用該系統(tǒng)的入口。由于是教學(xué)系統(tǒng),因此還可以增設(shè)教師模塊和學(xué)生模塊,提高用戶體驗(yàn)。開發(fā)教師模塊時,應(yīng)該開設(shè)教師進(jìn)行計算機(jī)編程教學(xué)所需的各種功能。
該系統(tǒng)可以運(yùn)用一些主流的語言進(jìn)行開發(fā)。比如應(yīng)用最廣泛的Java,其作為跨平臺的語言,可以運(yùn)行在Windows和Unix/Linux下面,是計算機(jī)編程教學(xué)系統(tǒng)設(shè)計的首選語言。還可以應(yīng)用C或者C++等效率比較高的語言。除了語言,還要根據(jù)實(shí)際情況進(jìn)行開發(fā)環(huán)境、軟件開發(fā)數(shù)據(jù)包的選擇。
通常,移動增強(qiáng)現(xiàn)實(shí)技術(shù)主要由離線處理和在線處理兩大部分組成。離線處理主要是由Uni- ty3D來完成,其包括建立虛擬三維模型、生成三維場景以及標(biāo)志物的選取和預(yù)處理。在線處理部分主要由VuforiaSDK完成 ,包括信息的識別和實(shí)時生成反饋信息,在真實(shí)場景中疊加虛擬對象,實(shí)現(xiàn)人機(jī)交互。在系統(tǒng)設(shè)計時要根據(jù)開發(fā)環(huán)境選擇需要的Unity 3D,并安裝Unity。然后下載Easy AR SDK并新建一個工程項(xiàng)目。把Easy AR SDK導(dǎo)入Unity3D工程。配置License Key。導(dǎo)入模型資源,編譯工程,最終導(dǎo)入到手機(jī),啟動App進(jìn)行測試。并配置對平面圖像進(jìn)行實(shí)時識別與跟蹤、從標(biāo)準(zhǔn)圖像動態(tài)生成跟蹤目標(biāo)[2]。
計算機(jī)編程增強(qiáng)現(xiàn)實(shí)技術(shù)的設(shè)計方案包括服務(wù)器端程序,手持智能設(shè)備App。
2.3.1 服務(wù)器端程序。首先要建立一個數(shù)據(jù)庫模型,并通過圖像特征值查詢對應(yīng)的各項(xiàng)數(shù)據(jù),再根據(jù)不同的存儲位置使用不同的程序去讀取,然后通過網(wǎng)絡(luò)協(xié)議返回數(shù)據(jù)給調(diào)用的接口的App端,部分頻繁使用的數(shù)據(jù),要使用服務(wù)器軟件解決緩存問題。
2.3.2 手持智能設(shè)備的App程序。在設(shè)計時,應(yīng)該實(shí)現(xiàn)先對書籍進(jìn)行拍攝然后讀取書籍的圖像,對圖像進(jìn)行變換得到特征值,再調(diào)用本地緩存模塊,查詢是否有緩存,如果有則進(jìn)行讀取。如果沒有,調(diào)用服務(wù)器端接口,通過特征值查詢數(shù)據(jù)。然后根據(jù)返回的數(shù)據(jù)類型不同,分別進(jìn)行顯示。
2.4.1 配置識別圖。在進(jìn)行系統(tǒng)設(shè)計時,首先準(zhǔn)備一張需要識別的圖片,圖片的格式需要進(jìn)行標(biāo)準(zhǔn)化處理,以便于圖片的識別、讀取更加準(zhǔn)確。在進(jìn)行圖片識別時,可以使用for循環(huán)的案例代碼來識別,首先對將要被識別的圖進(jìn)行命名,命名完成后將需要識別的圖片添加到面板中去,然后對ImageTarget組件上的“ImageTargetBehavior”腳本進(jìn)行編輯,該腳本的功能主要是捕捉到識別圖片時控制for循環(huán)運(yùn)行變量的顯示與消失,腳本編輯結(jié)束以后,應(yīng)該按照需求填寫信息,比如識別圖片的信息、識別圖片的路徑、識別圖片的大小。對于識別圖片路徑的配置,通常采用的有兩種方法,一種是可以直接填寫識別圖名并自動填寫后綴,另一種則是填寫Json。接著要在Imagetarget組件下面創(chuàng)建需要的AR模型。用戶在File中選擇Build Setting,之后再點(diǎn)擊Player Setting,選擇對應(yīng)的platform[3]。
系統(tǒng)設(shè)計的總體流程主要包含三個 步驟:創(chuàng)建云端數(shù)據(jù)庫、目標(biāo)管理、Vuforia的集成與發(fā)布。
在上述過程中,筆者已經(jīng)提及,由于Android 平臺下的應(yīng)用開發(fā)是基于Java語言,因此,在設(shè)計系統(tǒng)時,首先要做的是進(jìn)行JDK(Java development kit)的下載與安裝。除此之外,由于該系統(tǒng)主要運(yùn)行平臺為Android平臺,所以,需在此基礎(chǔ)上再進(jìn)行AndoidSDK的下載與安裝。開發(fā)平臺搭建是系統(tǒng)設(shè)計的重要基礎(chǔ),工作人員要根據(jù)實(shí)際的系統(tǒng)需求對開發(fā)環(huán)境、開發(fā)工具包等進(jìn)行選擇。
2.4.2 旋轉(zhuǎn)、縮放和剖視功能的實(shí)現(xiàn)。旋轉(zhuǎn)功能在手機(jī)端通過滑動觸摸屏實(shí)現(xiàn),而縮放功能通過兩指點(diǎn)擊滑動實(shí)現(xiàn),剖視功能則通過點(diǎn)擊剖視按鈕實(shí)現(xiàn)。旋轉(zhuǎn)、縮放都要通過Unity 3D 腳本控制相應(yīng)組件實(shí)現(xiàn),腳本編輯語言可為Javascript或C/C++,由于當(dāng)前c++的應(yīng)用范圍更加廣泛,所以更建議使用C++這門語言。旋轉(zhuǎn)功能通過Rotate()函數(shù)就可以實(shí)現(xiàn),而縮放功能通過localScale()函數(shù)實(shí)現(xiàn)。
由于無法在Unity 3D中直接進(jìn)行剖視顯示,因此在系統(tǒng)開發(fā)中需通過建立另一并列獨(dú)立剖視三維模型的方式,設(shè)置按鈕組件激活狀態(tài)的“tme/false”進(jìn)行整體模型與剖視模型的轉(zhuǎn)換。剖視實(shí)現(xiàn)的關(guān)鍵腳本代碼要以剖視的效果為依據(jù)不斷進(jìn)行調(diào)試[4]。
綜上所述,AR技術(shù)的計算機(jī)編程教學(xué)系統(tǒng)設(shè)計是熱門教學(xué)科目的迫切工作需要,相關(guān)工作人員必須立足于實(shí)際需求等,基于AR技術(shù)對計算機(jī)編程教學(xué)系統(tǒng)進(jìn)行設(shè)計,以期將增強(qiáng)現(xiàn)實(shí)技術(shù)與計算機(jī)編程學(xué)習(xí)相結(jié)合,取得良好的計算機(jī)編程教學(xué)成果。