張麗娟
(甘肅省山丹培黎學校 甘肅 山丹 734100)
與國外相比,我國的虛擬現實技術發展時間較晚,隨著國內對虛擬現實技術的逐漸重視,加之市場對虛擬現實技術擁有巨大的潛在需求,國內對于虛擬現實技術的研發經費的投入越來越大,極大地推動了國內虛擬現實技術的發展。目前我國的虛擬仿真應用已經覆蓋電子、機械等工業生產領域,此外在教育、醫學、軍事模擬、商業宣傳、工業新產品研發等多個領域都有著極大的運用前景,而生動逼真的虛擬現實技術將來會與我們的日常生活息息相關[1]。本文利用3D數字電路建模技術建立數字電路實驗環境,通過搭建實驗室的芯片、試驗箱、信號燈、導線、桌椅等硬件材料,并將其運用到數字3D中,開展用戶交互功能編輯,然后基于數字電路的邏輯特點利用程序腳本編輯器對于虛擬實驗室做獨立開發,為此本文首先闡述了數字電路3D虛擬實驗室的設計方案和建模,最后分析了虛擬實驗室的功能實現技術。
設計一套完整的數字電路3D虛擬實驗室需要涉及實驗室外觀形象的設計、內部結構的設計、電路圖原理設計以及逼真仿真現象模擬4個部分,其中具體的開發流程主要有:(1)采集原始素材;(2)3D Max建模;(3)將原始素材制作貼圖并將貼圖烘焙處理;(4)導出三維模型;(5)組裝交互;(6)導出到應用軟件平臺。以上步驟從收集素材到導出模型至應用軟件平臺,每個步驟都需要設計者精心設計,其中最關鍵的是建模和組裝交互2個模塊。本次建模是在建立靜態的實驗室模型,組織交互是在Unity3D靜態模型上通過自定義添加組間,來賦予實驗室的逼真屬性,將虛擬實驗室生動形象地展示出來,在這個過程中需要掛在C#腳本,凸顯視覺、人機以及元素之間的交互[2]。
本次虛擬實驗室選取了10個經典模塊組件,主要包括 :彩燈控制電路、交通燈工作狀態控制電路、燈光控制邏輯電路、序號發生器、雙向移位寄存器、叮咚門鈴控制電路、水龍頭控制電路、水泵控制電路、模11加法計算器、光控開關控制電路。具體的三維虛擬實驗室框架設計如圖1所示。

圖1 三維虛擬實驗室框架設計
本文基于3DMax建模,使用的是幾何建模與圖像建模結合的混合建模方式,虛擬實驗室靜態模型的元素主要包括以下2個部分:一是實驗環境構成,包括桌椅、墻壁、地板、書架等;二是實驗操作部件,主要包括數碼管、電源開關、發光二極管、水箱水泵、功能芯片、數電試驗箱、繼電器等。為了突出虛擬實驗室的逼真效果,實驗室中所用的儀器可以用建模生成,然后使用渲染器對物品做烘焙渲染和貼圖,增加真實感。在建模過程中需要反復使用“合并原則”、模型復制技術、貼圖烘焙、群組等功能,這樣可有效提升建模效果,降低建模復雜程度[3]。
如圖2所示,試驗箱中的端口數量十分復雜多樣,為了降低計算機中場景占用過多的服務器資源,所有端口都是用一個渲染器,這樣便于在統一調整模型的外觀效果。此外在模型設計中,可采用三維視角來塑造實驗箱模型,將整個建模過程變得簡單便捷。

圖2 虛擬實驗環境
本次數字電路實驗運用的芯片非常多,有555定時器芯片、74LS04反相器芯片等,為了提升虛擬實驗室的逼真感和沉浸式體驗感,構建模型時,是從芯片內部結構找出實驗操作關鍵部件以及部件之間的連接關系,進而提升必要的仿真特性。當構建好功能芯片、實驗箱以及實驗環境等基礎后,開始連接導線,導線電路連接方式為:單機芯片的某兩個端口連接一條立體彎曲的導線,并跨接在兩個端口的中心之上。利用3DMax再建立高度差異化以及旋轉角度差異化的導線,每條導線由若干個錨點確定位置,某個錨點確定導向方向,某個錨點確定導向位置,通過調整錨點就能夠獲得自定義的導線模型,如圖3所示。

圖3 電路導線模型
本次基于數字電路的3D虛擬實驗室的功能開發分組模塊主要分為邏輯抽象、場景視角控制、碰撞響應功能以及界面跳轉功能四個模塊。
本此設計的虛擬實驗室包括10個綜合模塊,這10個綜合實驗模塊是依據現實邏輯規則設計出滿足要求的邏輯功能電路。以實驗的水泵關閉開啟控制電路舉例,首先編寫水泵關閉開啟的控制腳本,將控制攪拌拖動到開關電路模塊中,接通電源后,檢測功能是否生效,然后連線腳本DrawLine,連線狀態改為true,變量isDraw輸出先決判斷條件。在水泵開關控制腳本中,需要多個控制腳本來實現變量的相互控制和相互聯系,比如水位傳感器觸發后,變量由低到高設置為X1、X2、X3、X4,而低于水面的檢測元件分別為A、B、C,傳感器給出高度水平為1;當水面高度高于傳感器,傳感器給出結果為0。按照數字電路原理,水泵的控制公式:

從使用者的視角來控制整個實驗室,此時可通過控制鼠標進入子實驗室,右擊鼠標控制整個實驗室的旋轉和遙控,點擊鼠標中間可實現對整個實驗模型的平移,滾動鼠標滾輪可對實驗室做放大和縮小操作。以上對實驗室模型做的放大縮小、平移、遙控等操作是基于控制實驗室模型的上下限而執行的,為了實現該功能需要運用到相應的代碼。Input,GetmoseButton(1)代表右鍵,可實現對模型的角度控制,(0)表示左鍵,(2)表示中鍵。例如:
If(Input,GetmoseButton(1)){//}檢測到鼠標右擊
X+=Input,GetAxis(“Mouse X”)*xSPeed*0.02f://設定新位置橫坐標
Y-=Input,GetAxis(“Mouse Y”)*xSPeed*0.02f://設定新位置縱坐標
使用基于數字電路的3D實驗室模型設計時,Unity3D工具提供的觸發器碰撞方式是目前最有效的碰撞方式,為了實現碰撞,只需將帶有碰撞觸發傳感器的腳本掛在需要碰撞的模型上。比如在傳感器監測水位上升時,水體碰撞與傳感器碰撞觸發后,此時引發碰撞相應的水體速度發生變化,碰撞傳感器相應控制器接收到信號后會將水泵做開關操作。
碰撞體觸發的代碼表達方式為:
(1)void on mouse down(){}//鼠標按下
(2)if(Input,GetmoseButton Down(0)){}// 鼠標左擊
(3)void on TriggerEnter(Colloder colloisionlnfo){}//發生觸碰
虛擬實驗室系統分為1個主界面和10個子系統界面,其中10個子系統實驗室界面是獨模塊,這樣便于理清思路,降低開發難度。當10個獨立的子系統模塊開發完成后,就要設計者解決10個子系統模塊的界面跳轉和鏈接問題,本次設計的實驗室場景跳轉分為:(1)重啟后重新跳轉到主界面,這是一種實現對實驗場景復位的跳轉命令。當用戶處于主界面“star”場景下,點擊sbr11“restar”,重新跳轉到“star”主界面;(2)系統關閉界面。在主界面與子系統界面右下角設置退出按鈕,點擊退出可退回到當前實驗;(3)點擊鏈接跳轉到其他界面。當實驗在完成狀態下,點擊跳轉,則已經進行的實驗的狀態發生變化,當跳轉到新場景后,再復位時,原有的實驗狀態變量需要達到復位時保存的狀態。
本次設計的基于數字電路3D虛擬實驗室是結合虛擬仿真軟件的開發環境,有效運用3D虛擬現實技術,并探索了邏輯代數知識以及數字電路知識,為用戶開發了一個沉浸式的生動逼真的3D數字虛擬實驗室。從收集素材到導出模型至應用軟件平臺,每個步驟都需要設計者精心設計,才能將虛擬實驗室生動形象展示出來,凸顯視覺、人機以及元素之間的交互,后期通過對實驗環境以及場景部件進行渲染和軟件腳本制作,才實現了電路的還原仿真。