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

        ?

        基于Unity 3D的光譜實(shí)驗(yàn)教學(xué)系統(tǒng)研究

        2019-06-14 07:29:22徐富新
        關(guān)鍵詞:實(shí)驗(yàn)系統(tǒng)

        劉 釗,徐富新

        (中南大學(xué) 物理與電子學(xué)院,湖南 長(zhǎng)沙 410000)

        0 引 言

        伴隨著高等教育事業(yè)的發(fā)展,大學(xué)物理實(shí)驗(yàn)公共平臺(tái)擴(kuò)大,實(shí)驗(yàn)種類(lèi)、數(shù)量、儀器數(shù)目、參與實(shí)驗(yàn)的人次數(shù)均有大幅度增加。在平臺(tái)發(fā)展過(guò)程中,由于條件限制,學(xué)生難以隨時(shí)接觸到實(shí)驗(yàn)儀器。在有限的實(shí)驗(yàn)時(shí)間,學(xué)生也容易因不熟悉而損壞實(shí)驗(yàn)儀器。建立虛擬仿真實(shí)驗(yàn)室,可以較好地解決上述矛盾。虛擬實(shí)驗(yàn)是利用現(xiàn)有的虛擬現(xiàn)實(shí)技術(shù)[1-2]去模擬真實(shí)的實(shí)驗(yàn)環(huán)境[3],作為傳統(tǒng)實(shí)驗(yàn)教學(xué)一種有效的輔助手段,在現(xiàn)代教學(xué)過(guò)程中發(fā)揮著越來(lái)越重要的作用。國(guó)內(nèi)外許多大學(xué)很早就開(kāi)始了虛擬實(shí)驗(yàn)室的研發(fā),以滿(mǎn)足教學(xué)需要。隨著計(jì)算機(jī)硬件水平的提升和軟件技術(shù)的發(fā)展,逼真度更好的三維虛擬實(shí)驗(yàn)室的開(kāi)發(fā)變得可行,而仿真度和交互性則不斷進(jìn)步。

        光柵光譜[4]實(shí)驗(yàn)是光學(xué)實(shí)驗(yàn)的一種。而虛擬仿真實(shí)驗(yàn)可以虛擬出實(shí)驗(yàn)所需的儀器,實(shí)驗(yàn)現(xiàn)象的模型及實(shí)驗(yàn)操作的整個(gè)流程,以達(dá)到提高實(shí)驗(yàn)教學(xué)質(zhì)量的目的,彌補(bǔ)光學(xué)實(shí)驗(yàn)這方面的不足。虛擬實(shí)驗(yàn)環(huán)境可以滿(mǎn)足實(shí)驗(yàn)嚴(yán)苛的要求,有利于創(chuàng)造真實(shí)的實(shí)驗(yàn)條件,可以打破時(shí)間和空間的限制。在進(jìn)入真正實(shí)驗(yàn)之前,利用虛擬仿真實(shí)驗(yàn)加強(qiáng)光柵光譜實(shí)驗(yàn)操作,從而有效地解決了這些問(wèn)題。光柵光譜虛擬實(shí)驗(yàn)系統(tǒng)可以把抽象復(fù)雜的實(shí)驗(yàn)簡(jiǎn)單化,調(diào)節(jié)虛擬儀器,實(shí)現(xiàn)操作化訓(xùn)練,還可以讓實(shí)驗(yàn)者直觀地看到實(shí)驗(yàn)原理的現(xiàn)象,通過(guò)直觀感受會(huì)進(jìn)一步加強(qiáng)實(shí)驗(yàn)者的理解,激發(fā)更大的興趣,提高物理實(shí)驗(yàn)教學(xué)質(zhì)量。

        為了體現(xiàn)實(shí)驗(yàn)3D真實(shí)的效果,選擇Unity 3D[5-6]和3D Max[7]作為開(kāi)發(fā)軟件。在虛擬實(shí)驗(yàn)建設(shè)方面,很多高校都創(chuàng)建了相應(yīng)的虛擬仿真實(shí)驗(yàn)平臺(tái),大部分都是利用Flash、Labview等技術(shù)。但是,這類(lèi)平臺(tái)存在自身的不足,它們的仿真效果并沒(méi)有達(dá)到很高的三維逼真度,不易創(chuàng)建出真實(shí)的實(shí)驗(yàn)環(huán)境和實(shí)驗(yàn)交互的效果。Unity 3D是一套由Unity Technologies公司開(kāi)發(fā)的三維開(kāi)發(fā)引擎,支持Javascript,C#,BOO語(yǔ)言的開(kāi)發(fā)擴(kuò)展,可以使用插件,可支持3D Max或Maya等建模軟件的輸出格式,包括三維模型、骨骼動(dòng)畫(huà)等。憑借精簡(jiǎn)直觀的制作流程、功能強(qiáng)大的組件,擁有物理系統(tǒng)、粒子系統(tǒng)、動(dòng)畫(huà)系統(tǒng)等,它能夠創(chuàng)建出逼真度更好的虛擬實(shí)驗(yàn)環(huán)境和儀器,可以完全滿(mǎn)足物理實(shí)驗(yàn)教學(xué)的要求。

        文中采用模塊化開(kāi)發(fā)了光柵光譜儀虛擬實(shí)驗(yàn)室系統(tǒng),采用Bmob后端云服務(wù)器,基于MVC分層思想進(jìn)行登錄注冊(cè)系統(tǒng)的設(shè)計(jì),3D實(shí)驗(yàn)環(huán)境交互功能設(shè)計(jì)以及利用網(wǎng)格通過(guò)代碼來(lái)創(chuàng)建動(dòng)態(tài)圖表的繪制設(shè)計(jì),以滿(mǎn)足實(shí)驗(yàn)學(xué)習(xí)的要求。

        1 光柵光譜仿真實(shí)驗(yàn)系統(tǒng)

        1.1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)

        光柵光譜虛擬實(shí)驗(yàn)室系統(tǒng)的設(shè)計(jì)主要參考現(xiàn)實(shí)中實(shí)驗(yàn)室進(jìn)行,根據(jù)需求設(shè)計(jì)系統(tǒng)各個(gè)模塊,系統(tǒng)結(jié)構(gòu)如圖1所示。虛擬實(shí)驗(yàn)系統(tǒng)由兩大模塊構(gòu)成,一是登錄注冊(cè)模塊,二是實(shí)驗(yàn)仿真模塊。其中,登錄注冊(cè)模塊采用基于Bmob移動(dòng)服務(wù)器;實(shí)驗(yàn)仿真模塊主要分為兩種模式:一是學(xué)習(xí)模式,主要是通過(guò)視頻、文本等學(xué)習(xí)有關(guān)實(shí)驗(yàn)的內(nèi)容和步驟等,二是操作模式,讓實(shí)驗(yàn)者進(jìn)行相應(yīng)的實(shí)驗(yàn)操作。

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

        1.2 模型的建立

        在創(chuàng)建Unity項(xiàng)目前需要準(zhǔn)備資源,包括人物模型、動(dòng)畫(huà)、紋理、音頻特效、功能腳本以及其他類(lèi)擴(kuò)展插件等等。首先對(duì)虛擬實(shí)驗(yàn)室所需的資源進(jìn)行信息采集,利用3D Max制作相關(guān)的實(shí)驗(yàn)儀器模型,然后以.FBX文件導(dǎo)出,打開(kāi)Unity軟件,新建項(xiàng)目,創(chuàng)建3D場(chǎng)景,導(dǎo)入資源,在Unity中進(jìn)行相應(yīng)的對(duì)象貼圖烘焙處理,根據(jù)不同用途來(lái)設(shè)置圖片類(lèi)型,如紋理、反射貼圖等設(shè)置格式使物體對(duì)象達(dá)到真實(shí)逼真的效果。從系統(tǒng)模型構(gòu)建看,主要分兩部分,一個(gè)是UI為主體的2D場(chǎng)景,另一個(gè)就是3D場(chǎng)景。

        1.2.1 三維模型的建立

        建模采用的是3D Max。主要制作3D模型,包括有光柵光譜儀(含光電倍增管、電箱、計(jì)算機(jī)系統(tǒng))、高壓電源、準(zhǔn)直氦燈、氫燈、白熾燈等。為了提高質(zhì)感和視覺(jué)效果,實(shí)驗(yàn)中對(duì)所需儀器逐一建模生成,并通過(guò)渲染器進(jìn)行烘焙渲染、貼圖,增強(qiáng)真實(shí)感,最后將3D Max導(dǎo)出時(shí)選中嵌入媒體復(fù)選框。然后打開(kāi)Unity應(yīng)用程序,在所開(kāi)發(fā)的項(xiàng)目中,導(dǎo)入U(xiǎn)nity會(huì)自動(dòng)生成該FBX模型配套貼圖的文件。在Unity中,根據(jù)圖片資源的用途不同設(shè)置相應(yīng)的格式來(lái)達(dá)到最佳效果,如作用于光源的Cookie,選擇此類(lèi)型,紋理適用于燈光對(duì)象。在創(chuàng)建3D場(chǎng)景過(guò)程中,為了提高資源利用率以及開(kāi)發(fā)的效率,往往會(huì)制作Prefabs(預(yù)設(shè)體),Prefabs是一個(gè)對(duì)象及其組合的集合。根據(jù)實(shí)驗(yàn)室要求創(chuàng)建好3D實(shí)驗(yàn)室,此時(shí),實(shí)驗(yàn)室中所有的實(shí)驗(yàn)?zāi)P投贾皇庆o態(tài)的,根據(jù)需要添加各種組件來(lái)給予相應(yīng)的功能,比如說(shuō)提供了多個(gè)物理模擬的組件,通過(guò)修改相應(yīng)參數(shù),從而使對(duì)象表現(xiàn)出與現(xiàn)實(shí)相似的各種物理行為,給每個(gè)模型一個(gè)網(wǎng)格,這樣人物就不可以穿過(guò)去,為對(duì)象添加剛體(RigidBody)組件,對(duì)象便可以接受外力才會(huì)受到重力的影響等等。

        1.2.2 虛擬仿真UI設(shè)計(jì)

        UI場(chǎng)景在實(shí)驗(yàn)中主要涉及到兩個(gè)功能模塊,即登錄注冊(cè)模塊和實(shí)驗(yàn)操作模塊中的學(xué)習(xí)模式。在Unity5以上的版本中,UGUI在易用和功能上一點(diǎn)不遜于NGUI,使用UGUI可以快速地建立UI界面,它的最主要的組件就是畫(huà)布(Canvas),每一個(gè)GUI控件必須是畫(huà)布的子對(duì)象。在Canvas組件下有三種渲染模式:覆蓋、攝像機(jī)以及世界空間模式。在覆蓋模式下,Canvas下的UI會(huì)獨(dú)立于其他場(chǎng)景元素。而在常見(jiàn)的攝像機(jī)模式下,其渲染的繪制圖像會(huì)產(chǎn)生在攝像機(jī)的鏡頭下;世界空間模式下,就與其他場(chǎng)景對(duì)象一樣。

        如圖2所示,它分為兩部分,一種是可視化組件,有文本、圖像、遮罩等,如text(文本)用來(lái)顯示非交互文本,可以作為標(biāo)題,Image(圖像)可用作裝飾、圖標(biāo)、背景圖等等。另一種就是互動(dòng)性組件,部分組件中可以添加代碼與其相互響應(yīng),比如Button(按鈕)響應(yīng)來(lái)自用戶(hù)的單擊事件,如果鼠標(biāo)在單擊釋放之前離開(kāi)Button控件,則動(dòng)作不會(huì)發(fā)生。在這個(gè)畫(huà)布下根據(jù)要求用到所需的UI元素,通過(guò)組合這些UI控件來(lái)完成UI場(chǎng)景。

        在實(shí)際的Unity場(chǎng)景制作中,為了使對(duì)象在場(chǎng)景中層次不會(huì)錯(cuò)亂,可以創(chuàng)建不同的工作層來(lái)管理對(duì)象,使得場(chǎng)景更加分明,對(duì)象之間操作也更加方便。

        2 系統(tǒng)關(guān)鍵技術(shù)

        2.1 登錄注冊(cè)

        創(chuàng)建一個(gè)空對(duì)象UI來(lái)管理整個(gè)UI場(chǎng)景,向場(chǎng)景中添加Canvas組件,通過(guò)Rect Transform組件將其調(diào)整至合適位置。在Canvas組件下添加一個(gè)Image組件和一個(gè)空對(duì)象,Image作為整個(gè)背景圖,而空對(duì)象Window用來(lái)管理注冊(cè)和登錄的窗口。在空物體Window下分別創(chuàng)建Panel,取名Regist和Logon,這樣形成兩個(gè)不同的窗口,在Panel下添加文字、圖片、按鈕等等UI元素,根據(jù)它們的需求創(chuàng)建不同的功能,最后形成了登錄和注冊(cè)的窗口。

        2.1.1 MVC動(dòng)態(tài)加載登錄窗口

        利用UI架構(gòu),設(shè)置場(chǎng)景管理器來(lái)完成這一部分的功能。MVC[8-9]思想是將一個(gè)應(yīng)用分成三個(gè)基本部分:Model(模型)、View(視圖)和Controller(控制器),這三個(gè)部分以最少的耦合協(xié)同關(guān)系工作,從而提高應(yīng)用的可擴(kuò)展性及可維護(hù)性。UI是所有UI*的基類(lèi),包括兩個(gè)子類(lèi),其中一個(gè)為UIScene,它是所有場(chǎng)景UIScene*的基類(lèi),它的子類(lèi)UISceneLogonCtrl,是一個(gè)場(chǎng)景UI的控制器,UIWindow是所有窗口UIWindow*的基類(lèi)。

        登錄視圖LogonView,只負(fù)責(zé)與UI交互,而控制器負(fù)責(zé)把Model的數(shù)據(jù)顯示在View上或者從View上采集數(shù)據(jù)。MVC框架中,控制器控制視圖,且把Model的數(shù)據(jù)顯示在View上。比如登錄模式,view=UILogOnView視圖,只負(fù)責(zé)和UI交互,控制器負(fù)責(zé)把Model的數(shù)據(jù)顯示在View上,或者從View采集數(shù)據(jù),打開(kāi)或者關(guān)閉窗口,點(diǎn)擊按鈕之后,賬戶(hù)控制器就會(huì)接收到按鈕接收到的數(shù)據(jù),然后數(shù)據(jù)就會(huì)通過(guò)Model傳輸給服務(wù)器。Model中包含業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)邏輯,業(yè)務(wù)數(shù)據(jù)通過(guò)網(wǎng)絡(luò)通訊模塊傳輸給服務(wù)器。Model還有本地?cái)?shù)據(jù)管理,包括數(shù)據(jù)讀取和本地存儲(chǔ),如圖3所示。

        2.1.2 基于Bmob實(shí)現(xiàn)登錄、注冊(cè)功能

        通過(guò)Bmob[10]可以隨時(shí)存儲(chǔ)和讀取自己在平臺(tái)上的實(shí)時(shí)數(shù)據(jù),很好實(shí)現(xiàn)了客戶(hù)端通過(guò)網(wǎng)絡(luò)與后端云的數(shù)據(jù)連通。使用輕量級(jí)的Bmob C# SDK開(kāi)發(fā)包,將Bmob-Window文件引用到項(xiàng)目工程,進(jìn)而實(shí)現(xiàn)用戶(hù)登錄和注冊(cè)的功能。免去了服務(wù)器維護(hù)、數(shù)據(jù)存儲(chǔ)互通等繁瑣的工作,大幅度提高開(kāi)發(fā)效率,減少研發(fā)時(shí)間和成本。

        圖3 MVC動(dòng)態(tài)加載結(jié)構(gòu)

        首先需要下載相對(duì)應(yīng)的Bmob-unity文件放入工程的libs下,然后將BmobUnity組件掛載在攝影機(jī)下,在Bmob移動(dòng)云官網(wǎng)中注冊(cè)賬號(hào),將申請(qǐng)賬號(hào)下的Application ID和Rest key分別寫(xiě)入相對(duì)應(yīng)的BmobUnity中。然后創(chuàng)建相應(yīng)的類(lèi)繼承BombUser類(lèi),重寫(xiě)其中的login()和register()函數(shù)。在這個(gè)過(guò)程中需要從數(shù)據(jù)庫(kù)中讀取或者寫(xiě)入數(shù)據(jù)。也有相應(yīng)的函數(shù),只要調(diào)用就行,十分方便。

        注冊(cè)代碼如下:

        MyBmobUser user=new MyBmobUser();

        user.username=userName.text;

        user.password=pwd.text;

        Bmob.Signup (user,(resp,excp)=>{

        if(excp !=null)

        {

        tishi.text="注冊(cè)失敗";

        return;

        }

        else

        {

        tishi.text="注冊(cè)成功";

        }

        });

        2.2 實(shí)驗(yàn)操作交互技術(shù)

        任何一項(xiàng)實(shí)驗(yàn)操作都有一定的操作流程,這對(duì)實(shí)驗(yàn)儀器的保護(hù)、實(shí)驗(yàn)人員的安全以及實(shí)驗(yàn)的成功至關(guān)重要。在操作過(guò)程中采用了分步式的實(shí)驗(yàn)操作過(guò)程。操作者可以自行糾正操作的錯(cuò)誤,加強(qiáng)實(shí)驗(yàn)儀器的操作,熟練實(shí)驗(yàn)流程,避免儀器的損害,進(jìn)而達(dá)到訓(xùn)練的目的,為以后實(shí)時(shí)操作打下堅(jiān)實(shí)的基礎(chǔ)[11-12]。

        交互的實(shí)現(xiàn)主要通過(guò)程序代碼對(duì)物體之間的觸發(fā)來(lái)完成。在Unity中,操作者通過(guò)鍵盤(pán)、鼠標(biāo)來(lái)控制虛擬實(shí)驗(yàn)中的人物,而虛擬世界中的人物與3D物體之間的交互(如碰撞、觸發(fā)等)則需要函數(shù)等程序指令來(lái)實(shí)現(xiàn)。以單色儀定標(biāo)過(guò)程為例,打開(kāi)計(jì)算機(jī)(主機(jī)、顯示器),開(kāi)啟光柵光譜儀電箱電源,啟動(dòng)光柵光譜儀控制系統(tǒng)程序進(jìn)行初始化操作,檢查并設(shè)置參數(shù)使其滿(mǎn)足實(shí)驗(yàn)需要,開(kāi)啟氦燈電源,將燈對(duì)準(zhǔn)光柵光譜儀狹縫,執(zhí)行“工作/單程掃描”,執(zhí)行“讀取數(shù)據(jù)/尋峰”,收集數(shù)據(jù),關(guān)閉儀器。

        在虛擬實(shí)驗(yàn)操作場(chǎng)景中,實(shí)驗(yàn)者以第一人稱(chēng)視角,用鼠標(biāo)操作執(zhí)行相應(yīng)的內(nèi)容。在操作場(chǎng)景中可以操作儀器做出相應(yīng)的動(dòng)作,同時(shí)包含有對(duì)該步驟的文字說(shuō)明,便于加深使用者對(duì)實(shí)驗(yàn)操作的理解[13]。

        比如,提前做好一個(gè)關(guān)于錯(cuò)誤信息的預(yù)設(shè)體,如果出現(xiàn)錯(cuò)誤步驟,就會(huì)響應(yīng)函數(shù)方法,代碼如下:

        GameObject errPre=Instantiate(errObj,tipSystem.transform.position,tipSystem.transform.rotation) as GameObject;

        errPre.transform.SetParent(tipSystem.transform);

        errPre.GetComponentInChildren().text =displayText;

        當(dāng)點(diǎn)擊計(jì)算機(jī)按鈕時(shí),按鈕會(huì)由白色變?yōu)榧t色,這是提醒電源已開(kāi),表示已經(jīng)觸發(fā)激活了電腦屏幕,此時(shí)啟動(dòng)光柵光譜儀控制系統(tǒng)程序,會(huì)有提示提醒先打開(kāi)電箱電源開(kāi)關(guān)和單色儀。這樣就會(huì)按照提示,一步步進(jìn)行試驗(yàn),而不會(huì)出現(xiàn)操作步驟的錯(cuò)誤從而導(dǎo)致試驗(yàn)的失敗,如圖4中(a)和(b)所示。

        圖4 提示圖

        同時(shí),為了進(jìn)一步體現(xiàn)實(shí)驗(yàn)的交互性,還設(shè)計(jì)了放大功能,在做實(shí)驗(yàn)的過(guò)程中,可以進(jìn)一步觀看實(shí)驗(yàn)儀器,如圖4(c)所示。此時(shí)需要鼠標(biāo)來(lái)完成,鼠標(biāo)輸入的相關(guān)事件包括鼠標(biāo)移動(dòng)、按鍵的單擊等,鼠標(biāo)位置的變量類(lèi)型為Vector3,其中x分量對(duì)應(yīng)水平坐標(biāo),y分量對(duì)應(yīng)垂直坐標(biāo),z分量始終為零。GetMouse ButtonDown需要傳入?yún)?shù)來(lái)判斷鼠標(biāo)按鍵,0代表左鍵,1代表右鍵,2對(duì)應(yīng)中間。其關(guān)鍵代碼如下:

        if(Input.GetMouseButtonDown(1) && showTips)

        {

        flag=true;

        tmp=Instantiate(prefab,cam.transform.position,cam.transform.rotation) as GameObject;

        tmp.transform.position +=cam.transform.forward * 1.0f;

        tmp.transform.position+=cam.transform.up*0.1f;

        tmp.transform.Rotate(Vector3.forward *Input.GetAxis("MouseX") * -speed);

        tmp.transform.Rotate(Vector3.right *Input.GetAxis("Mouse Y") * speed);

        }

        而showTips判斷的依據(jù)是鼠標(biāo)是否經(jīng)過(guò)物體。主要通過(guò)鼠標(biāo)與物體之間的觸發(fā)函數(shù),其中點(diǎn)擊鼠標(biāo)右鍵以第一人稱(chēng)視角為中心。在腳本中,預(yù)設(shè)一個(gè)新的放大物體距人物一定距離,方便操作者仔細(xì)觀察實(shí)驗(yàn)儀器,為實(shí)驗(yàn)者帶來(lái)較為真實(shí)且操作方便的體驗(yàn)感[14]。

        2.3 動(dòng)態(tài)仿真圖

        光柵光譜儀實(shí)驗(yàn)中最主要的部分是獲取光譜曲線,包括單色儀定標(biāo)、測(cè)量氫光譜、氦光譜等。

        主要做法有:(1)根據(jù)以往在真實(shí)實(shí)驗(yàn)中所測(cè)量的光譜圖,將其制作為圖片,導(dǎo)入unity中生成UI圖片,以圖片的方式呈現(xiàn)給操作者;(2)運(yùn)用unity3D的圖表插件GraphMaker動(dòng)態(tài)數(shù)據(jù)生成的圖表。這兩種方法都能產(chǎn)生光譜圖,可是對(duì)于實(shí)驗(yàn)來(lái)說(shuō),光譜圖波長(zhǎng)的產(chǎn)生是根據(jù)光柵在轉(zhuǎn)動(dòng)的過(guò)程中,復(fù)合光通過(guò)光柵產(chǎn)生衍射形成單色光,波長(zhǎng)并不是一次就出來(lái)的,這樣給操作者的真實(shí)體驗(yàn)就差一些。

        在Unity中Graphic是所有可視化UI組件的基類(lèi)。在創(chuàng)建可視UI組件時(shí),從這個(gè)類(lèi)繼承。其在繼承了MaskableGraphic的子類(lèi)關(guān)鍵方法OnPopulateMesh中重寫(xiě)該方法,向OnPopulateMesh方法中傳入對(duì)應(yīng)的VertexHelper類(lèi)型的數(shù)據(jù),即可構(gòu)建出自己想要的組件。VertexHelper是UnityEngine.UI一個(gè)實(shí)用程序類(lèi),是一個(gè)包含了網(wǎng)格數(shù)據(jù)中的頂點(diǎn)數(shù)據(jù)和三角面對(duì)應(yīng)頂點(diǎn)的序號(hào),可以幫助生成UI的網(wǎng)格。以下通過(guò)兩個(gè)點(diǎn)來(lái)制作矩形。首先獲取兩點(diǎn)之間的長(zhǎng)度,分別將兩點(diǎn)在X、Y方向的斜率作為單位,創(chuàng)建UIVertex,重新設(shè)置四個(gè)頂點(diǎn)vertex的位置,從而得到矩形。關(guān)鍵代碼如下:

        protected UIVertex[] Quad(Vector2 startPoint,Vector2 endPoint)

        {

        float length=Vector2.Distance(startPoint,endPoint);

        float xS=(endPoint.y-startPos.y)/length;

        float yS=(endPoint.x-startPos.x)/length;

        UIVertex[] vertex=new UIVertex[4];

        vertex[0].position=new Vector3(startPoint.x-xS,startPoint.y-yS);

        vertex[1].position=new Vector3(startPoint.x+xS,startPoint.y+yS);

        vertex[2].position=new Vector3(endPoint.x+xS,endPoint. y+yS);

        vertex[3].position=new Vector3(endPoint.x-xS,endPoint. y-yS);

        return vertex;

        }

        這個(gè)矩形就相當(dāng)于一個(gè)點(diǎn),線段就是由許多點(diǎn)構(gòu)成,光譜圖動(dòng)態(tài)顯示則是根據(jù)已知的實(shí)驗(yàn)數(shù)據(jù)轉(zhuǎn)換為一組坐標(biāo),使用協(xié)同逐點(diǎn)顯示連線。在設(shè)計(jì)虛擬仿真實(shí)驗(yàn)系統(tǒng)之前,已經(jīng)做過(guò)有關(guān)實(shí)驗(yàn),獲得相關(guān)的實(shí)驗(yàn)數(shù)據(jù)。在設(shè)計(jì)和構(gòu)建了實(shí)驗(yàn)的仿真界面過(guò)程中,包括儀器參數(shù)設(shè)置和仿真實(shí)驗(yàn)結(jié)果等,把數(shù)據(jù)進(jìn)行本地化存儲(chǔ)。根據(jù)之前得到的真實(shí)實(shí)驗(yàn)數(shù)據(jù),在虛擬仿真實(shí)驗(yàn)系統(tǒng)中本地存儲(chǔ)不同的光譜圖,與此同時(shí)在讀取數(shù)據(jù)時(shí)也是根據(jù)之前實(shí)驗(yàn)數(shù)據(jù)加入了部分隨機(jī)函數(shù),使虛擬仿真實(shí)驗(yàn)系統(tǒng)的數(shù)據(jù)更真實(shí)、合理。圖5為用已知波長(zhǎng)的氦燈光譜線對(duì)光柵單色儀定標(biāo)界面。

        圖5 氦光譜

        根據(jù)實(shí)驗(yàn)的具體要求和實(shí)驗(yàn)者的一些操作行為來(lái)得到相應(yīng)的實(shí)驗(yàn)結(jié)果,虛擬仿真實(shí)驗(yàn)系統(tǒng)效果良好[15]。

        3 系統(tǒng)發(fā)布

        Unity擁有強(qiáng)大的圖形引擎和功能,為開(kāi)發(fā)者提供了平臺(tái),用于開(kāi)發(fā)豐富的2D、3D、VR及AR交互式內(nèi)容。擁有直觀的工作流程和功能強(qiáng)大的工具集,支持多種資源格式導(dǎo)入,可以將3D模型、圖像、視頻、聲音等進(jìn)行結(jié)合快速實(shí)現(xiàn)創(chuàng)意,并結(jié)合Unity內(nèi)部強(qiáng)大的系統(tǒng)組件功能,如專(zhuān)業(yè)的物理引擎系統(tǒng)模擬包含剛體、柔體、重力、碰撞等各種物理行為;快速的UGUI界面設(shè)計(jì),強(qiáng)大的可視化編輯器,可以滿(mǎn)足各種界面制作需求等。這些功能可以輕松完成三維互動(dòng)開(kāi)發(fā),創(chuàng)建出虛擬仿真內(nèi)容。通過(guò)Build Setting中的PC選項(xiàng)就可以將內(nèi)容部署輕松送達(dá)至PC平臺(tái),生成可執(zhí)行文件及其數(shù)據(jù)文件包。圖6為系統(tǒng)模塊展示。

        圖6 系統(tǒng)模塊展示

        圖6(a),進(jìn)入登錄注冊(cè)窗口完成登錄后,在實(shí)驗(yàn)主場(chǎng)景中有兩種模式選擇,分別對(duì)應(yīng)實(shí)驗(yàn)學(xué)習(xí)模式和實(shí)驗(yàn)操作模式,可以自己選擇進(jìn)入相應(yīng)的場(chǎng)景進(jìn)行學(xué)習(xí)。進(jìn)入學(xué)習(xí)模式后,包括實(shí)驗(yàn)簡(jiǎn)介、實(shí)驗(yàn)原理、實(shí)驗(yàn)步驟,如圖6(b);用戶(hù)可以自己選擇進(jìn)行最基礎(chǔ)的理論學(xué)習(xí)。學(xué)習(xí)完成后進(jìn)入實(shí)驗(yàn)操作場(chǎng)景進(jìn)行實(shí)驗(yàn)操作,如圖6(c);如果對(duì)實(shí)驗(yàn)儀器感興趣,可以去儀器場(chǎng)景,將儀器打開(kāi),觀察儀器內(nèi)部結(jié)構(gòu),如圖6(d)。

        4 結(jié)束語(yǔ)

        在光學(xué)實(shí)驗(yàn)教學(xué)方面,設(shè)備昂貴且易損,實(shí)驗(yàn)環(huán)境要求高,因此將Unity3D和3D Max技術(shù)引進(jìn)光學(xué)實(shí)驗(yàn)教學(xué)訓(xùn)練中。就其自身優(yōu)點(diǎn)來(lái)講,它精簡(jiǎn)直觀的制作流程、功能強(qiáng)大的組件,突破了傳統(tǒng)的學(xué)習(xí)方式,可以提前讓學(xué)生學(xué)習(xí)有關(guān)實(shí)驗(yàn)的基礎(chǔ)知識(shí),通過(guò)各種交互功能,熟悉操作實(shí)驗(yàn)流程,加深對(duì)實(shí)驗(yàn)儀器組成部件的認(rèn)識(shí)和操作,豐富了學(xué)生的學(xué)習(xí)內(nèi)容。學(xué)生可以在任何時(shí)間任何地點(diǎn)多次進(jìn)行實(shí)驗(yàn)操作,加強(qiáng)學(xué)生的實(shí)驗(yàn)學(xué)習(xí),有效地減少了實(shí)驗(yàn)設(shè)備損害,提高了實(shí)驗(yàn)利用效率。因此,該系統(tǒng)具有很好的應(yīng)用價(jià)值。

        猜你喜歡
        實(shí)驗(yàn)系統(tǒng)
        記一次有趣的實(shí)驗(yàn)
        Smartflower POP 一體式光伏系統(tǒng)
        微型實(shí)驗(yàn)里看“燃燒”
        WJ-700無(wú)人機(jī)系統(tǒng)
        ZC系列無(wú)人機(jī)遙感系統(tǒng)
        基于PowerPC+FPGA顯示系統(tǒng)
        做個(gè)怪怪長(zhǎng)實(shí)驗(yàn)
        半沸制皂系統(tǒng)(下)
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        NO與NO2相互轉(zhuǎn)化實(shí)驗(yàn)的改進(jìn)
        天天狠狠综合精品视频一二三区| 国产精品久久熟女吞精| av国产免费在线播放| 国产精品主播在线一区二区| 亚洲乱码日产精品一二三| 成人免费毛片aaaaaa片| 91精品福利一区二区| 亚洲av综合色区在线观看| 亚洲国产最新免费av| 夜夜躁日日躁狠狠久久av| 日本老熟妇毛茸茸| 91久久久久无码精品露脸| 亚洲区福利视频免费看| 日韩人妻中文字幕高清在线| 大又大粗又爽又黄少妇毛片| 在线精品国内视频秒播| 白色橄榄树在线阅读免费| 久久精品中文字幕女同免费| 熟妇丰满多毛的大隂户| 国产精品九九热| 国产午夜精品综合久久久| 久久aaaa片一区二区| 波多野结衣中文字幕久久 | 国产真人无遮挡免费视频| 在线免费观看国产视频不卡| 少妇人妻中文久久综合| 欧美裸体xxxx极品少妇| 久久久AV无码精品免费| 在线免费观看毛视频亚洲精品| 国产激情自拍在线视频| 午夜精品久久久久久久久| 日日碰狠狠躁久久躁9| 国产性一交一乱一伦一色一情| 亚洲中文字幕乱码在线视频| 日韩人妻不卡一区二区三区| 久久男人av资源网站无码| 亚洲男人天堂av在线| 永久免费观看的黄网站在线| 扒开腿狂躁女人爽出白浆| 成人国产精品999视频| 亚洲天堂色婷婷一区二区 |