彭佳漢,李剛毅,秦天文,馮佳玉,韓書垚,張亦馳,賴曉晨
(大連理工大學(xué)軟件學(xué)院,大連 116000)
隨著我國(guó)信息技術(shù)的不斷發(fā)展,軟件已經(jīng)開始滲透到了教育領(lǐng)域當(dāng)中,成為了提升學(xué)校教學(xué)能力的強(qiáng)大支持。教育部文件《教師教育振興行動(dòng)計(jì)劃(2018-2022 年)》中指出,教育要實(shí)施“互聯(lián)網(wǎng)+教師教育”創(chuàng)新行動(dòng),充分利用云計(jì)算、大數(shù)據(jù)、虛擬現(xiàn)實(shí)、人工智能等新技術(shù),推進(jìn)教師教育信息化教學(xué)服務(wù)平臺(tái)建設(shè)和應(yīng)用。眾所周知,化學(xué)是非常重要的一門學(xué)科,而在我們的國(guó)內(nèi)校園中,受到各種條件制約,使得學(xué)生們無(wú)法嘗試大多數(shù)的實(shí)驗(yàn),因此,如今迫切需要使用信息化手段來(lái)幫助解決這個(gè)問(wèn)題。
仿真化學(xué)實(shí)驗(yàn)教學(xué)是一種新型的教學(xué)媒體和現(xiàn)代化的教學(xué)手段,具有容量大、速度快以及圖文并茂、聲色俱全、生動(dòng)形象等特點(diǎn),因而可以擴(kuò)展實(shí)驗(yàn)類型,拓寬學(xué)生事業(yè),彌補(bǔ)課內(nèi)常規(guī)實(shí)驗(yàn)的不足[1]。
目前,國(guó)內(nèi)市場(chǎng)推出了許多仿真化學(xué)實(shí)驗(yàn)軟件,目前的軟件面臨著以下的現(xiàn)狀:
現(xiàn)在網(wǎng)上的許多應(yīng)用都是以教材知識(shí)和基礎(chǔ)操作為中心,大多數(shù)都是以演示實(shí)驗(yàn)為主,很少有讓用戶自己操作的機(jī)會(huì);界面和儀器一般都較為生硬,使得用戶在使用時(shí)有很強(qiáng)的距離感,無(wú)法體驗(yàn)到自己動(dòng)手做實(shí)驗(yàn)的感覺(jué)。
本文將介紹基于ARCore 的中學(xué)實(shí)驗(yàn)平臺(tái)軟件,軟件提供了大量以動(dòng)手做為主的實(shí)驗(yàn)素材,基于Google的ARCore 技術(shù),用戶拿起手機(jī)進(jìn)行操作,感覺(jué)實(shí)驗(yàn)就仿佛發(fā)生在自己面前,帶來(lái)了良好的學(xué)習(xí)體驗(yàn),更激發(fā)了用戶對(duì)化學(xué)實(shí)驗(yàn)的好奇心,加深了對(duì)化學(xué)知識(shí)的理解,為化學(xué)課程的教學(xué)信息化帶來(lái)巨大的助力。
本項(xiàng)目主要由3 個(gè)功能構(gòu)成,功能分別為“實(shí)驗(yàn)展示”功能、“動(dòng)手做試驗(yàn)”功能和“老師指導(dǎo)”功能。項(xiàng)目系統(tǒng)結(jié)構(gòu)圖如圖1 所示。
“實(shí)驗(yàn)展示”功能根據(jù)教育部《普通高中化學(xué)課程標(biāo)準(zhǔn)》所要求掌握的實(shí)驗(yàn),包括二氧化硫和濃硫酸的性質(zhì)實(shí)驗(yàn)、氫氧化鋁的兩性實(shí)驗(yàn)、氨及銨鹽的性質(zhì)實(shí)驗(yàn)和葡萄糖與新制氫氧化銅懸濁液實(shí)驗(yàn)等,設(shè)計(jì)出預(yù)計(jì)設(shè)置22 種相應(yīng)的實(shí)驗(yàn)?zāi)P汀W(xué)生在完成書本內(nèi)容的學(xué)習(xí)后,通過(guò)掃描書本上的實(shí)驗(yàn)圖片,在手機(jī)上觀看立體的實(shí)驗(yàn)。學(xué)生不僅僅可以看到具體的實(shí)驗(yàn)流程,更可以通過(guò)自身移動(dòng)多角度地、全方面地觀察實(shí)驗(yàn)現(xiàn)象,同時(shí),在實(shí)驗(yàn)的關(guān)鍵點(diǎn)還會(huì)用箭頭和文字進(jìn)行標(biāo)注提醒,實(shí)現(xiàn)二維的知識(shí)與三維的立體圖像結(jié)合,以便學(xué)生更好地掌握實(shí)驗(yàn)流程、實(shí)驗(yàn)現(xiàn)象以及實(shí)驗(yàn)中的關(guān)鍵點(diǎn)。
通過(guò)“實(shí)驗(yàn)展示”功能,一方面學(xué)生不用在實(shí)驗(yàn)室接觸危險(xiǎn)的化學(xué)藥品即可多角度、全方位地觀察實(shí)驗(yàn),另一方面二維與三維的結(jié)合使得學(xué)習(xí)更加有趣,使得學(xué)生對(duì)實(shí)驗(yàn)現(xiàn)象的記憶更加深刻。
這里我們把每個(gè)實(shí)驗(yàn)都做成一個(gè)預(yù)制體,因?yàn)锳R技術(shù)需要與環(huán)境相適應(yīng),所以實(shí)驗(yàn)中的流程都是實(shí)時(shí)進(jìn)行的,保證了實(shí)驗(yàn)制作的獨(dú)立性,增強(qiáng)了軟件的擴(kuò)展性。
圖1 系統(tǒng)結(jié)構(gòu)圖
“動(dòng)手做試驗(yàn)”根據(jù)中學(xué)實(shí)驗(yàn)要求,設(shè)計(jì)出中學(xué)化學(xué)實(shí)驗(yàn)所常使用到的13 種儀器,包括試管、燒杯、燒瓶、錐形瓶、集氣瓶等和中學(xué)化學(xué)實(shí)驗(yàn)所常使用到的38種化學(xué)試劑,包括乙酸乙酯、氫氧化銅、乙醇、碳酸鈉和碳酸氫鈉等。學(xué)生通過(guò)對(duì)書上實(shí)驗(yàn)圖片進(jìn)行掃描后,選擇“動(dòng)手做試驗(yàn)”。隨后,手機(jī)上加載出實(shí)驗(yàn)所需的儀器和化學(xué)試劑的模型,學(xué)生通過(guò)拖拽等方式可完成儀器的拼接、化學(xué)試劑的添加和在相應(yīng)關(guān)鍵處添加標(biāo)注等功能,在儀器拼接以及試劑添加完成后,即可觀察實(shí)驗(yàn)現(xiàn)象。
這里將單獨(dú)的化學(xué)實(shí)驗(yàn)按照時(shí)間順序分成多個(gè)階段,每個(gè)階段都有其對(duì)應(yīng)的操作,學(xué)生需按步驟進(jìn)行實(shí)驗(yàn),即完成第一階段的操作才可進(jìn)入下一階段,以此類推,整體上按時(shí)間循序漸進(jìn),幫助學(xué)生理解整個(gè)實(shí)驗(yàn)流程。
“老師指導(dǎo)”功能基于“實(shí)驗(yàn)展示”和“動(dòng)手做試驗(yàn)”功能。在學(xué)生進(jìn)行“實(shí)驗(yàn)展示”和“動(dòng)手做試驗(yàn)”時(shí),教師可從另一個(gè)手機(jī)上實(shí)時(shí)觀看學(xué)生所進(jìn)行的操作,并且對(duì)實(shí)驗(yàn)中的重要點(diǎn)用箭頭和文字進(jìn)行標(biāo)注,學(xué)生可在自己的手機(jī)上看到老師的標(biāo)注信息,從而更好地理解實(shí)驗(yàn)原理和學(xué)習(xí)實(shí)驗(yàn)過(guò)程。
總的來(lái)講,該模塊支持跨設(shè)備觀看實(shí)驗(yàn)、跨設(shè)備標(biāo)注等一些聯(lián)網(wǎng)操作。這使得學(xué)生們?cè)谀軌蚪佑|新型化學(xué)實(shí)驗(yàn)的同時(shí),還可以得到教師的指導(dǎo),能夠更好地對(duì)化學(xué)實(shí)驗(yàn)進(jìn)行學(xué)習(xí)記憶。
“老師指導(dǎo)”模塊相當(dāng)于在前兩個(gè)模塊的基礎(chǔ)上增加聯(lián)網(wǎng)標(biāo)識(shí)等功能,從功能上來(lái)講,三個(gè)模塊相互聯(lián)系又相互獨(dú)立,第一個(gè)模塊注重實(shí)驗(yàn)的整體性和完整性,第二個(gè)模塊注重實(shí)驗(yàn)的邏輯性和步驟性,第三個(gè)模塊注重聯(lián)網(wǎng)和標(biāo)識(shí),方便開發(fā)者擴(kuò)展相應(yīng)功能。
(1)技術(shù)實(shí)現(xiàn)。平臺(tái)采用了Google 的先進(jìn)增強(qiáng)現(xiàn)實(shí)技術(shù)ARCore,主要使用其中的圖片增強(qiáng)功能部分,確保AR 成像與化學(xué)實(shí)驗(yàn)展示的穩(wěn)定性。ARCore 的運(yùn)動(dòng)跟蹤技術(shù)使用手機(jī)攝像頭標(biāo)識(shí)興趣點(diǎn)(稱為特征點(diǎn)),并跟蹤這些點(diǎn)隨著時(shí)間變化的移動(dòng)。將這些點(diǎn)的移動(dòng)與手機(jī)慣性傳感器的讀數(shù)組合,可以在手機(jī)移動(dòng)時(shí)確定手機(jī)的位置和屏幕方向。通過(guò)將渲染3D 內(nèi)容的虛擬攝像頭的姿態(tài)與ARCore 提供的設(shè)備攝像頭的姿態(tài)對(duì)齊,開發(fā)者能夠從正確的透視角度渲染虛擬內(nèi)容。渲染的虛擬圖像可以疊加到從設(shè)備攝像頭獲取的圖像上,讓虛擬內(nèi)容看起來(lái)就像現(xiàn)實(shí)世界的一部分一樣;本項(xiàng)目還采用Unity 物理引擎,使化學(xué)實(shí)驗(yàn)具有更逼真的物理和化學(xué)效果,同時(shí)優(yōu)化應(yīng)用所需的計(jì)算資源。
(2)關(guān)鍵點(diǎn)。關(guān)鍵點(diǎn)在于如何在手機(jī)有限的存儲(chǔ)、計(jì)算資源上更完美地展示化學(xué)實(shí)驗(yàn)。在化學(xué)儀器模型方面,我們平衡了化學(xué)儀器的模型、貼圖精度與性能,部分使軟件能夠在手機(jī)有限的計(jì)算資源上得到較好的顯示效果。
(3)難點(diǎn)。難點(diǎn)在于如何實(shí)現(xiàn)用戶之間的聯(lián)網(wǎng)功能,如何在松耦合方式下實(shí)現(xiàn)場(chǎng)景與預(yù)制體之間的通信與綁定。該部分需要考慮服務(wù)器的房間邏輯、掉線邏輯、中途加入邏輯、服務(wù)器資源回收利用、還需要保證較低的延遲等。我們采用游戲服務(wù)器,保證網(wǎng)絡(luò)連通的可靠性與低延遲,同時(shí)也便于處理房間邏輯;在松耦合問(wèn)題中,我們?cè)O(shè)置了共享存儲(chǔ)空間、利用多態(tài)方法動(dòng)態(tài)綁定通信函數(shù)與實(shí)驗(yàn)物體。從而解決這兩個(gè)難點(diǎn)。
各模塊中包含的具體操作流程基本一致,下面以實(shí)驗(yàn)展示模塊進(jìn)行展示。圖2 是選擇實(shí)驗(yàn)界面,圖3是正式操作界面。首先用戶選擇實(shí)驗(yàn),進(jìn)入實(shí)驗(yàn)后自動(dòng)播放該實(shí)驗(yàn)的操作步驟,期間會(huì)有標(biāo)簽提示注意事項(xiàng)等。用戶可以利用AR 技術(shù)全方位進(jìn)行觀看。
圖2
圖3
實(shí)現(xiàn)過(guò)程:在實(shí)驗(yàn)展示部分,首先我們利用計(jì)時(shí)器和Unity 的動(dòng)畫系統(tǒng),通過(guò)實(shí)例化、旋轉(zhuǎn)、平移、形變等效果實(shí)現(xiàn)單獨(dú)部件的實(shí)驗(yàn)操作,再通過(guò)全局的控制器統(tǒng)一調(diào)度每個(gè)部件相應(yīng)函數(shù)觸發(fā)的事件或邏輯關(guān)系,達(dá)到化學(xué)實(shí)驗(yàn)現(xiàn)象的效果。
難點(diǎn):動(dòng)手做實(shí)驗(yàn)部分的難點(diǎn)在于如何在二維的手機(jī)屏幕上操控3D 空間中的實(shí)驗(yàn)儀器。我們構(gòu)建了一個(gè)3D 的“T”字型實(shí)驗(yàn)操作平臺(tái),用戶只能控制實(shí)驗(yàn)儀器在此平臺(tái)上移動(dòng)。為了達(dá)到拖拽的目的,我們對(duì)實(shí)驗(yàn)儀器的圖層進(jìn)行區(qū)分。每一幀系統(tǒng)都會(huì)檢測(cè)用戶的操作。當(dāng)用戶在拖拽時(shí),攝像機(jī)根據(jù)屏幕的觸點(diǎn)發(fā)射一條射線,設(shè)置為僅能碰到化學(xué)儀器;在碰到化學(xué)儀器后,再發(fā)射一條僅能碰到實(shí)驗(yàn)平臺(tái)的射線,然后將該化學(xué)儀器挪動(dòng)至該實(shí)驗(yàn)平臺(tái)的觸點(diǎn)上。由于每一幀都會(huì)進(jìn)行此操作,化學(xué)儀器也就能隨著手指的滑動(dòng)變換自己再實(shí)驗(yàn)平臺(tái)上的位置。核心偽代碼如下:
實(shí)現(xiàn)過(guò)程:這一模塊采用游戲服務(wù)器MatchVS,將登錄服務(wù)器等過(guò)程隱式實(shí)現(xiàn),給用戶更流暢的體驗(yàn);程序通過(guò)MatchVS 的接口完成相應(yīng)的數(shù)據(jù)傳輸操作。在MatchVS 接口的基礎(chǔ)上,為了迎合項(xiàng)目需求,本項(xiàng)目額外增加的功能有:創(chuàng)建房間時(shí),用戶可以選擇要展示的實(shí)驗(yàn);在其他用戶加入房間時(shí),會(huì)給這位用戶發(fā)送當(dāng)前實(shí)驗(yàn)的ID 編號(hào),以達(dá)到實(shí)驗(yàn)同步的效果。且第一個(gè)進(jìn)入房間的人默認(rèn)為房主,擁有最高權(quán)限。
相應(yīng)的函數(shù)與邏輯順序關(guān)系如圖4,主要有登錄登出、加入退出房間、房間中通信等函數(shù)。且在其他人加入離開房間時(shí),服務(wù)器向房間內(nèi)其他用戶通報(bào)信息。
為了減少項(xiàng)目體量,壓縮安裝包大小,老師指導(dǎo)部分與項(xiàng)目展示、動(dòng)手做實(shí)驗(yàn)兩個(gè)模塊采用相同的預(yù)制體文件,達(dá)到模型、代碼復(fù)用的功能;聯(lián)網(wǎng)部分采用松耦合的設(shè)計(jì),將編寫的腳本掛載在能夠被交互的實(shí)驗(yàn)器材上即可,提供了良好的可拓展性,方便之后實(shí)驗(yàn)的拓展。
圖4
同時(shí),本項(xiàng)目支持?jǐn)帱c(diǎn)重連:若用戶在使用過(guò)程中網(wǎng)絡(luò)中斷或切換網(wǎng)絡(luò)環(huán)境,依然能夠順利返回之前的房間。
為了減少對(duì)網(wǎng)絡(luò)帶寬的需求,我們僅傳輸實(shí)驗(yàn)操作或系統(tǒng)變化對(duì)應(yīng)的字符串,將這些信息通過(guò)JSON 數(shù)據(jù)類型封裝,對(duì)應(yīng)操作的邏輯在客戶端進(jìn)行運(yùn)算渲染。偽代碼如下:
難點(diǎn):SDK 的信息的回調(diào)函數(shù)采用static 類型,無(wú)法通過(guò)函數(shù)調(diào)用、Unity 中的action 方法與掛載在物體上的腳本進(jìn)行調(diào)用。為了解決這一問(wèn)題,我們?cè)谌挚刂破髦性O(shè)置了一個(gè)全局的監(jiān)聽器與標(biāo)志位,在每一幀監(jiān)測(cè)是否接收到來(lái)自服務(wù)器的信號(hào)。如果接收到信號(hào),那么控制器就通過(guò)松耦合的方式調(diào)用對(duì)應(yīng)物體的方法。
下面是系統(tǒng)信息回調(diào)函數(shù)部分代碼,當(dāng)接收到網(wǎng)絡(luò)傳遞來(lái)的數(shù)據(jù)時(shí),函數(shù)更改全局變量與標(biāo)志位。偽代碼如下:
下面是控制器監(jiān)聽部分偽代碼,每一幀都會(huì)檢測(cè)是否更改。若更改,跳轉(zhuǎn)到處理函數(shù)中。
基于ARCore 的中學(xué)實(shí)驗(yàn)平臺(tái)提供了豐富的接口和實(shí)驗(yàn)資源,實(shí)現(xiàn)了高仿真效果的化學(xué)實(shí)驗(yàn)?zāi)M,可以滿足中學(xué)化學(xué)實(shí)驗(yàn)學(xué)習(xí)的需要,用戶可以在有限的教學(xué)資源下,安全的學(xué)習(xí)化學(xué)實(shí)驗(yàn)知識(shí),激發(fā)了用戶對(duì)化學(xué)學(xué)習(xí)的興趣,極大的推進(jìn)了中學(xué)化學(xué)課程的教學(xué)信息化。