亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2021-06-28 06:27:38孫俊輝高全力
        關(guān)鍵詞:組件用戶實(shí)驗(yàn)

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

        1(西北大學(xué) 信息科學(xué)與技術(shù)學(xué)院,西安 710127)

        2(西安工程大學(xué) 計(jì)算機(jī)科學(xué)學(xué)院,西安 710600)

        信息時(shí)代下,各領(lǐng)域科學(xué)技術(shù)都處于迅猛發(fā)展進(jìn)程中,虛擬現(xiàn)實(shí)也是其中之一.從1963年的萌芽階段至今,其不論在理論還是實(shí)踐上都有質(zhì)變,應(yīng)用領(lǐng)域也不再僅限于娛樂,而涉及教育、醫(yī)療等諸多方面[1,2].在該背景下,為彌補(bǔ)傳統(tǒng)教學(xué)的不足,國家開始將信息技術(shù)和教育進(jìn)行融合.學(xué)生的學(xué)習(xí)方式正發(fā)生顛覆性的變化,在5G 的發(fā)展和如今疫情的影響下,虛擬教學(xué)的發(fā)展勢(shì)頭將更加明顯[3].

        化學(xué)是以實(shí)驗(yàn)為核心的重要基礎(chǔ)學(xué)科,但由于中學(xué)階段授課受實(shí)驗(yàn)條件、安全隱患等限制,許多實(shí)驗(yàn)難以達(dá)到理想效果,甚至無法進(jìn)行.如不進(jìn)行有效實(shí)驗(yàn),學(xué)生僅從書本中難以對(duì)復(fù)雜反應(yīng)有深刻理解,無法結(jié)合理論與實(shí)踐.但目前尚無功能成熟的虛擬化學(xué)課堂,已知系統(tǒng)中所實(shí)現(xiàn)功能大多單一、三維視覺效果差,缺乏權(quán)限控制策略及系統(tǒng)優(yōu)化.

        本文基于以上背景構(gòu)建適用中學(xué)化學(xué)教學(xué)的虛擬課堂系統(tǒng),開發(fā)三維視覺效果良好的虛擬化學(xué)實(shí)驗(yàn),實(shí)現(xiàn)了采用權(quán)限策略的智能模塊,根據(jù)學(xué)生情況為其分配不同權(quán)限,提供自動(dòng)文字視頻實(shí)驗(yàn)提示.此外,通過Spring Cloud 框架拆分系統(tǒng)功能,將其部署于不同接口,使用Redis 緩存優(yōu)化系統(tǒng).

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

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

        根據(jù)虛擬現(xiàn)實(shí)的技術(shù)特性、傳統(tǒng)課堂的教學(xué)特點(diǎn)及現(xiàn)有虛擬課堂的系統(tǒng)特點(diǎn),將設(shè)計(jì)原則總結(jié)如下:

        (1)構(gòu)建虛實(shí)結(jié)合的三維教學(xué)空間:構(gòu)造符合真實(shí)世界比例的虛擬場(chǎng)景,注重用戶體驗(yàn);將二維平面的抽象內(nèi)容以三維空間立體展示,提高教學(xué)趣味性[4–6].

        (2)充分考慮學(xué)生用戶的群體特點(diǎn):目標(biāo)用戶對(duì)事物審美要求較高,為吸引其學(xué)習(xí)興趣,設(shè)計(jì)更符合其審美特點(diǎn)的用戶界面,讓其更好地獲得強(qiáng)沉浸感.

        (3)最大化利用虛擬教學(xué)優(yōu)勢(shì):傳統(tǒng)課堂中教師受時(shí)間限制不能充分指導(dǎo)每位學(xué)生,在虛擬教學(xué)中該問題應(yīng)得到充分解決;應(yīng)當(dāng)針對(duì)現(xiàn)實(shí)中難以進(jìn)行的實(shí)驗(yàn)進(jìn)行開發(fā),充分挖掘可教學(xué)內(nèi)容,豐富學(xué)生知識(shí)廣度.

        (4)力求解決虛擬場(chǎng)景下的權(quán)限問題:同現(xiàn)實(shí)環(huán)境一樣,虛擬多人場(chǎng)景下的模型交互也存在競(jìng)爭(zhēng).因此應(yīng)提出一種應(yīng)用于虛擬多人場(chǎng)景下的權(quán)限策略,提供合理的權(quán)限處理方法.

        (5)嚴(yán)格保證系統(tǒng)質(zhì)量:應(yīng)當(dāng)對(duì)網(wǎng)絡(luò)和系統(tǒng)故障等情況進(jìn)行預(yù)處理,設(shè)計(jì)服務(wù)熔斷策略,避免影響用戶體驗(yàn).不僅要保證系統(tǒng)當(dāng)下的可靠性,同時(shí)要采用合理的技術(shù)架構(gòu)進(jìn)行開發(fā),方便系統(tǒng)未來進(jìn)行擴(kuò)展.

        1.2 系統(tǒng)需求分析

        進(jìn)行系統(tǒng)功能開發(fā)前,需要針對(duì)傳統(tǒng)課堂教學(xué)的局限性及現(xiàn)有的虛擬化學(xué)課堂的不足進(jìn)行分析并提出對(duì)應(yīng)解決方案,明確系統(tǒng)需求.

        (1)傳統(tǒng)化學(xué)教學(xué)存在對(duì)實(shí)驗(yàn)材料的條件限制,例如需要鈹鋰等稀有金屬參與的反應(yīng)在現(xiàn)實(shí)中難以進(jìn)行.該問題在虛擬環(huán)境中不復(fù)存在,主要難點(diǎn)轉(zhuǎn)變?yōu)閷?duì)虛擬場(chǎng)景中模型材料材質(zhì)的高度還原.

        (2)由于傳統(tǒng)課堂的教學(xué)時(shí)間有限,教師無法指導(dǎo)全部問題學(xué)生.如果學(xué)生的問題無法及時(shí)解決,課后隨時(shí)間積累就將更加嚴(yán)重.針對(duì)該問題設(shè)計(jì)一種智能模塊,學(xué)生可觀看并重復(fù)點(diǎn)播教學(xué)視頻.

        (3)傳統(tǒng)課堂中難以進(jìn)行高危實(shí)驗(yàn),即使可以也必須嚴(yán)格遵循要求,在已知系統(tǒng)中也僅有進(jìn)行正確操作的實(shí)驗(yàn).這種情況下,實(shí)驗(yàn)錯(cuò)誤進(jìn)行的結(jié)果變得抽象,學(xué)生無法深入了解實(shí)驗(yàn).針對(duì)該問題,考慮開發(fā)以非標(biāo)準(zhǔn)手段進(jìn)行的化學(xué)實(shí)驗(yàn),例如在硫酸稀釋實(shí)驗(yàn)中增設(shè)將水倒入濃硫酸的錯(cuò)誤對(duì)比實(shí)驗(yàn).

        (4)現(xiàn)有虛擬化學(xué)課堂中的實(shí)驗(yàn)數(shù)量少,且大部分都是現(xiàn)實(shí)中可輕易進(jìn)行的實(shí)驗(yàn),沒有涉及現(xiàn)實(shí)中受材料限制和安全考慮而難以進(jìn)行的實(shí)驗(yàn),嚴(yán)重局限虛擬現(xiàn)實(shí)的技術(shù)優(yōu)勢(shì).針對(duì)該問題,設(shè)計(jì)開發(fā)多項(xiàng)現(xiàn)實(shí)中難以進(jìn)行的化學(xué)實(shí)驗(yàn),尤其是具有強(qiáng)烈視覺效果的實(shí)驗(yàn),豐富課堂趣味性,提高學(xué)生沉浸感.

        (5)現(xiàn)有虛擬課堂并未涉及權(quán)限問題,未充分考慮不同學(xué)生差異,無法做到針對(duì)性教學(xué).此外,虛擬多人環(huán)境下的角色和模型屬于不可剝奪資源,無法在同一時(shí)間節(jié)點(diǎn)共享.為此提出一種適用虛擬教學(xué)的權(quán)限策略,對(duì)現(xiàn)實(shí)用戶與虛擬權(quán)限進(jìn)行邏輯分離,并對(duì)虛擬角色及權(quán)限類型進(jìn)行細(xì)粒度劃分,借助事件監(jiān)聽機(jī)制,提供一種合理的動(dòng)態(tài)權(quán)限控制方法.

        (6)現(xiàn)有虛擬課堂缺乏優(yōu)化,伴隨項(xiàng)目商業(yè)化及用戶數(shù)量增加,數(shù)據(jù)庫冗余會(huì)越來越高.高并發(fā)情況下系統(tǒng)運(yùn)行效率低,發(fā)生故障時(shí)難以提供正常服務(wù),嚴(yán)重影響用戶體驗(yàn).對(duì)此提出一套保證系統(tǒng)效率的服務(wù)端技術(shù)架構(gòu),使用Spring Cloud 進(jìn)行開發(fā),將Redis 作為緩存,增強(qiáng)系統(tǒng)魯棒性,方便系統(tǒng)擴(kuò)展.

        1.3 系統(tǒng)功能

        根據(jù)上述設(shè)計(jì)原則及需求分析,設(shè)計(jì)如下功能:

        (1)注冊(cè)登錄:用戶首先需要進(jìn)行用戶注冊(cè),注冊(cè)成功后系統(tǒng)會(huì)自動(dòng)將其信息錄入后端數(shù)據(jù)庫中.登錄成功后,在登錄界面輸入用戶信息進(jìn)行實(shí)驗(yàn)選擇.

        (2)角色控制:學(xué)生用戶在系統(tǒng)中通過鍵盤及鼠標(biāo)等輸入設(shè)備對(duì)其對(duì)應(yīng)的虛擬角色進(jìn)行控制,能夠移動(dòng)、進(jìn)行虛擬實(shí)驗(yàn)以及觀看教學(xué)視頻等.

        (3)虛擬實(shí)驗(yàn):虛擬角色可進(jìn)行的實(shí)驗(yàn)共包括4 項(xiàng),分別為金屬置換反應(yīng)、火焰燃燒反應(yīng)、硫酸稀釋反應(yīng)及活潑金屬與水的反應(yīng).

        (4)智能模塊:系統(tǒng)將根據(jù)權(quán)限策略為虛擬角色分配對(duì)應(yīng)的實(shí)驗(yàn)權(quán)限,具有對(duì)應(yīng)權(quán)限的角色才能進(jìn)行實(shí)驗(yàn),實(shí)現(xiàn)針對(duì)性教學(xué);進(jìn)行虛擬實(shí)驗(yàn)時(shí),系統(tǒng)將自動(dòng)為虛擬角色提供文字視頻等提示,幫助學(xué)生進(jìn)行自主學(xué)習(xí),在缺乏教師指導(dǎo)的情況下保證教學(xué)質(zhì)量.虛擬角色可以查詢對(duì)應(yīng)成績和排名,促進(jìn)良性學(xué)習(xí)競(jìng)爭(zhēng).

        1.4 系統(tǒng)整體結(jié)構(gòu)

        圖1描述了本文所提出系統(tǒng)的結(jié)構(gòu),包括客戶端以及服務(wù)器端.客戶端負(fù)責(zé)實(shí)現(xiàn)虛擬場(chǎng)景下的功能,包括用戶管理模塊、虛擬實(shí)驗(yàn)?zāi)K以及智能輔助模塊.服務(wù)器端負(fù)責(zé)處理系統(tǒng)運(yùn)行時(shí)產(chǎn)生的數(shù)據(jù),包括用戶數(shù)據(jù)、虛擬角色數(shù)據(jù)以及虛擬權(quán)限的數(shù)據(jù).

        圖1 系統(tǒng)整體結(jié)構(gòu)

        首先搭建系統(tǒng)場(chǎng)景,采用三維建模軟件3dMAX構(gòu)建虛擬場(chǎng)景,導(dǎo)入模型貼圖后進(jìn)行格式轉(zhuǎn)換,以FBX格式導(dǎo)出到Unity3D 引擎[7].其次進(jìn)行客戶端開發(fā),完成數(shù)據(jù)庫設(shè)計(jì),利用C#腳本進(jìn)行組件化開發(fā),結(jié)合粒子系統(tǒng)和NGUI 插件開發(fā)GUI 界面和虛擬化學(xué)實(shí)驗(yàn)[8–10];設(shè)計(jì)權(quán)限策略,并以此為基礎(chǔ)開發(fā)智能模塊.最后通過IDEA 進(jìn)行服務(wù)器端開發(fā),利用Spring Cloud 框架拆分微服務(wù),利用Redis 緩存優(yōu)化系統(tǒng).

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

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

        系統(tǒng)技術(shù)架構(gòu)如圖2所示.客戶端采用Unity3D開發(fā).表現(xiàn)層對(duì)控制模型材質(zhì)的Shader 進(jìn)行渲染并以GUI 形式作為交互接口;業(yè)務(wù)層完成虛擬課堂的核心功能,包括用戶的注冊(cè)登錄、虛擬實(shí)驗(yàn)及智能模塊.服務(wù)器端采用IDEA 開發(fā),客戶端通過HTTP 接口和服務(wù)器端進(jìn)行數(shù)據(jù)交互,應(yīng)用權(quán)限策略.MySQL 存儲(chǔ)學(xué)生基本信息等持久數(shù)據(jù),Redis 存儲(chǔ)熱點(diǎn)數(shù)據(jù)作為緩存.

        圖2 系統(tǒng)技術(shù)架構(gòu)

        2.2 場(chǎng)景建模

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

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

        2.3 系統(tǒng)主場(chǎng)景

        系統(tǒng)運(yùn)行后,首先加載如圖3所示的負(fù)責(zé)用戶注冊(cè)及登錄的主場(chǎng)景,該場(chǎng)景通過GUI 即圖形用戶界面實(shí)現(xiàn),用戶通過鼠標(biāo)和其他輸入設(shè)備控制屏幕上的菜單和圖標(biāo),完成一系列交互活動(dòng).

        圖3 系統(tǒng)登錄場(chǎng)景

        GUI 包含面板、按鈕、輸入框等屬性,完成界面后添加C#腳本組件,使UI 可處理用戶輸入,用戶點(diǎn)擊登錄按鈕后,系統(tǒng)將根據(jù)用戶及密碼文本框的輸入信息判斷是否符合數(shù)據(jù)庫中已錄入的用戶信息,如符合則通過Invoke( )方法調(diào)用SceneManager.LoadScene( )系統(tǒng)API 觸發(fā)虛擬教室場(chǎng)景的加載并提示綠色的成功信息,否則清空用戶輸入并提示紅色的錯(cuò)誤信息,處理用戶登錄的Login.cs 腳本的部分代碼如圖4所示.

        圖4 處理用戶登錄的核心代碼

        2.4 虛擬化學(xué)實(shí)驗(yàn)

        系統(tǒng)共包括4 項(xiàng)化學(xué)實(shí)驗(yàn),分別為金屬置換反應(yīng)、火焰燃燒反應(yīng)、硫酸稀釋反應(yīng)及活潑金屬與水反應(yīng).

        金屬置換反應(yīng)UI 如圖5(a)所示,該反應(yīng)通過更新對(duì)液體顏色的渲染實(shí)現(xiàn).Unity 中每個(gè)對(duì)象都具有坐標(biāo)、渲染器、腳本等組件,在對(duì)象的C#腳本中可以獲取其渲染器組件及具體負(fù)責(zé)渲染顏色的顏色組件,再通過調(diào)整該組件的RGB 屬性改變顏色.

        圖5 虛擬化學(xué)實(shí)驗(yàn)UI

        為銅塊和液體分別添加碰撞器組件,并勾選觸發(fā)器屬性.當(dāng)某游戲?qū)ο缶哂信鲎财鹘M件時(shí),其可以和其它具有碰撞器組件的對(duì)象在場(chǎng)景中接觸,而觸發(fā)器則可以在對(duì)象發(fā)生相關(guān)碰撞事件時(shí)觸發(fā)指定邏輯.

        通過Input.GetMouseButtonDown( )系統(tǒng)API 檢測(cè)用戶是否單擊鼠標(biāo)左鍵,當(dāng)檢測(cè)到該事件發(fā)生時(shí),通過生成對(duì)象實(shí)例的方法在指定位置和角度觸發(fā)銅塊固體的生成事件,并通過NumberChange( ) 方法更新當(dāng)前銅物質(zhì)量.之后調(diào)用ColorChange( )方法,當(dāng)銅塊接觸液體時(shí)根據(jù)銅的數(shù)量決定液體顏色的改變程度,控制該反應(yīng)的Test1.cs 腳本的核心代碼如圖6所示.

        圖6 處理金屬置換反應(yīng)的核心代碼

        火焰燃燒反應(yīng)模擬了火焰在氮?dú)狻⒖諝庖约把鯕? 種氣體當(dāng)中不同的燃燒效果,主要通過粒子系統(tǒng)實(shí)現(xiàn),粒子系統(tǒng)是一種計(jì)算機(jī)圖形學(xué)中模擬特定模糊現(xiàn)象的技術(shù),Unity3D 中的粒子系統(tǒng)是參數(shù)化的,通過調(diào)整參數(shù)值模擬不同效果,難點(diǎn)在于確認(rèn)合適的仿真參數(shù),在測(cè)試中不斷調(diào)整參數(shù)值,最終確定具有高度仿真效果的參數(shù),該反應(yīng)的參數(shù)面板如圖7所示.運(yùn)行時(shí)首先在腳本中獲得粒子系統(tǒng)組件,然后在Update( )方法中每幀更新粒子生命周期、尺寸、速度等屬性來渲染火焰燃燒的不同效果.火焰燃燒特效如圖5(b)所示.

        圖7 火焰粒子特性的參數(shù)面板

        硫酸稀釋反應(yīng)同樣通過粒子系統(tǒng)實(shí)現(xiàn),液體模型中的溫度計(jì)數(shù)值隨實(shí)驗(yàn)實(shí)時(shí)更新并顯示,該功能通過自定義Shader 實(shí)現(xiàn),Shader 用于控制GPU 的圖形渲染.其中溫度計(jì)Shader 控制顏色變化的surf( )方法的具體代碼如圖8所示.除標(biāo)準(zhǔn)實(shí)驗(yàn)外,開發(fā)非標(biāo)準(zhǔn)實(shí)驗(yàn)作為對(duì)比實(shí)驗(yàn),通過粒子系統(tǒng)模擬硫酸濺射特效幫助學(xué)生對(duì)該實(shí)驗(yàn)有更深刻的了解.硫酸稀釋對(duì)比實(shí)驗(yàn)中,硫酸濺射特效如圖5(c)所示.

        圖8 溫度計(jì)Shader 控制顏色變化的具體代碼

        活潑金屬與水的化學(xué)實(shí)驗(yàn)由于其巨大風(fēng)險(xiǎn)在現(xiàn)實(shí)中幾乎無法進(jìn)行,尤其是越活潑的金屬反應(yīng)強(qiáng)度越劇烈.為充分挖掘教學(xué)內(nèi)容并通過強(qiáng)視覺沖擊的三維效果吸引學(xué)生學(xué)習(xí)興趣,選擇了金屬中最活潑的Cs 作為實(shí)驗(yàn)材料,該金屬與水反應(yīng)時(shí)將產(chǎn)生極強(qiáng)的爆炸現(xiàn)象.該反應(yīng)仍通過粒子系統(tǒng)實(shí)現(xiàn),該實(shí)驗(yàn)中的粒子系統(tǒng)用以模擬爆炸及煙霧效果,其爆炸特效如圖5(d)所示.

        2.5 智能模塊

        2.5.1 權(quán)限策略

        由于虛擬現(xiàn)實(shí)在教育應(yīng)用的發(fā)展不夠完善,缺乏對(duì)交互的權(quán)限控制,本系統(tǒng)提出一種基于RBAC 的虛擬教學(xué)環(huán)境下的細(xì)粒度權(quán)限動(dòng)態(tài)控制策略.該策略包括用戶、角色、模型、權(quán)限、事件5 大單元,其中對(duì)角色、模型以及權(quán)限單元進(jìn)行了細(xì)粒度劃分.

        角色單元,即虛擬場(chǎng)景中的角色,包括3 項(xiàng)信息:角色標(biāo)識(shí)符、角色名稱、角色類型.不同層次間的角色類型不同,如學(xué)生和教師角色;相同層次也具有不同的角色類型,如普通學(xué)生和班長角色.

        模型單元,即虛擬場(chǎng)景中的模型,包括4 項(xiàng)信息:模型標(biāo)識(shí)符、模型權(quán)限、操作限制數(shù).

        權(quán)限單元,指虛擬場(chǎng)景中角色及模型的權(quán)限,包括4 項(xiàng)信息:權(quán)限標(biāo)識(shí)符、權(quán)限層級(jí)、權(quán)限內(nèi)容、權(quán)限約束.權(quán)限內(nèi)容劃分為角色管理、模型管理.權(quán)限約束包括數(shù)量、時(shí)間約束,分別限制權(quán)限最大被擁有角色數(shù)及權(quán)限最長分配時(shí)長,防止“教學(xué)饑餓”.

        事件單元,采用事件監(jiān)聽機(jī)制,對(duì)虛擬場(chǎng)景下全部事件進(jìn)行監(jiān)控,按照事件類型和處理原則處理.

        為解決虛擬多人場(chǎng)景下虛擬模型所屬權(quán)的問題,提出以下原則:

        (1)時(shí)間優(yōu)先原則,虛擬角色發(fā)起模型交互請(qǐng)求時(shí),發(fā)起時(shí)間節(jié)點(diǎn)較早的角色優(yōu)先獲得模型交互權(quán).

        (2)權(quán)限優(yōu)先原則,對(duì)模型交互具有不同權(quán)限的角色在同一時(shí)間節(jié)點(diǎn)(時(shí)間間隔小于1 ms)發(fā)起模型交互請(qǐng)求時(shí),權(quán)限較高的角色優(yōu)先獲得模型交互權(quán).

        (3)隨機(jī)分配原則,為避免具有相同權(quán)限的角色于同一時(shí)間節(jié)點(diǎn)發(fā)起模型交互請(qǐng)求的而導(dǎo)致系統(tǒng)故障,使用隨機(jī)生成數(shù)解決該問題.

        為解決多人環(huán)境非實(shí)驗(yàn)條件下進(jìn)行獲取虛擬模型所屬權(quán)的問題,提出課堂進(jìn)度原則:綜合學(xué)生角色的成績與課堂進(jìn)度計(jì)算出權(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的實(shí)時(shí)課堂進(jìn)度,p為全體學(xué)生角色的平均實(shí)時(shí)課堂進(jìn)度,gs為學(xué)生角色s的課程成績,g為全體學(xué)生角色的平均課程成績,wp為課堂進(jìn)度對(duì)T的權(quán)重值,wg為成績對(duì)T的權(quán)重值,系統(tǒng)通過該原則確定所有虛擬角色的T值,對(duì)其升序排列入隊(duì),依次出隊(duì)分配權(quán)限.

        上述原則的具體實(shí)現(xiàn)依賴Unity3D 腳本Update( )方法每幀更新的特性,利用該特性實(shí)現(xiàn)事件監(jiān)聽機(jī)制,持續(xù)監(jiān)聽交互請(qǐng)求,當(dāng)收到請(qǐng)求時(shí)通過HTTP 接口將請(qǐng)求數(shù)據(jù)交由服務(wù)器端進(jìn)行處理,服務(wù)器端處理權(quán)限分配問題的核心代碼如圖9所示.

        圖9 服務(wù)器權(quán)限策略代碼

        2.5.2 智能提示

        智能模塊除對(duì)學(xué)生角色進(jìn)行權(quán)限控制外,還支持自主學(xué)習(xí),學(xué)生可根據(jù)場(chǎng)景中智能提示觀看教學(xué)視頻.不但解決傳統(tǒng)教育模式中教師有限時(shí)間內(nèi)無法顧全所有學(xué)生的缺陷,又以虛擬現(xiàn)實(shí)這種新生技術(shù)豐富了教育趣味性,擴(kuò)展了可教學(xué)內(nèi)容.

        該功能主要通過C#腳本及NGUI 插件實(shí)現(xiàn).NGUI是C#編寫的Unity 插件,提供強(qiáng)大的UI 功能,開發(fā)時(shí)不用點(diǎn)擊Play 按鈕進(jìn)入運(yùn)行狀態(tài)就能即時(shí)查看結(jié)果.

        利用NGUI為4 項(xiàng)化學(xué)實(shí)驗(yàn)設(shè)置具體的提示UI,利用C#腳本指定文字提示觸發(fā)的具體時(shí)機(jī).Unity 中每個(gè)對(duì)象都具有Transfrom 組件,該組件中包含了模型的坐標(biāo)信息.系統(tǒng)運(yùn)行時(shí)首先在控制文字提示腳本的Start( )方法中獲取虛擬角色與各實(shí)驗(yàn)桌的坐標(biāo)信息,再在Update( )方法中通過Vector3 向量API 計(jì)算兩者間的向量距離d,當(dāng)d小于虛擬場(chǎng)景中指定距離時(shí)通過setActive( )方法激活提示組件,將UI 呈現(xiàn)給虛擬角色.

        視頻提示通過按鍵手動(dòng)實(shí)現(xiàn),系統(tǒng)支持用戶自定義觸發(fā)按鍵.當(dāng)控制視頻組件腳本的Update( )方法檢測(cè)到指定輸入時(shí),將激活虛擬場(chǎng)景中的教學(xué)視頻對(duì)象,獲取其附屬的Video 視頻組件,然后調(diào)用Play( )方法播放視頻,控制視頻組件播放腳本方法的具體代碼如圖10所示,硫酸稀釋實(shí)驗(yàn)的智能提示如圖11所示.

        圖10 觸發(fā)視頻播放的核心代碼

        圖11 硫酸稀釋實(shí)驗(yàn)的智能提示

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

        針對(duì)現(xiàn)有虛擬課堂缺乏系統(tǒng)優(yōu)化的問題,提出運(yùn)用Spring Cloud 微服務(wù)及Redis 緩存解決,對(duì)系統(tǒng)服務(wù)器端的功能進(jìn)行拆分,并緩存數(shù)據(jù)處理結(jié)果.

        微服務(wù)是一種構(gòu)建應(yīng)用的架構(gòu)方案,可將應(yīng)用拆分成多個(gè)功能,每個(gè)功能都被稱為一項(xiàng)服務(wù),各項(xiàng)服務(wù)不會(huì)相互影響.依據(jù)功能不同,將本系統(tǒng)服務(wù)器端整體服務(wù)拆分為3 部分:用戶服務(wù):處理用戶的注冊(cè)與登錄問題;角色服務(wù):處理虛擬角色進(jìn)行各項(xiàng)虛擬實(shí)驗(yàn)的問題;權(quán)限服務(wù):處理權(quán)限策略應(yīng)用于當(dāng)前虛擬場(chǎng)景的問題.

        本系統(tǒng)后端微服務(wù)的服務(wù)處理流程如圖12所示.

        圖12 服務(wù)處理流程

        相比現(xiàn)有虛擬課堂的單體架構(gòu),使用微服務(wù)框架對(duì)系統(tǒng)功能進(jìn)行拆分與部署有諸多優(yōu)勢(shì),概括如下:

        1)分布式部署,后期可以將處理不同模塊數(shù)據(jù)的服務(wù)部署于不同服務(wù)器,大幅提升數(shù)據(jù)處理效率.

        2)高度可擴(kuò)展,隨項(xiàng)目進(jìn)行,虛擬課程和實(shí)驗(yàn)數(shù)量都將增加,微服務(wù)架構(gòu)下可以完全不影響當(dāng)前項(xiàng)目部署而增設(shè)物理生物等其它課程,充分滿足用戶需求.

        3)高可用,服務(wù)互相獨(dú)立,彼此不存在影響,當(dāng)某個(gè)微服務(wù)出現(xiàn)故障時(shí),不會(huì)影響其它微服務(wù).

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

        虛擬場(chǎng)景中產(chǎn)生的數(shù)據(jù)依據(jù)功能劃分提交至不同網(wǎng)絡(luò)接口處理,當(dāng)有數(shù)據(jù)處理請(qǐng)求發(fā)起時(shí),在C#腳本的Update( )方法中啟動(dòng)一個(gè)協(xié)程,通過Unity3D 的HTTP REST API 訪問微服務(wù)對(duì)應(yīng)HTTP 接口,將數(shù)據(jù)封裝為JSON 格式并提交;當(dāng)數(shù)據(jù)處理請(qǐng)求返回時(shí),接收J(rèn)SON 數(shù)據(jù)并解析,將數(shù)據(jù)填充至UI 中的數(shù)據(jù)域,如查詢學(xué)生成績功能中客戶端和服務(wù)器端進(jìn)行數(shù)據(jù)交互的具體代碼如圖13所示.

        圖13 客戶端和服務(wù)器端進(jìn)行數(shù)據(jù)交互的代碼

        3.2 服務(wù)降級(jí)

        如果發(fā)生異常,系統(tǒng)將進(jìn)行服務(wù)降級(jí),從本地客戶端獲取實(shí)驗(yàn)相關(guān)信息并填充UI,呈現(xiàn)用戶友好界面,避免影響用戶體驗(yàn).服務(wù)降級(jí)通過Spring Cloud 的hystrix熔斷器組件實(shí)現(xiàn),該組件的作用是在不改變各微服務(wù)調(diào)用關(guān)系的前提下,針對(duì)錯(cuò)誤情況進(jìn)行預(yù)先處理.

        首先在項(xiàng)目的pom.xml 文件中引入hystrix 組件的坐標(biāo),該文件主要在JavaWeb 項(xiàng)目中對(duì)網(wǎng)絡(luò)中的組件進(jìn)行下載引用,使項(xiàng)目可以使用第三方類或API;其次,在項(xiàng)目中對(duì)服務(wù)熔斷的服務(wù)接口進(jìn)行注冊(cè),將其部署于默認(rèn)的8070 端口,并配置該組件的enabled 屬性為true,表示啟用熔斷器;之后利用注解對(duì)表現(xiàn)層的控制器類進(jìn)行注解,注解的fallback 屬性則指明了服務(wù)降級(jí)所依賴的錯(cuò)誤處理類,在該類中直接返回帶有錯(cuò)誤標(biāo)識(shí)信息的JSON 數(shù)據(jù),客戶端接收后,如判斷有服務(wù)降級(jí)的標(biāo)識(shí),則直接從本地客戶端獲取數(shù)據(jù).

        事先在服務(wù)器端正常返回JSON 數(shù)據(jù)前的代碼中插入int i=1/0;的異常代碼,當(dāng)在進(jìn)行金屬置換反應(yīng)實(shí)驗(yàn)場(chǎng)景中希望查詢成績時(shí),當(dāng)點(diǎn)擊查詢成績后,服務(wù)器端產(chǎn)生異常,將返回帶有錯(cuò)誤信息的數(shù)據(jù)處理結(jié)果,客戶端接收后,通過setActive(true)這個(gè)Unity3D 當(dāng)中用于激活游戲?qū)ο蠼M件的系統(tǒng)API 將含有本地存儲(chǔ)的關(guān)于銅置換反應(yīng)的化學(xué)方程式及現(xiàn)象的提示UI 組件激活,同時(shí)調(diào)用setActive(false)隱藏實(shí)驗(yàn)組件,減小資源開銷,這種用戶友好的錯(cuò)誤提示UI 能夠避免在故障情況下影響用戶體驗(yàn),其效果如圖14所示.

        圖14 服務(wù)熔斷后的金屬置換反應(yīng)

        4 結(jié)語

        本文實(shí)現(xiàn)了虛擬化學(xué)智能課堂系統(tǒng),操作簡(jiǎn)易,三維視覺效果良好,有助于中學(xué)學(xué)生進(jìn)行化學(xué)課的虛擬學(xué)習(xí),更直觀地學(xué)習(xí)化學(xué)反應(yīng)知識(shí),了解各種化學(xué)反應(yīng)的實(shí)驗(yàn)效果,更好地構(gòu)建完整的知識(shí)體系框架.

        該系統(tǒng)的智能輔助模塊能夠依據(jù)權(quán)限策略對(duì)不同學(xué)生分配不同權(quán)限,進(jìn)行針對(duì)性教學(xué);通過文字視頻等提示幫助學(xué)生在沒有教師指導(dǎo)的情況下進(jìn)行自主學(xué)習(xí),保證虛擬教學(xué)質(zhì)量.其多項(xiàng)化學(xué)實(shí)驗(yàn)挖掘了可教學(xué)內(nèi)容,包括爆炸在內(nèi)的粒子特效為學(xué)生提供高沉浸體驗(yàn),吸引學(xué)生學(xué)習(xí)興趣.該系統(tǒng)運(yùn)行時(shí),服務(wù)端數(shù)據(jù)采用微服務(wù)框架及Redis 緩存處理,相比單體架構(gòu)效率更高,同時(shí)也能夠通過熔斷機(jī)制實(shí)現(xiàn)高可用特性.

        后期工作是增設(shè)物理、生物等虛擬課程,開發(fā)支持項(xiàng)目商業(yè)化的內(nèi)置商城模塊,尋找并解決權(quán)限策略的漏洞,嚴(yán)格保障系統(tǒng)質(zhì)量.

        猜你喜歡
        組件用戶實(shí)驗(yàn)
        記一次有趣的實(shí)驗(yàn)
        無人機(jī)智能巡檢在光伏電站組件診斷中的應(yīng)用
        能源工程(2022年2期)2022-05-23 13:51:50
        新型碎邊剪刀盤組件
        U盾外殼組件注塑模具設(shè)計(jì)
        做個(gè)怪怪長實(shí)驗(yàn)
        關(guān)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        NO與NO2相互轉(zhuǎn)化實(shí)驗(yàn)的改進(jìn)
        實(shí)踐十號(hào)上的19項(xiàng)實(shí)驗(yàn)
        太空探索(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
        免费黄色影片| 国产成人自拍视频视频| 日韩一级精品视频免费在线看 | 深夜黄色刺激影片在线免费观看| 一区二区在线视频免费蜜桃| 日韩人妻ol丝袜av一二区| 又黄又爽又色又刺激的视频| 国产精品三级在线专区1| 日本女优爱爱中文字幕| 国产精品婷婷久久爽一下| 香蕉久久福利院| 产国语一级特黄aa大片| 精品奇米国产一区二区三区| 久久久久av综合网成人| 久久夜色精品国产噜噜麻豆| 亚洲av无码专区在线亚| 国产精品中文字幕日韩精品| 亚洲av无码专区国产不卡顿| 成人精品综合免费视频| 不卡无毒免费毛片视频观看| 无码国产精品一区二区高潮| 无码中文日韩Av| 精品国产亚洲av久一区二区三区| 日韩精品视频免费网站| 天天综合网在线观看视频| 提供最新的在線欧美综合一区| 亚洲综合一| 国产激情一区二区三区不卡av| 色视频网站一区二区三区| 欧美 丝袜 自拍 制服 另类| 亚洲AV综合久久九九| 久久精品久久精品中文字幕| 97久久国产亚洲精品超碰热| 亚洲精品国产第一区二区尤物| 日韩欧美在线观看成人| 日本免费影片一区二区| 最新日本人妻中文字幕| 亚洲精品成人网线在线播放va| 亚洲中久无码永久在线观看软件| 亚洲嫩草影院久久精品| 东京热加勒比视频一区|