• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Unity3D的虛擬化學(xué)智能課堂系統(tǒng)①

      2021-06-28 06:27:38孫俊輝高全力
      計算機系統(tǒng)應(yīng)用 2021年6期
      關(guān)鍵詞:組件用戶實驗

      孫俊輝,高 嶺,高全力,曹 瑞

      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).

      1 系統(tǒng)設(shè)計

      1.1 系統(tǒng)設(shè)計原則

      根據(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)未來進行擴展.

      1.2 系統(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)擴展.

      1.3 系統(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.4 系統(tǒng)整體結(jié)構(gòu)

      圖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).

      2 系統(tǒng)實現(xiàn)及關(guān)鍵技術(shù)

      2.1 技術(shù)架構(gòu)

      系統(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)

      2.2 場景建模

      通過3dsMax 制作虛擬化學(xué)課堂所需的三維模型[11].構(gòu)建模型時,既要保證模型質(zhì)量,也要保證模型的頂點總數(shù)和三角切面總數(shù)不至過高,避免系統(tǒng)加載時占用大量內(nèi)存開銷,影響系統(tǒng)運行效率.制作實驗儀器等小模型時,提高模型精細程度;制作教室墻體等大模型時,降低模型精細程度.

      模型構(gòu)建完成后,在其材質(zhì)貼圖屬性中添加貼圖,實現(xiàn)高仿真視覺效果.此外還需將虛擬場景與真實課堂保持1:1 比例,增強學(xué)生使用系統(tǒng)時的沉浸感.

      2.3 系統(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 處理用戶登錄的核心代碼

      2.4 虛擬化學(xué)實驗

      系統(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 智能模塊

      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 硫酸稀釋實驗的智能提示

      3 系統(tǒng)優(yōu)化

      針對現(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ù).

      3.1 數(shù)據(jù)交互

      虛擬場景中產(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ù)交互的代碼

      3.2 服務(wù)降級

      如果發(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)

      4 結(jié)語

      本文實現(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ì)量.

      猜你喜歡
      組件用戶實驗
      記一次有趣的實驗
      無人機智能巡檢在光伏電站組件診斷中的應(yīng)用
      能源工程(2022年2期)2022-05-23 13:51:50
      新型碎邊剪刀盤組件
      重型機械(2020年2期)2020-07-24 08:16:16
      U盾外殼組件注塑模具設(shè)計
      做個怪怪長實驗
      關(guān)注用戶
      商用汽車(2016年11期)2016-12-19 01:20:16
      NO與NO2相互轉(zhuǎn)化實驗的改進
      實踐十號上的19項實驗
      太空探索(2016年5期)2016-07-12 15:17:55
      關(guān)注用戶
      商用汽車(2016年6期)2016-06-29 09:18:54
      關(guān)注用戶
      商用汽車(2016年4期)2016-05-09 01:23:12
      镇巴县| 通城县| 太仆寺旗| 泰来县| 成武县| 都江堰市| 富川| 泾川县| 丽水市| 仁化县| 南郑县| 昭通市| 台南县| 古交市| 磐石市| 江西省| 武冈市| 临武县| 伊通| 台东县| 青河县| 建阳市| 朔州市| 平罗县| 湾仔区| 柘城县| 六安市| 博白县| 吉安县| 固始县| 临江市| 奎屯市| 株洲县| 思南县| 鄂州市| 农安县| 滦平县| 荣昌县| 亚东县| 香河县| 卢湾区|