王開宇, 李安琪, 馬 馳, 陳 景, 姜艷紅, 于楠楠
(大連理工大學 電信學部, 遼寧 大連 116024)
基于仿真技術的數字電路3D虛擬實驗室的設計
王開宇, 李安琪, 馬 馳, 陳 景, 姜艷紅, 于楠楠
(大連理工大學 電信學部, 遼寧 大連 116024)

基于虛擬儀器、虛擬實驗和虛擬現實技術現狀,給出數字電路3D虛擬實驗室的架構設計、技術路線和解決方案,利用建模工具3ds Max和現場沉浸感強的游戲引擎Unity3D創建了數字電路3D可交互虛擬實驗平臺,搭建平臺的靜態模型框架、動態交互控制模塊以及實驗操作反饋運行機制。該實驗室具有良好的三維交互性、可操作性、功能完善和場景逼真生動的特點,激發學生創造性和想象力,在教學領域具有潛在的應用價值和開發價值。
仿真技術; 虛擬實驗; 3ds Max; Unity3D
虛擬現實(Virtual Reality)是在計算機仿真技術、計算機圖形學、人機接口技術、多媒體技術以及傳感技術的基礎上綜合發展起來的交叉學科[1],而具有沉浸感的虛擬仿真實驗,則是依托虛擬現實技術而產生發展起來的創新型實驗模式。
與國外虛擬現實技術相比[2],國內虛擬仿真技術雖起步較晚,但是隨著國家對虛擬仿真技術的重視和加大經費的投入,虛擬仿真技術得到了快速發展,我們開發出了自己的虛擬仿真應用系統并在工業電子、機械等生產研發部門體現著強大的優越性[3]。尤其是在軍事模擬、數字化顯示、醫學[4]、商業宣傳[5]、工業研發、教學培訓機構[6]等與人們生活息息相關的產業,逼真的虛擬現象和我們的日常生活已經密不可分。
本文采用建模工具3ds Max建立數字電路實驗環境的三維元素,搭建數字電路實驗所用的桌椅、實驗箱、芯片、信號燈、發光二極管及導線等,同時,將這些模型導入Unity3D進行用戶交互功能編輯,針對數字電路中組合電路和邏輯電路特點,利用VS腳本編輯器對虛擬器件模型進行獨立開發[7]。虛擬實驗的功能設計主要包括電源開關的總體控制、操作單擊各個虛擬儀器碰撞體響應控制、與或非芯片邏輯功能模擬、電路連線次序控制、文本輸出和提示控制、實驗界面跳轉控制、實驗重新開始復位控制及實驗操作者視角控制等各個部分[8]。
1.1 數字電路虛擬實驗室開發流程
設計一套完備的虛擬實驗室需要做到以下 4 個方面:形象的外形外觀、精細的內部結構、真實的電路原理、逼真的仿真現象[9]。其具體開發流程如圖1所示。

圖1 數字電路三維虛擬實驗室開發流程
從初建模型到程序控制,中間的每一步驟包含著精心設計,最為關鍵的環節在靜態建模和組裝交互制作2個板塊。靜態建模就是建立實驗室靜態模型,組裝交互制作是基于Unity3D在靜態的模型上添加自定義組件和動態組件,賦予真實的屬性(這個過程需要掛載C#腳本),使之能夠像真實物體那樣存在,進行元素交互、視覺交互和人機交互。
系統設計選取了10個經典的代表性綜合實驗,分別是:交通燈工作狀態控制電路、水泵啟??刂齐娐?、模11加法計數器、燈光控制邏輯電路、序列信號發生器、光控路燈開關控制電路、叮咚門鈴電路、水龍頭控制電路、雙向移位寄存器、節日彩燈控制電路。數字電路三維虛擬實驗室整體框架設計如圖2所示。

圖2 數字電路3D虛擬實驗室整體框架
1.2 數字電路虛擬實驗室模型的構建
基于3ds Max創作效果較好的3種建模技術:幾何建模、圖像建模,還有將兩者結合起來的混合建模技術[10]。我們所搭建的數字電路虛擬實驗室靜態模型包括:(1)實驗環境部分:實驗桌椅、墻壁、書架、地板、紅綠燈;(2)實驗操作部分:數電實驗箱、功能芯片、數碼管、電路原理顯示屏、電源開關、導線、發光二極管、水箱水泵、繼電器等。
將實驗室從教學樓搬到了計算機上,為了提高質感和視覺效果,實驗中對所需儀器逐一建模生成,并通過渲染器進行烘焙渲染、貼圖,增強真實感[11]。在實驗室場景中不可避免地使用屬性相同的模型,如圖3所示,虛擬實驗環境中的桌椅及書架,需要用到建模技術中的“合并原則”和模型拷貝技術,同時也可多次用到3ds Max中貼圖烘焙、關聯復制、群組等功能,有效降低建模復雜程度。
數電實驗箱是整個實驗操作的中心,該部分的模型包括電阻、引腳端口、二極管、功能芯片、電容、面板層、螺絲釘、電源開關、實驗箱把手等,較為復雜的模型就要利用高級建模工具3ds Max將簡單模型取交集、并集、插集,同時通過旋轉、縮放、拉伸功能調整模型的基本輪廓,再通過復制、組合、打造,合成更為復雜的模型。也可以利用3ds Max自帶的Mesh渲染器、Patch面片以及Nurbs等建模工具構建理想的模型。模型外形塑造是一個較為費時、費力的過程。
圖4中可看到實驗箱上的端口數量十分多,為了減少場景在計算機上占用的資源,所有的端口模型公用一個渲染器,這樣也便于調整模型的顯示效果。在模型設計過程中,可通過鼠標輸入調整視角從三維角度觀察塑造模型,最大程度上將建模過程簡單化。
數字電路實驗用到的功能芯片有很多,包括74LS04反相器、74LS08二輸入四與門芯片、74LS32 兩輸入四與門芯片、555定時器等多種。為了增強實驗的沉浸性,其模型的構建要從芯片內部結構入手,找出實驗操作涉及的關鍵部件及其連接關系,為其添加必要的仿真屬性。
實驗環境、實驗箱及功能芯片等基礎的實驗儀器模型建立好后,就要開始建立電路連接所用的導線,實驗中的電路連接方式為:單擊芯片中某2個端口,引出一條立體的帶有彎曲度導線跨接在2個端口中心。在3ds Max中能較輕松建立高度不同、旋轉方向不同的導線,每個導線由幾個錨點確定,某個錨點確定導線長度,某個錨點確定導線方向,某個錨點定位導線位置,對這幾個錨點恰當調整就能得到理想的導線模型,如圖5所示。圖5中有的導線材質和顏色選擇完畢,有的導線處于加工初期,可以看到導線拐角處采用弧度平滑過渡的形式,確保建模精細,看起來不生硬。

圖4 數字電路實驗箱

圖5 電路導線模型
在已經開發的2個實驗中,實驗一效果顯示部分為紅綠燈邏輯控制,實現起來相對簡單;實驗二效果輸出部分為2個水泵啟停控制實驗,該部分無論內部結構還是外部形體都是相對復雜的結構,在2個水泵之間還有1個透明材質的水箱如圖6所示。上面有3個水位傳感器,用于監測不同水位信號給后臺,從而實現不同水位邏輯控制水泵啟停。

圖6 水箱模型
依托數字電路虛擬實驗室的整體框架,將虛擬實驗開發過程分組分塊,開發出完備功能[12],具體如圖7所示,這樣利于一步步調試糾錯。

圖7 功能設計
2.1 邏輯抽象及功能開發
本系統共10個綜合性實驗,基本上是關于組合邏輯電路的設計:根據實際的邏輯問題,設計出所要求的邏輯功能電路。以已經開發完畢的實驗二水泵啟??刂齐娐窞槔?將編寫好的控制腳本拖動到開關對象上,在電源接通的狀態,當檢測到電路連線成功后,將連線腳本DrawLine中的連線成功標志isDraw置為true,變量isDraw實驗輸出現象出現的先決判斷條件。在水體控制腳本中,若連線成功標志變量isDraw為true,則將布爾變量x1設為true。此過程需多個腳本共同控制完成,通過變量相互控制、相互聯系,每個腳本中的變量之間存在著邏輯關系,水位A、B、C處的傳感器一旦碰撞觸發,輸入變量由低到高設為X1、X2、X3,水面低于檢測元件A、B、C時,傳感器件給出高電平1;水面高于傳感器件時,傳感器件給出低電平0。而輸出變量設為ML、MS,按照數字電路原理,其控制關系滿足公式(1)和公式(2):
(1)
(2)
2.2 場景視角控制的實現
系統采用第一人稱控制視角漫游整個實驗,即通過鼠標左擊進入子實驗。鼠標右擊拖動實現以整個實驗模型為中心的旋轉和搖移,按下鼠標中鍵拖動實現對以整個模型為中心的小范圍平移,滾動鼠標滾輪實現當前正畫面的放大與縮小。當然,無論是平移、縮放還是搖移都要在以實驗箱為中心前提下有一個模型運動的上下限,這也是便于實驗控制的前提。實現該功能的代碼如下,其中Input.GetMouseButton(1)中的1表示右鍵,實現角度控制。若是0表示左鍵,2表示中鍵。
if(Input.GetMouseButton(1)){ //檢測到鼠標右擊 x+=Input.GetAxis(″Mouse X″) * xSpeed * 0.02f; //設定新位置橫坐標 y-=Input.GetAxis(″Mouse Y″) * ySpeed * 0.02f; //設定新位置縱坐標 y=ClampAngle(y, yMinLimit, yMaxLimit); //設定Y方向 var rotation = Quaternion.Euler(y, x, 0); //旋轉角度設定 var position = rotation * new Vector3(0.0f, 0.0f, -normalDistance) + CameraTarget; //設定指定物體旋轉后新的位置 transform.rotation = rotation; //記錄當前物體的旋轉角 transform.position = position} //記錄當前物體的位置
2.3 碰撞響應的實現
Unity3D中總共有3種碰撞檢測方法[13],最為有效的檢測方法是觸發器碰撞,只要將帶有該方法的腳本掛載到待碰撞的模型上即可。又如實驗二中傳感器檢測水位上升過程中,水體碰撞器和傳感器碰撞器碰撞觸發,觸發器碰撞后的響應控制是水體速度發生變化和兩個水泵的啟停。以下是碰撞體觸發的3種代碼表現形式。
(1) void OnMouseDown(){} //鼠標按下
(2) if(Input.GetMouseButtonDown(0)){}//鼠標左擊
(3) void OnTriggerEnter(Collider collisionlnfo){}//發生觸碰
2.4 界面跳轉的實現
為了使數字電路虛擬實驗系統結構更為清晰,將整個系統分為1個主界面和10個子實驗逐個獨立開發,這樣模塊獨立,有利于理清設計思路,降低開發難度。當每個獨立模塊開發完畢,就要考慮各個子場景的相互連接,此時要為各個子場景添加跳轉按鈕及跳轉語句實現界面跳轉,場景跳轉的情況分為3種:重新跳轉到本界面(重啟);系統關閉按鈕;跳轉到其他界面(鏈接)。這3種跳轉命令,將整個實驗系統歸為一個統一有機整體,使實驗操作者收放自如。
(1) 如下面的語句為第一種類型跳轉命令:實現實驗場景的復位。假如用戶處于主界面場景“start”,當用戶單擊按鈕sbr11“restart”時,實驗環境重新跳轉到start場景,可以重新開始子實驗。這是一種最為簡單的界面跳轉命令。
if(GUI.Button (sbr11, ″restart″)) //如果檢測按下按鈕″restart″ {Application.LoadLevel(″start″);} //跳轉到start場景
(2) 主界面和子實驗場景右下角有退出按鈕。子實驗上的按鈕功能為退出當前實驗,返回到主界面,子實驗按鈕設置屬于第三種界面跳轉。這里介紹第二種類型跳轉命令,主界面按鈕的功能:退出整個虛擬實驗系統。具體實現方法如下:
if(GUI.Button (sbr12, ″exit″)) //如果檢測按下按鈕″exit″ {Application.Quit();} //程序關閉,退出界面
(3) 有些實驗情況并非一個跳轉動作這么簡單,如果實驗已經進行或近完成,此時點擊跳轉按鈕,而由于已經進行的實驗操作使一些實驗狀態變量已經改變,則跳轉的同時必須實現場景的復位即實驗變量的復位,因為每跳轉到一個新的場景,意味著重新打開界面,重新啟動,這時就必須仔細考慮場景復位元素有哪些,往往將碰撞檢測標志變量歸為原始狀態就可以達到歸位的效果。
如下面的語句是重啟本場景,可看到除了重新跳轉到shiyan1場景外,還將DrawLine腳本下的isDraw和shift狀態變量重置為false,其中布爾變量isDraw和shift分別代表電路連線成功標志和開關狀態標志??上攵?當重啟場景,電路連線成功標志和開關狀態標志必定是關閉狀態。這屬于第三種類型的界面跳轉:帶有狀態復位的界面跳轉。界面跳轉命令用于虛擬實驗系統使得實驗進行更為靈活、有序,每個獨立的子實驗操作不受其他實驗影響,同時這些獨立的子實驗又構成了一個整體。
if (GUI.Button (sbr, ″Restart″)) { //如果檢測按下按鈕″restart″ DrawLine.isDraw=false; //狀態變量重置 DrawLine.shift=false; //狀態變量重置 Application.LoadLevel (″shiyan1″);} //再進行場景跳轉到″shiyan1″
2.5 數字電路實驗功能的具體實現
完整的實驗邏輯開發包括以下功能的具體實現:主界面和子界面之間的跳轉、子場景中開關的控制、電路連線控制、輸出現象控制。每個具體實驗的輸出取決于不同的輸入狀態,正確的開關及連線等狀態是實驗成功的關鍵。一個完整實驗的開發不僅實現了實驗環境及器材的高度仿真,在此基礎上,改變了傳統的教學模式,提高了學生的學習質量。
針對數字電路實驗特點,結合實驗者對電學虛擬仿真軟件要求,深入探索了數字電路邏輯思想和邏輯代數知識,開發了一個用戶體驗良好的數字電路3D虛擬實驗室。首先對整個系統的開發流程和功能模塊實施明確的整體規劃,搜集了大量素材,整合了多種方法手段,利用建模工具3ds Max創建了仿真度極高的數字電路實驗教學虛擬儀器基本模型。將模型導入Unity引擎,在腳本編輯器Microsoft Visual Studio編寫面向對象的控制腳本,實現對虛擬場景中的儀器實時精確控制。后期再度進行場景渲染與制作,完成了數字電路3D虛擬實驗室的構建,實現組合邏輯電路再抽象與還原仿真,完成了虛擬教學環境中數字電路實驗仿真。
References)
[1] 楊炎濤,張婷,宋琦,等.基于Virtools的虛擬實驗系統構建[J].實驗技術與管理,2008,25(9):92-95.
[2] 王健美,張旭,王勇,等.美國虛擬現實技術發展現狀、政策及對我國的啟示[J].科技管理研究,2010(14):37-38.
[3] 肖曉萍,向中凡.基于虛擬儀器技術的遠程實驗室的研究[J].儀器儀表標準化與計量,2004(3):15-16.
[4] 王振德,王艷春.虛擬現實技術及其在虛擬校園中的應用研究[J].安徽農業科學,2013,41(7):23-32.
[5] 王希凝,黃海燕.基于虛擬現實技術的博物館展示設計[J].大眾文藝,2010(7):76-77.
[6] 翟瑞卿.電子商務教學虛擬實驗室設計與開發[D].山東:山東大學,2011.
[7] 朱柱.基于Unity3D的虛擬實驗系統設計與應用研究[D].武漢:華中師范大學,2012.
[8] 劉新艷.虛擬電工電子實驗室的設計與實現[D].成都:電子科技大學,2014.
[9] 鄒萍.虛擬實驗室中的場景建模研究[D].上海:華東師范大學,2010.
[10] 杜保強,尹飛凰.電子電路虛擬實驗的建構[J].現代電子技術,2004(4):16-18.
[11] 劉嚴坤.運用虛擬技術改革電子線路實驗教學[J].電化教育研究,2002(7):33-36.
[12] 施正寅.電工電子虛擬實驗室關鍵技術研究與實現[D].杭州:浙江大學,2012.
[13] 王星捷,李春花.基于Unity3D平臺的三維虛擬城市研究與應用[J].計算機技術與發展,2013(4):241-244.
Design of 3D virtual laboratory with digital circuit based on simulation technology
Wang Kaiyu, Li Anqi, Ma Chi, Chen Jing, Jiang Yanhong, Yu Nannan
(Faculty Department of Electronic Information and Electrical Engineering Dalian University of Technology, Dalian 116024, China)
Based on virtual instruments, virtual experiments and the virtual reality technology, this paper shows the list architectural design, technical route and the specific solution of 3D virtual experiment. Using 3ds Max modeling tools and the unity3D game engine can create a 3D interactive virtual digital circuit experiment environment, for example, static model, dynamic interactive control module, and the experiment operation feedback mechanism. The laboratory has maneuverability, functionality, lifelike and vivid scene, which can stimulate students’ creativity and imagination, enjoying potential application value and development value in the field of teaching.
simulation technology; virtual experiment; 3ds Max; Unity3D
10.16791/j.cnki.sjg.2017.02.003
2016-10-14
中央高?;究蒲袠I務費專項基金資助(DUT16QY32);遼寧省自然科學基金項目資助(201601523)
王開宇(1973—),男,遼寧大連,碩士,副教授,主要研究方向為混合電路設計以及集成電路芯片的安全性.
E-mail:wkaiyu@dlut.edu.cn.
TP391.9;G482
A
1002-4956(2017)2-0011-05