張麗娟
(甘肅省山丹培黎學(xué)校 甘肅 山丹 734100)
與國外相比,我國的虛擬現(xiàn)實技術(shù)發(fā)展時間較晚,隨著國內(nèi)對虛擬現(xiàn)實技術(shù)的逐漸重視,加之市場對虛擬現(xiàn)實技術(shù)擁有巨大的潛在需求,國內(nèi)對于虛擬現(xiàn)實技術(shù)的研發(fā)經(jīng)費(fèi)的投入越來越大,極大地推動了國內(nèi)虛擬現(xiàn)實技術(shù)的發(fā)展。目前我國的虛擬仿真應(yīng)用已經(jīng)覆蓋電子、機(jī)械等工業(yè)生產(chǎn)領(lǐng)域,此外在教育、醫(yī)學(xué)、軍事模擬、商業(yè)宣傳、工業(yè)新產(chǎn)品研發(fā)等多個領(lǐng)域都有著極大的運(yùn)用前景,而生動逼真的虛擬現(xiàn)實技術(shù)將來會與我們的日常生活息息相關(guān)[1]。本文利用3D數(shù)字電路建模技術(shù)建立數(shù)字電路實驗環(huán)境,通過搭建實驗室的芯片、試驗箱、信號燈、導(dǎo)線、桌椅等硬件材料,并將其運(yùn)用到數(shù)字3D中,開展用戶交互功能編輯,然后基于數(shù)字電路的邏輯特點利用程序腳本編輯器對于虛擬實驗室做獨(dú)立開發(fā),為此本文首先闡述了數(shù)字電路3D虛擬實驗室的設(shè)計方案和建模,最后分析了虛擬實驗室的功能實現(xiàn)技術(shù)。
設(shè)計一套完整的數(shù)字電路3D虛擬實驗室需要涉及實驗室外觀形象的設(shè)計、內(nèi)部結(jié)構(gòu)的設(shè)計、電路圖原理設(shè)計以及逼真仿真現(xiàn)象模擬4個部分,其中具體的開發(fā)流程主要有:(1)采集原始素材;(2)3D Max建模;(3)將原始素材制作貼圖并將貼圖烘焙處理;(4)導(dǎo)出三維模型;(5)組裝交互;(6)導(dǎo)出到應(yīng)用軟件平臺。以上步驟從收集素材到導(dǎo)出模型至應(yīng)用軟件平臺,每個步驟都需要設(shè)計者精心設(shè)計,其中最關(guān)鍵的是建模和組裝交互2個模塊。本次建模是在建立靜態(tài)的實驗室模型,組織交互是在Unity3D靜態(tài)模型上通過自定義添加組間,來賦予實驗室的逼真屬性,將虛擬實驗室生動形象地展示出來,在這個過程中需要掛在C#腳本,凸顯視覺、人機(jī)以及元素之間的交互[2]。
本次虛擬實驗室選取了10個經(jīng)典模塊組件,主要包括 :彩燈控制電路、交通燈工作狀態(tài)控制電路、燈光控制邏輯電路、序號發(fā)生器、雙向移位寄存器、叮咚門鈴控制電路、水龍頭控制電路、水泵控制電路、模11加法計算器、光控開關(guān)控制電路。具體的三維虛擬實驗室框架設(shè)計如圖1所示。
圖1 三維虛擬實驗室框架設(shè)計
本文基于3DMax建模,使用的是幾何建模與圖像建模結(jié)合的混合建模方式,虛擬實驗室靜態(tài)模型的元素主要包括以下2個部分:一是實驗環(huán)境構(gòu)成,包括桌椅、墻壁、地板、書架等;二是實驗操作部件,主要包括數(shù)碼管、電源開關(guān)、發(fā)光二極管、水箱水泵、功能芯片、數(shù)電試驗箱、繼電器等。為了突出虛擬實驗室的逼真效果,實驗室中所用的儀器可以用建模生成,然后使用渲染器對物品做烘焙渲染和貼圖,增加真實感。在建模過程中需要反復(fù)使用“合并原則”、模型復(fù)制技術(shù)、貼圖烘焙、群組等功能,這樣可有效提升建模效果,降低建模復(fù)雜程度[3]。
如圖2所示,試驗箱中的端口數(shù)量十分復(fù)雜多樣,為了降低計算機(jī)中場景占用過多的服務(wù)器資源,所有端口都是用一個渲染器,這樣便于在統(tǒng)一調(diào)整模型的外觀效果。此外在模型設(shè)計中,可采用三維視角來塑造實驗箱模型,將整個建模過程變得簡單便捷。
圖2 虛擬實驗環(huán)境
本次數(shù)字電路實驗運(yùn)用的芯片非常多,有555定時器芯片、74LS04反相器芯片等,為了提升虛擬實驗室的逼真感和沉浸式體驗感,構(gòu)建模型時,是從芯片內(nèi)部結(jié)構(gòu)找出實驗操作關(guān)鍵部件以及部件之間的連接關(guān)系,進(jìn)而提升必要的仿真特性。當(dāng)構(gòu)建好功能芯片、實驗箱以及實驗環(huán)境等基礎(chǔ)后,開始連接導(dǎo)線,導(dǎo)線電路連接方式為:單機(jī)芯片的某兩個端口連接一條立體彎曲的導(dǎo)線,并跨接在兩個端口的中心之上。利用3DMax再建立高度差異化以及旋轉(zhuǎn)角度差異化的導(dǎo)線,每條導(dǎo)線由若干個錨點確定位置,某個錨點確定導(dǎo)向方向,某個錨點確定導(dǎo)向位置,通過調(diào)整錨點就能夠獲得自定義的導(dǎo)線模型,如圖3所示。
圖3 電路導(dǎo)線模型
本次基于數(shù)字電路的3D虛擬實驗室的功能開發(fā)分組模塊主要分為邏輯抽象、場景視角控制、碰撞響應(yīng)功能以及界面跳轉(zhuǎn)功能四個模塊。
本此設(shè)計的虛擬實驗室包括10個綜合模塊,這10個綜合實驗?zāi)K是依據(jù)現(xiàn)實邏輯規(guī)則設(shè)計出滿足要求的邏輯功能電路。以實驗的水泵關(guān)閉開啟控制電路舉例,首先編寫水泵關(guān)閉開啟的控制腳本,將控制攪拌拖動到開關(guān)電路模塊中,接通電源后,檢測功能是否生效,然后連線腳本DrawLine,連線狀態(tài)改為true,變量isDraw輸出先決判斷條件。在水泵開關(guān)控制腳本中,需要多個控制腳本來實現(xiàn)變量的相互控制和相互聯(lián)系,比如水位傳感器觸發(fā)后,變量由低到高設(shè)置為X1、X2、X3、X4,而低于水面的檢測元件分別為A、B、C,傳感器給出高度水平為1;當(dāng)水面高度高于傳感器,傳感器給出結(jié)果為0。按照數(shù)字電路原理,水泵的控制公式:
從使用者的視角來控制整個實驗室,此時可通過控制鼠標(biāo)進(jìn)入子實驗室,右擊鼠標(biāo)控制整個實驗室的旋轉(zhuǎn)和遙控,點擊鼠標(biāo)中間可實現(xiàn)對整個實驗?zāi)P偷钠揭?,滾動鼠標(biāo)滾輪可對實驗室做放大和縮小操作。以上對實驗室模型做的放大縮小、平移、遙控等操作是基于控制實驗室模型的上下限而執(zhí)行的,為了實現(xiàn)該功能需要運(yùn)用到相應(yīng)的代碼。Input,GetmoseButton(1)代表右鍵,可實現(xiàn)對模型的角度控制,(0)表示左鍵,(2)表示中鍵。例如:
If(Input,GetmoseButton(1)){//}檢測到鼠標(biāo)右擊
X+=Input,GetAxis(“Mouse X”)*xSPeed*0.02f://設(shè)定新位置橫坐標(biāo)
Y-=Input,GetAxis(“Mouse Y”)*xSPeed*0.02f://設(shè)定新位置縱坐標(biāo)
使用基于數(shù)字電路的3D實驗室模型設(shè)計時,Unity3D工具提供的觸發(fā)器碰撞方式是目前最有效的碰撞方式,為了實現(xiàn)碰撞,只需將帶有碰撞觸發(fā)傳感器的腳本掛在需要碰撞的模型上。比如在傳感器監(jiān)測水位上升時,水體碰撞與傳感器碰撞觸發(fā)后,此時引發(fā)碰撞相應(yīng)的水體速度發(fā)生變化,碰撞傳感器相應(yīng)控制器接收到信號后會將水泵做開關(guān)操作。
碰撞體觸發(fā)的代碼表達(dá)方式為:
(1)void on mouse down(){}//鼠標(biāo)按下
(2)if(Input,GetmoseButton Down(0)){}// 鼠標(biāo)左擊
(3)void on TriggerEnter(Colloder colloisionlnfo){}//發(fā)生觸碰
虛擬實驗室系統(tǒng)分為1個主界面和10個子系統(tǒng)界面,其中10個子系統(tǒng)實驗室界面是獨(dú)模塊,這樣便于理清思路,降低開發(fā)難度。當(dāng)10個獨(dú)立的子系統(tǒng)模塊開發(fā)完成后,就要設(shè)計者解決10個子系統(tǒng)模塊的界面跳轉(zhuǎn)和鏈接問題,本次設(shè)計的實驗室場景跳轉(zhuǎn)分為:(1)重啟后重新跳轉(zhuǎn)到主界面,這是一種實現(xiàn)對實驗場景復(fù)位的跳轉(zhuǎn)命令。當(dāng)用戶處于主界面“star”場景下,點擊sbr11“restar”,重新跳轉(zhuǎn)到“star”主界面;(2)系統(tǒng)關(guān)閉界面。在主界面與子系統(tǒng)界面右下角設(shè)置退出按鈕,點擊退出可退回到當(dāng)前實驗;(3)點擊鏈接跳轉(zhuǎn)到其他界面。當(dāng)實驗在完成狀態(tài)下,點擊跳轉(zhuǎn),則已經(jīng)進(jìn)行的實驗的狀態(tài)發(fā)生變化,當(dāng)跳轉(zhuǎn)到新場景后,再復(fù)位時,原有的實驗狀態(tài)變量需要達(dá)到復(fù)位時保存的狀態(tài)。
本次設(shè)計的基于數(shù)字電路3D虛擬實驗室是結(jié)合虛擬仿真軟件的開發(fā)環(huán)境,有效運(yùn)用3D虛擬現(xiàn)實技術(shù),并探索了邏輯代數(shù)知識以及數(shù)字電路知識,為用戶開發(fā)了一個沉浸式的生動逼真的3D數(shù)字虛擬實驗室。從收集素材到導(dǎo)出模型至應(yīng)用軟件平臺,每個步驟都需要設(shè)計者精心設(shè)計,才能將虛擬實驗室生動形象展示出來,凸顯視覺、人機(jī)以及元素之間的交互,后期通過對實驗環(huán)境以及場景部件進(jìn)行渲染和軟件腳本制作,才實現(xiàn)了電路的還原仿真。