孫俊輝,高 嶺,高全力,曹 瑞
1(西北大學(xué) 信息科學(xué)與技術(shù)學(xué)院,西安 710127)
2(西安工程大學(xué) 計算機科學(xué)學(xué)院,西安 710600)
信息時代下,各領(lǐng)域科學(xué)技術(shù)都處于迅猛發(fā)展進程中,虛擬現(xiàn)實也是其中之一.從1963年的萌芽階段至今,其不論在理論還是實踐上都有質(zhì)變,應(yīng)用領(lǐng)域也不再僅限于娛樂,而涉及教育、醫(yī)療等諸多方面[1,2].在該背景下,為彌補傳統(tǒng)教學(xué)的不足,國家開始將信息技術(shù)和教育進行融合.學(xué)生的學(xué)習方式正發(fā)生顛覆性的變化,在5G 的發(fā)展和如今疫情的影響下,虛擬教學(xué)的發(fā)展勢頭將更加明顯[3].
化學(xué)是以實驗為核心的重要基礎(chǔ)學(xué)科,但由于中學(xué)階段授課受實驗條件、安全隱患等限制,許多實驗難以達到理想效果,甚至無法進行.如不進行有效實驗,學(xué)生僅從書本中難以對復(fù)雜反應(yīng)有深刻理解,無法結(jié)合理論與實踐.但目前尚無功能成熟的虛擬化學(xué)課堂,已知系統(tǒng)中所實現(xiàn)功能大多單一、三維視覺效果差,缺乏權(quán)限控制策略及系統(tǒng)優(yōu)化.
本文基于以上背景構(gòu)建適用中學(xué)化學(xué)教學(xué)的虛擬課堂系統(tǒng),開發(fā)三維視覺效果良好的虛擬化學(xué)實驗,實現(xiàn)了采用權(quán)限策略的智能模塊,根據(jù)學(xué)生情況為其分配不同權(quán)限,提供自動文字視頻實驗提示.此外,通過Spring Cloud 框架拆分系統(tǒng)功能,將其部署于不同接口,使用Redis 緩存優(yōu)化系統(tǒng).
根據(jù)虛擬現(xiàn)實的技術(shù)特性、傳統(tǒng)課堂的教學(xué)特點及現(xiàn)有虛擬課堂的系統(tǒng)特點,將設(shè)計原則總結(jié)如下:
(1)構(gòu)建虛實結(jié)合的三維教學(xué)空間:構(gòu)造符合真實世界比例的虛擬場景,注重用戶體驗;將二維平面的抽象內(nèi)容以三維空間立體展示,提高教學(xué)趣味性[4–6].
(2)充分考慮學(xué)生用戶的群體特點:目標用戶對事物審美要求較高,為吸引其學(xué)習興趣,設(shè)計更符合其審美特點的用戶界面,讓其更好地獲得強沉浸感.
(3)最大化利用虛擬教學(xué)優(yōu)勢:傳統(tǒng)課堂中教師受時間限制不能充分指導(dǎo)每位學(xué)生,在虛擬教學(xué)中該問題應(yīng)得到充分解決;應(yīng)當針對現(xiàn)實中難以進行的實驗進行開發(fā),充分挖掘可教學(xué)內(nèi)容,豐富學(xué)生知識廣度.
(4)力求解決虛擬場景下的權(quán)限問題:同現(xiàn)實環(huán)境一樣,虛擬多人場景下的模型交互也存在競爭.因此應(yīng)提出一種應(yīng)用于虛擬多人場景下的權(quán)限策略,提供合理的權(quán)限處理方法.
(5)嚴格保證系統(tǒng)質(zhì)量:應(yīng)當對網(wǎng)絡(luò)和系統(tǒng)故障等情況進行預(yù)處理,設(shè)計服務(wù)熔斷策略,避免影響用戶體驗.不僅要保證系統(tǒng)當下的可靠性,同時要采用合理的技術(shù)架構(gòu)進行開發(fā),方便系統(tǒng)未來進行擴展.
進行系統(tǒng)功能開發(fā)前,需要針對傳統(tǒng)課堂教學(xué)的局限性及現(xiàn)有的虛擬化學(xué)課堂的不足進行分析并提出對應(yīng)解決方案,明確系統(tǒng)需求.
(1)傳統(tǒng)化學(xué)教學(xué)存在對實驗材料的條件限制,例如需要鈹鋰等稀有金屬參與的反應(yīng)在現(xiàn)實中難以進行.該問題在虛擬環(huán)境中不復(fù)存在,主要難點轉(zhuǎn)變?yōu)閷μ摂M場景中模型材料材質(zhì)的高度還原.
(2)由于傳統(tǒng)課堂的教學(xué)時間有限,教師無法指導(dǎo)全部問題學(xué)生.如果學(xué)生的問題無法及時解決,課后隨時間積累就將更加嚴重.針對該問題設(shè)計一種智能模塊,學(xué)生可觀看并重復(fù)點播教學(xué)視頻.
(3)傳統(tǒng)課堂中難以進行高危實驗,即使可以也必須嚴格遵循要求,在已知系統(tǒng)中也僅有進行正確操作的實驗.這種情況下,實驗錯誤進行的結(jié)果變得抽象,學(xué)生無法深入了解實驗.針對該問題,考慮開發(fā)以非標準手段進行的化學(xué)實驗,例如在硫酸稀釋實驗中增設(shè)將水倒入濃硫酸的錯誤對比實驗.
(4)現(xiàn)有虛擬化學(xué)課堂中的實驗數(shù)量少,且大部分都是現(xiàn)實中可輕易進行的實驗,沒有涉及現(xiàn)實中受材料限制和安全考慮而難以進行的實驗,嚴重局限虛擬現(xiàn)實的技術(shù)優(yōu)勢.針對該問題,設(shè)計開發(fā)多項現(xiàn)實中難以進行的化學(xué)實驗,尤其是具有強烈視覺效果的實驗,豐富課堂趣味性,提高學(xué)生沉浸感.
(5)現(xiàn)有虛擬課堂并未涉及權(quán)限問題,未充分考慮不同學(xué)生差異,無法做到針對性教學(xué).此外,虛擬多人環(huán)境下的角色和模型屬于不可剝奪資源,無法在同一時間節(jié)點共享.為此提出一種適用虛擬教學(xué)的權(quán)限策略,對現(xiàn)實用戶與虛擬權(quán)限進行邏輯分離,并對虛擬角色及權(quán)限類型進行細粒度劃分,借助事件監(jiān)聽機制,提供一種合理的動態(tài)權(quán)限控制方法.
(6)現(xiàn)有虛擬課堂缺乏優(yōu)化,伴隨項目商業(yè)化及用戶數(shù)量增加,數(shù)據(jù)庫冗余會越來越高.高并發(fā)情況下系統(tǒng)運行效率低,發(fā)生故障時難以提供正常服務(wù),嚴重影響用戶體驗.對此提出一套保證系統(tǒng)效率的服務(wù)端技術(shù)架構(gòu),使用Spring Cloud 進行開發(fā),將Redis 作為緩存,增強系統(tǒng)魯棒性,方便系統(tǒng)擴展.
根據(jù)上述設(shè)計原則及需求分析,設(shè)計如下功能:
(1)注冊登錄:用戶首先需要進行用戶注冊,注冊成功后系統(tǒng)會自動將其信息錄入后端數(shù)據(jù)庫中.登錄成功后,在登錄界面輸入用戶信息進行實驗選擇.
(2)角色控制:學(xué)生用戶在系統(tǒng)中通過鍵盤及鼠標等輸入設(shè)備對其對應(yīng)的虛擬角色進行控制,能夠移動、進行虛擬實驗以及觀看教學(xué)視頻等.
(3)虛擬實驗:虛擬角色可進行的實驗共包括4 項,分別為金屬置換反應(yīng)、火焰燃燒反應(yīng)、硫酸稀釋反應(yīng)及活潑金屬與水的反應(yīng).
(4)智能模塊:系統(tǒng)將根據(jù)權(quán)限策略為虛擬角色分配對應(yīng)的實驗權(quán)限,具有對應(yīng)權(quán)限的角色才能進行實驗,實現(xiàn)針對性教學(xué);進行虛擬實驗時,系統(tǒng)將自動為虛擬角色提供文字視頻等提示,幫助學(xué)生進行自主學(xué)習,在缺乏教師指導(dǎo)的情況下保證教學(xué)質(zhì)量.虛擬角色可以查詢對應(yīng)成績和排名,促進良性學(xué)習競爭.
圖1描述了本文所提出系統(tǒng)的結(jié)構(gòu),包括客戶端以及服務(wù)器端.客戶端負責實現(xiàn)虛擬場景下的功能,包括用戶管理模塊、虛擬實驗?zāi)K以及智能輔助模塊.服務(wù)器端負責處理系統(tǒng)運行時產(chǎn)生的數(shù)據(jù),包括用戶數(shù)據(jù)、虛擬角色數(shù)據(jù)以及虛擬權(quán)限的數(shù)據(jù).
圖1 系統(tǒng)整體結(jié)構(gòu)
首先搭建系統(tǒng)場景,采用三維建模軟件3dMAX構(gòu)建虛擬場景,導(dǎo)入模型貼圖后進行格式轉(zhuǎn)換,以FBX格式導(dǎo)出到Unity3D 引擎[7].其次進行客戶端開發(fā),完成數(shù)據(jù)庫設(shè)計,利用C#腳本進行組件化開發(fā),結(jié)合粒子系統(tǒng)和NGUI 插件開發(fā)GUI 界面和虛擬化學(xué)實驗[8–10];設(shè)計權(quán)限策略,并以此為基礎(chǔ)開發(fā)智能模塊.最后通過IDEA 進行服務(wù)器端開發(fā),利用Spring Cloud 框架拆分微服務(wù),利用Redis 緩存優(yōu)化系統(tǒng).
系統(tǒng)技術(shù)架構(gòu)如圖2所示.客戶端采用Unity3D開發(fā).表現(xiàn)層對控制模型材質(zhì)的Shader 進行渲染并以GUI 形式作為交互接口;業(yè)務(wù)層完成虛擬課堂的核心功能,包括用戶的注冊登錄、虛擬實驗及智能模塊.服務(wù)器端采用IDEA 開發(fā),客戶端通過HTTP 接口和服務(wù)器端進行數(shù)據(jù)交互,應(yīng)用權(quán)限策略.MySQL 存儲學(xué)生基本信息等持久數(shù)據(jù),Redis 存儲熱點數(shù)據(jù)作為緩存.
圖2 系統(tǒng)技術(shù)架構(gòu)
通過3dsMax 制作虛擬化學(xué)課堂所需的三維模型[11].構(gòu)建模型時,既要保證模型質(zhì)量,也要保證模型的頂點總數(shù)和三角切面總數(shù)不至過高,避免系統(tǒng)加載時占用大量內(nèi)存開銷,影響系統(tǒng)運行效率.制作實驗儀器等小模型時,提高模型精細程度;制作教室墻體等大模型時,降低模型精細程度.
模型構(gòu)建完成后,在其材質(zhì)貼圖屬性中添加貼圖,實現(xiàn)高仿真視覺效果.此外還需將虛擬場景與真實課堂保持1:1 比例,增強學(xué)生使用系統(tǒng)時的沉浸感.
系統(tǒng)運行后,首先加載如圖3所示的負責用戶注冊及登錄的主場景,該場景通過GUI 即圖形用戶界面實現(xiàn),用戶通過鼠標和其他輸入設(shè)備控制屏幕上的菜單和圖標,完成一系列交互活動.
圖3 系統(tǒng)登錄場景
GUI 包含面板、按鈕、輸入框等屬性,完成界面后添加C#腳本組件,使UI 可處理用戶輸入,用戶點擊登錄按鈕后,系統(tǒng)將根據(jù)用戶及密碼文本框的輸入信息判斷是否符合數(shù)據(jù)庫中已錄入的用戶信息,如符合則通過Invoke( )方法調(diào)用SceneManager.LoadScene( )系統(tǒng)API 觸發(fā)虛擬教室場景的加載并提示綠色的成功信息,否則清空用戶輸入并提示紅色的錯誤信息,處理用戶登錄的Login.cs 腳本的部分代碼如圖4所示.
圖4 處理用戶登錄的核心代碼
系統(tǒng)共包括4 項化學(xué)實驗,分別為金屬置換反應(yīng)、火焰燃燒反應(yīng)、硫酸稀釋反應(yīng)及活潑金屬與水反應(yīng).
金屬置換反應(yīng)UI 如圖5(a)所示,該反應(yīng)通過更新對液體顏色的渲染實現(xiàn).Unity 中每個對象都具有坐標、渲染器、腳本等組件,在對象的C#腳本中可以獲取其渲染器組件及具體負責渲染顏色的顏色組件,再通過調(diào)整該組件的RGB 屬性改變顏色.
圖5 虛擬化學(xué)實驗UI
為銅塊和液體分別添加碰撞器組件,并勾選觸發(fā)器屬性.當某游戲?qū)ο缶哂信鲎财鹘M件時,其可以和其它具有碰撞器組件的對象在場景中接觸,而觸發(fā)器則可以在對象發(fā)生相關(guān)碰撞事件時觸發(fā)指定邏輯.
通過Input.GetMouseButtonDown( )系統(tǒng)API 檢測用戶是否單擊鼠標左鍵,當檢測到該事件發(fā)生時,通過生成對象實例的方法在指定位置和角度觸發(fā)銅塊固體的生成事件,并通過NumberChange( ) 方法更新當前銅物質(zhì)量.之后調(diào)用ColorChange( )方法,當銅塊接觸液體時根據(jù)銅的數(shù)量決定液體顏色的改變程度,控制該反應(yīng)的Test1.cs 腳本的核心代碼如圖6所示.
圖6 處理金屬置換反應(yīng)的核心代碼
火焰燃燒反應(yīng)模擬了火焰在氮氣、空氣以及氧氣3 種氣體當中不同的燃燒效果,主要通過粒子系統(tǒng)實現(xiàn),粒子系統(tǒng)是一種計算機圖形學(xué)中模擬特定模糊現(xiàn)象的技術(shù),Unity3D 中的粒子系統(tǒng)是參數(shù)化的,通過調(diào)整參數(shù)值模擬不同效果,難點在于確認合適的仿真參數(shù),在測試中不斷調(diào)整參數(shù)值,最終確定具有高度仿真效果的參數(shù),該反應(yīng)的參數(shù)面板如圖7所示.運行時首先在腳本中獲得粒子系統(tǒng)組件,然后在Update( )方法中每幀更新粒子生命周期、尺寸、速度等屬性來渲染火焰燃燒的不同效果.火焰燃燒特效如圖5(b)所示.
圖7 火焰粒子特性的參數(shù)面板
硫酸稀釋反應(yīng)同樣通過粒子系統(tǒng)實現(xiàn),液體模型中的溫度計數(shù)值隨實驗實時更新并顯示,該功能通過自定義Shader 實現(xiàn),Shader 用于控制GPU 的圖形渲染.其中溫度計Shader 控制顏色變化的surf( )方法的具體代碼如圖8所示.除標準實驗外,開發(fā)非標準實驗作為對比實驗,通過粒子系統(tǒng)模擬硫酸濺射特效幫助學(xué)生對該實驗有更深刻的了解.硫酸稀釋對比實驗中,硫酸濺射特效如圖5(c)所示.
圖8 溫度計Shader 控制顏色變化的具體代碼
活潑金屬與水的化學(xué)實驗由于其巨大風險在現(xiàn)實中幾乎無法進行,尤其是越活潑的金屬反應(yīng)強度越劇烈.為充分挖掘教學(xué)內(nèi)容并通過強視覺沖擊的三維效果吸引學(xué)生學(xué)習興趣,選擇了金屬中最活潑的Cs 作為實驗材料,該金屬與水反應(yīng)時將產(chǎn)生極強的爆炸現(xiàn)象.該反應(yīng)仍通過粒子系統(tǒng)實現(xiàn),該實驗中的粒子系統(tǒng)用以模擬爆炸及煙霧效果,其爆炸特效如圖5(d)所示.
2.5.1 權(quán)限策略
由于虛擬現(xiàn)實在教育應(yīng)用的發(fā)展不夠完善,缺乏對交互的權(quán)限控制,本系統(tǒng)提出一種基于RBAC 的虛擬教學(xué)環(huán)境下的細粒度權(quán)限動態(tài)控制策略.該策略包括用戶、角色、模型、權(quán)限、事件5 大單元,其中對角色、模型以及權(quán)限單元進行了細粒度劃分.
角色單元,即虛擬場景中的角色,包括3 項信息:角色標識符、角色名稱、角色類型.不同層次間的角色類型不同,如學(xué)生和教師角色;相同層次也具有不同的角色類型,如普通學(xué)生和班長角色.
模型單元,即虛擬場景中的模型,包括4 項信息:模型標識符、模型權(quán)限、操作限制數(shù).
權(quán)限單元,指虛擬場景中角色及模型的權(quán)限,包括4 項信息:權(quán)限標識符、權(quán)限層級、權(quán)限內(nèi)容、權(quán)限約束.權(quán)限內(nèi)容劃分為角色管理、模型管理.權(quán)限約束包括數(shù)量、時間約束,分別限制權(quán)限最大被擁有角色數(shù)及權(quán)限最長分配時長,防止“教學(xué)饑餓”.
事件單元,采用事件監(jiān)聽機制,對虛擬場景下全部事件進行監(jiān)控,按照事件類型和處理原則處理.
為解決虛擬多人場景下虛擬模型所屬權(quán)的問題,提出以下原則:
(1)時間優(yōu)先原則,虛擬角色發(fā)起模型交互請求時,發(fā)起時間節(jié)點較早的角色優(yōu)先獲得模型交互權(quán).
(2)權(quán)限優(yōu)先原則,對模型交互具有不同權(quán)限的角色在同一時間節(jié)點(時間間隔小于1 ms)發(fā)起模型交互請求時,權(quán)限較高的角色優(yōu)先獲得模型交互權(quán).
(3)隨機分配原則,為避免具有相同權(quán)限的角色于同一時間節(jié)點發(fā)起模型交互請求的而導(dǎo)致系統(tǒng)故障,使用隨機生成數(shù)解決該問題.
為解決多人環(huán)境非實驗條件下進行獲取虛擬模型所屬權(quán)的問題,提出課堂進度原則:綜合學(xué)生角色的成績與課堂進度計算出權(quán)限優(yōu)先值T,T值最小的虛擬角色優(yōu)先獲得模型交互權(quán).其中學(xué)生角色s的權(quán)限優(yōu)先值Ts=(ps/p)wp+(gs/g)wg,ps為學(xué)生角色s的實時課堂進度,p為全體學(xué)生角色的平均實時課堂進度,gs為學(xué)生角色s的課程成績,g為全體學(xué)生角色的平均課程成績,wp為課堂進度對T的權(quán)重值,wg為成績對T的權(quán)重值,系統(tǒng)通過該原則確定所有虛擬角色的T值,對其升序排列入隊,依次出隊分配權(quán)限.
上述原則的具體實現(xiàn)依賴Unity3D 腳本Update( )方法每幀更新的特性,利用該特性實現(xiàn)事件監(jiān)聽機制,持續(xù)監(jiān)聽交互請求,當收到請求時通過HTTP 接口將請求數(shù)據(jù)交由服務(wù)器端進行處理,服務(wù)器端處理權(quán)限分配問題的核心代碼如圖9所示.
圖9 服務(wù)器權(quán)限策略代碼
2.5.2 智能提示
智能模塊除對學(xué)生角色進行權(quán)限控制外,還支持自主學(xué)習,學(xué)生可根據(jù)場景中智能提示觀看教學(xué)視頻.不但解決傳統(tǒng)教育模式中教師有限時間內(nèi)無法顧全所有學(xué)生的缺陷,又以虛擬現(xiàn)實這種新生技術(shù)豐富了教育趣味性,擴展了可教學(xué)內(nèi)容.
該功能主要通過C#腳本及NGUI 插件實現(xiàn).NGUI是C#編寫的Unity 插件,提供強大的UI 功能,開發(fā)時不用點擊Play 按鈕進入運行狀態(tài)就能即時查看結(jié)果.
利用NGUI為4 項化學(xué)實驗設(shè)置具體的提示UI,利用C#腳本指定文字提示觸發(fā)的具體時機.Unity 中每個對象都具有Transfrom 組件,該組件中包含了模型的坐標信息.系統(tǒng)運行時首先在控制文字提示腳本的Start( )方法中獲取虛擬角色與各實驗桌的坐標信息,再在Update( )方法中通過Vector3 向量API 計算兩者間的向量距離d,當d小于虛擬場景中指定距離時通過setActive( )方法激活提示組件,將UI 呈現(xiàn)給虛擬角色.
視頻提示通過按鍵手動實現(xiàn),系統(tǒng)支持用戶自定義觸發(fā)按鍵.當控制視頻組件腳本的Update( )方法檢測到指定輸入時,將激活虛擬場景中的教學(xué)視頻對象,獲取其附屬的Video 視頻組件,然后調(diào)用Play( )方法播放視頻,控制視頻組件播放腳本方法的具體代碼如圖10所示,硫酸稀釋實驗的智能提示如圖11所示.
圖10 觸發(fā)視頻播放的核心代碼
圖11 硫酸稀釋實驗的智能提示
針對現(xiàn)有虛擬課堂缺乏系統(tǒng)優(yōu)化的問題,提出運用Spring Cloud 微服務(wù)及Redis 緩存解決,對系統(tǒng)服務(wù)器端的功能進行拆分,并緩存數(shù)據(jù)處理結(jié)果.
微服務(wù)是一種構(gòu)建應(yīng)用的架構(gòu)方案,可將應(yīng)用拆分成多個功能,每個功能都被稱為一項服務(wù),各項服務(wù)不會相互影響.依據(jù)功能不同,將本系統(tǒng)服務(wù)器端整體服務(wù)拆分為3 部分:用戶服務(wù):處理用戶的注冊與登錄問題;角色服務(wù):處理虛擬角色進行各項虛擬實驗的問題;權(quán)限服務(wù):處理權(quán)限策略應(yīng)用于當前虛擬場景的問題.
本系統(tǒng)后端微服務(wù)的服務(wù)處理流程如圖12所示.
圖12 服務(wù)處理流程
相比現(xiàn)有虛擬課堂的單體架構(gòu),使用微服務(wù)框架對系統(tǒng)功能進行拆分與部署有諸多優(yōu)勢,概括如下:
1)分布式部署,后期可以將處理不同模塊數(shù)據(jù)的服務(wù)部署于不同服務(wù)器,大幅提升數(shù)據(jù)處理效率.
2)高度可擴展,隨項目進行,虛擬課程和實驗數(shù)量都將增加,微服務(wù)架構(gòu)下可以完全不影響當前項目部署而增設(shè)物理生物等其它課程,充分滿足用戶需求.
3)高可用,服務(wù)互相獨立,彼此不存在影響,當某個微服務(wù)出現(xiàn)故障時,不會影響其它微服務(wù).
虛擬場景中產(chǎn)生的數(shù)據(jù)依據(jù)功能劃分提交至不同網(wǎng)絡(luò)接口處理,當有數(shù)據(jù)處理請求發(fā)起時,在C#腳本的Update( )方法中啟動一個協(xié)程,通過Unity3D 的HTTP REST API 訪問微服務(wù)對應(yīng)HTTP 接口,將數(shù)據(jù)封裝為JSON 格式并提交;當數(shù)據(jù)處理請求返回時,接收JSON 數(shù)據(jù)并解析,將數(shù)據(jù)填充至UI 中的數(shù)據(jù)域,如查詢學(xué)生成績功能中客戶端和服務(wù)器端進行數(shù)據(jù)交互的具體代碼如圖13所示.
圖13 客戶端和服務(wù)器端進行數(shù)據(jù)交互的代碼
如果發(fā)生異常,系統(tǒng)將進行服務(wù)降級,從本地客戶端獲取實驗相關(guān)信息并填充UI,呈現(xiàn)用戶友好界面,避免影響用戶體驗.服務(wù)降級通過Spring Cloud 的hystrix熔斷器組件實現(xiàn),該組件的作用是在不改變各微服務(wù)調(diào)用關(guān)系的前提下,針對錯誤情況進行預(yù)先處理.
首先在項目的pom.xml 文件中引入hystrix 組件的坐標,該文件主要在JavaWeb 項目中對網(wǎng)絡(luò)中的組件進行下載引用,使項目可以使用第三方類或API;其次,在項目中對服務(wù)熔斷的服務(wù)接口進行注冊,將其部署于默認的8070 端口,并配置該組件的enabled 屬性為true,表示啟用熔斷器;之后利用注解對表現(xiàn)層的控制器類進行注解,注解的fallback 屬性則指明了服務(wù)降級所依賴的錯誤處理類,在該類中直接返回帶有錯誤標識信息的JSON 數(shù)據(jù),客戶端接收后,如判斷有服務(wù)降級的標識,則直接從本地客戶端獲取數(shù)據(jù).
事先在服務(wù)器端正常返回JSON 數(shù)據(jù)前的代碼中插入int i=1/0;的異常代碼,當在進行金屬置換反應(yīng)實驗場景中希望查詢成績時,當點擊查詢成績后,服務(wù)器端產(chǎn)生異常,將返回帶有錯誤信息的數(shù)據(jù)處理結(jié)果,客戶端接收后,通過setActive(true)這個Unity3D 當中用于激活游戲?qū)ο蠼M件的系統(tǒng)API 將含有本地存儲的關(guān)于銅置換反應(yīng)的化學(xué)方程式及現(xiàn)象的提示UI 組件激活,同時調(diào)用setActive(false)隱藏實驗組件,減小資源開銷,這種用戶友好的錯誤提示UI 能夠避免在故障情況下影響用戶體驗,其效果如圖14所示.
圖14 服務(wù)熔斷后的金屬置換反應(yīng)
本文實現(xiàn)了虛擬化學(xué)智能課堂系統(tǒng),操作簡易,三維視覺效果良好,有助于中學(xué)學(xué)生進行化學(xué)課的虛擬學(xué)習,更直觀地學(xué)習化學(xué)反應(yīng)知識,了解各種化學(xué)反應(yīng)的實驗效果,更好地構(gòu)建完整的知識體系框架.
該系統(tǒng)的智能輔助模塊能夠依據(jù)權(quán)限策略對不同學(xué)生分配不同權(quán)限,進行針對性教學(xué);通過文字視頻等提示幫助學(xué)生在沒有教師指導(dǎo)的情況下進行自主學(xué)習,保證虛擬教學(xué)質(zhì)量.其多項化學(xué)實驗挖掘了可教學(xué)內(nèi)容,包括爆炸在內(nèi)的粒子特效為學(xué)生提供高沉浸體驗,吸引學(xué)生學(xué)習興趣.該系統(tǒng)運行時,服務(wù)端數(shù)據(jù)采用微服務(wù)框架及Redis 緩存處理,相比單體架構(gòu)效率更高,同時也能夠通過熔斷機制實現(xiàn)高可用特性.
后期工作是增設(shè)物理、生物等虛擬課程,開發(fā)支持項目商業(yè)化的內(nèi)置商城模塊,尋找并解決權(quán)限策略的漏洞,嚴格保障系統(tǒng)質(zhì)量.