馮立艷, 關鐵成, 何世偉, 李宗巖
(華北理工大學 機械工程學院,河北 唐山 063210 )
隨著高校教育體制的深入改革,招生人數(shù)的不斷擴大,實驗室的設備及規(guī)模已經不能滿足日益增長的教學需要[1]。伴隨計算機技術、信息技術、網絡技術、虛擬現(xiàn)實技術的發(fā)展,虛擬實驗受到了廣泛重視,同時網絡教育作為一種新興的教育形式得到了快速發(fā)展[2-3]。因機械設備內部結構復雜,反復拆裝易造成零件損壞、人員受傷等,故開發(fā)機械學科的虛擬實驗系統(tǒng)有著廣闊的市場前景[4-5]。
國內有些學者對機械學科的虛擬實驗平臺做了研究與開發(fā)。吳青鳳等[6]開發(fā)了基于VB的減速器虛擬拆裝平臺,彌補了傳統(tǒng)減速器拆裝實驗的不足,但該平臺拆裝演示部分,依靠調用SolidWorks保存的AVI格式視頻,學生無法任意控制拆裝演示的速度和觀察角度。王世超[7]提出了在 HTML5 標準下建立水輪機虛擬裝配系統(tǒng),但該系統(tǒng)的拆裝約束存在一些缺陷。鄔宗鵬[8]基于Virtools 軟件開發(fā)減速器虛擬拆裝實驗教學平臺,但拆裝操作性較差。
本文以傳統(tǒng)的真實實驗為依據(jù),將三維建模軟件SolidWorks、編程語言C#、虛擬現(xiàn)實開發(fā)引擎Unity3D有機集成,采用虛擬現(xiàn)實(Virtual Reality,VR)和增強現(xiàn)實(Augmented Reality,AR)技術,開發(fā)了形象逼真、便于操作的機械基礎虛擬實驗平臺,達到了虛實結合、以虛促實的預期目的,徹底解決了實驗設備短缺,實驗場地和實驗時間受限等問題。
圖1為機械基礎虛擬實驗平臺的總體框架及開發(fā)流程。由于Unity3D軟件平臺不具備構建復雜幾何模型的功能,故采用三維建模工具 SolidWorks進行幾何建模,然后將幾何模型導入 3D Max中,利用3D Max進行貼圖、烘培和材質渲染,構建逼真感強的模型,將模型保存成 FBX 格式導入到 Unity 3D 的資源文件夾 Assets中。在Unity3D虛擬現(xiàn)實平臺中,需要根據(jù)交互和運動控制的需求,構建虛擬模型的層次數(shù)據(jù)結構,對每個模型的父子關系進行設定,構建復合邏輯的模型樹層次關系。實驗的具體操作和場景需通過C#編程來實現(xiàn)。
圖1虛擬實驗系統(tǒng)的整體框架圖
目前,該平臺包括減速器(一級圓柱齒輪減速器、二級展開式圓柱齒輪減速器、二級同軸式圓柱齒輪減速器、蝸輪蝸桿減速器、圓錐圓柱齒輪減速器共5種)的虛擬裝拆、發(fā)動機的虛擬裝拆、平面連桿機構的創(chuàng)意設計及虛擬仿真等。每個虛擬實驗均分為認知和實戰(zhàn)兩部分。認知部分用于引導學生自主學習,以掌握實驗的具體操作方法,為實戰(zhàn)做準備。包括實驗目的、注意事項、實驗指導等。
當今比較流行的虛擬仿真教學開發(fā)軟件主要有Virtools、Quest3D、LabVIEW、Eon和Unity3D等。雖然前4種也能開發(fā)虛擬仿真實驗平臺,但只能發(fā)布成單機版或網頁版,而且維護難度較大,應用范圍受到極大限制[9]。而Unity3D技術則使用面向對象技術,相對簡單的就能夠開發(fā)出虛擬仿真教學系統(tǒng),同時該開發(fā)引擎還支持Windows、Mac、Wii、iPhone、Android、Web網頁等平臺[10]。開發(fā)者可以任意選擇所需要發(fā)布的平臺,從而實現(xiàn)只需開發(fā)一次,就可實現(xiàn)在單機、網頁、移動終端及其他平臺同時使用的要求[11]。
Unity3D支持的編程語言有JavaScript、C#和Boo。用戶可以根據(jù)需要選擇編程語言,腳本之間可以相互調用[12]。JavaScript是用戶端腳本語言,相對Java語言比較簡單,編程效率較高;C#是一種面向對象的、運行于.NET Framework之上的高級程序設計語言,符合人的思維習慣,適合編寫復雜程序[13-14]。綜合考慮,本課題采用C#編程。
Unity3D幾乎支持所有主流的3D模型文件格式,例如.FBX、.OBJ等格式,在3D Max、 Maya等軟件中制作并導出的模型文件,添加到項目資源文件夾中,Unity3D會自動刷新資源列表,模型就會出現(xiàn)在Assets面板中并供使用[15]。
二級斜齒圓柱減速器主要包括3類零件,即軸類(高速軸、中間軸、低速軸等)、盤類(齒輪、套筒、封油盤等)和箱體類(箱蓋、箱座)[16]。采用SolidWorks,使用拉伸、旋轉、挖切和打孔等諸多造型方法構建了準確的各零部件三維模型,其主要部件的三維模型及編號如表1和圖2所示。
拆卸是裝配的反過程,無論是裝還是拆,都必須遵循一定的順序,就如同必須先裝上軸承端蓋,才能擰上其固定螺釘一樣。減速器的裝配順序如圖3所示,分別為高速軸組件、中速軸組件、低速軸組件、箱蓋組件、箱座組件和總體裝配的路徑規(guī)劃圖。圖中,P表示零部件,A是組件,e是用字符串表示的裝配條件。
為了讓初學者提前了解減速器的拆裝順序,需要在虛擬實驗平臺中實現(xiàn)自動拆裝的功能,而Unity 3D引擎外部插件iTween 能方便地實現(xiàn)該功能。它主要是運用數(shù)值插值的原理,處理模型從起始點到結束點之間的運動軌跡。如圖4(a)所示,為自動拆裝場景,通過按鈕控制減速器的裝配與拆卸,通過攝像機的位置和旋轉角度實現(xiàn)多角度觀察自動拆裝的過程。
表1 零部件名稱及編號
(a)高速軸(b)中速軸(c)低速軸(d)總裝圖
圖2 減速器的三維模型
(d) 低速軸
(f) 總體裝配
圖3減速器的裝配路徑
下行為用于實現(xiàn)物體移動的代碼:
iTween.MoveTo(GameObject,iTween.Hash("position", Vector3, "time", float1, "delay", float2));
這里,GameObject—執(zhí)行命令的對象;Vector3—對象運動的目標位置;float1—從原來位置移動到目標位置的時間;float2—開始移動時的延遲時間。
虛擬場景主要分為虛擬裝配和虛擬拆卸兩個場景,拆卸邏輯與約束是裝配的逆過程。故只介紹虛擬裝配場景設置的技術關鍵。
在裝配場景中進行手動裝配時,除了基準零件(圖3中,每個拆裝路徑圖的第一個零件為基準零件,分別是P5、P6、P20、P22、P33和A5)外,其余零件都需隱藏。零部件的安裝位置靠碰撞器控制。如圖4(b)所示,根據(jù)軸上零件的位置,給軸添加a、b、c三個橢圓碰撞器,左側的封油盤和軸承被碰撞器a包圍、中間部位的鍵和大齒輪被碰撞器b包圍、右側的封油盤和軸承被碰撞器c包圍,橢圓的尺寸控制著裝配時的精準位置,即只有把待裝配的零部件放在橢圓尺寸以內時才被認可。跟隨鼠標移動的零件,是通過實例化得到的,如圖4(c)所示。當主攝像機發(fā)出的射線碰到碰撞器上(鼠標點擊到碰撞器上),對應的零件則從隱藏模式變成顯示模式,跟隨鼠標實例化的零件就此消失。
從主攝像機發(fā)射出到鼠標點擊位置的射線代碼為:
Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);
在場景中,必須使實例化的零件,能靈活地跟隨鼠標在屏幕上移動。需要將世界坐標轉化成屏幕坐標,采取的辦法是:在sence視圖中添加一個很小Cube,并將其放到坐標為(0,0,0)的位置。其主要代碼為:
screenSpace=Camera.main.WorldToScreenPoint(GameObject.transform.position);
CompPos=Camera.main.ScreenToWorldPoint(newVector3(Input.mousePosition.x,Input.mousePosition.y,screenSpace.z));
這里,screenSpace—屏幕坐標;CompPos—世界坐標;GameObject—Cube;
從頭到尾進行各個零部件的虛擬裝配和拆卸,來模擬替代真實的裝配或拆卸過程。通過虛擬裝拆,不僅觀察設備的外部形態(tài),更重要的是分析其內部結構,深入研究其組成和結構特征、配合關系,思考其設計意圖。若拆、裝順序不對,則不能往下進行,并彈出錯誤警示。
如圖3所示,e1—e35是裝配條件,比如在圖3(f)中,A1裝配完畢,再裝A2需要滿足條件e26,才可裝配成功。每一次的裝配成功都會為相關字符串重新賦值,所賦值也恰巧是下一組的裝配條件。保證了裝配實驗的有序操作。
(a)(b)(c)(d)
圖4虛擬實驗場景的功能圖
整個零件拆裝過程中,菜單欄上方會有對應的二維碼圖片切換,通過增強現(xiàn)實技術開發(fā)的手機APP掃描該二維碼,對應的3D零件可在手機屏幕顯示,可對其任意旋轉,多角度觀察,如圖4(d)所示。
通過Vuforia官網獲取Vuforia SDK和制作Database,并將其導入Unity3D中,將Unity3D中的三維零件與對應的ImageTarget結合,即可發(fā)布對應的手機APP,有時手機攝像頭掃描圖片的時候,會出現(xiàn)攝像頭不能準確識別二維碼圖片,需要開發(fā)自動對焦攝像頭的腳本文件 ,其腳本的主要代碼如下:
CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
因Unity3D可發(fā)布多個平臺,所以整個平臺也可以在手機上運行,解決了學生異地操作等問題。
把當今最流行的VR技術與AR技術融入到機械基礎實驗教學中,將SolidWorks、C#、Unity3D有機集成開發(fā)的近于真實的虛擬實驗系統(tǒng),提高了學習興趣和學習主動性,方便異地學習與操作,解決了實驗設備短缺,實驗場地不足,學生動手操作危險等限制條件,可實現(xiàn)資源共享,有力促進機械原理及機械設計的實驗教學。本文詳細闡述了開發(fā)過程中遇到的關鍵問題及解決方法、各種軟件的集成方法等,這些技術可為開發(fā)虛擬實驗系統(tǒng)的同仁們提供參考。
參考文獻(References):
[1]鄭鑫,張曉潔.虛擬實驗室立體化教學資源平臺建設[J].實驗室研究與探索,2014,33(8):109-111.
[2]孫澄宇,許迪瓊,湯眾.在線虛擬實驗在建筑教育中的技術應用方案討論與效果評估[J].實驗室技術與管理,2017,34(1):10-15.
[3]羅曉東,尹立孟,王青峽,等.基于虛擬仿真技術的實驗教學平臺設計[J].實驗室研究與探索,2016,35(4):104-107.
[4]張青,趙洪利,郭慶,等.航空發(fā)動機虛擬裝配培訓實驗平臺的構建與實現(xiàn)[J].實驗室研究與探索,2016,35(5):97-100.
[5]郭芮,蔣明,鄭劼恒,等.基于Unity3D的加油車虛擬訓練系統(tǒng)設計[J].機械設計,2014,31(3):84-87.
[6]吳青鳳,江帆,李東煒.基于VB的減速器拆裝虛擬實驗系統(tǒng)的開發(fā)[J].實驗室技術與管理,2014,31(1):104-106.
[7]王世超.基于HTML5的水輪機虛擬裝配系統(tǒng)研究[J].煤礦機械,2016,37(3):46-48.
[8]鄔宗鵬.Virtools軟件在開發(fā)減速器虛擬拆裝實驗教學平臺中的應用[J].銅陵學院學報,2015(2):109-110.
[9]趙蔚,段紅.虛擬現(xiàn)實軟件研究[J].計算機技術與發(fā)展,2012,22(2):229-233.
[10]王娜,徐魯雄.基于Unity3D的計算機網絡虛擬實驗室建設研究[J].實驗室技術與管理,2016,33(9):242-245.
[11]修春華,孫秀娟,苗坡,等.基于Unity3D的虛擬礦山漫游仿真系統(tǒng)設計與實現(xiàn)[J].金屬礦山,2015(4):262-266.
[12]王文潤,王陽萍,雍玖.基于Unity3d的鐵路信號設備虛擬現(xiàn)實系統(tǒng)研究[J].鐵道標準設計,2016,60(8):144-146.
[13]季錚,謝予星,王玥.基于 Unity 3D的虛擬測量實驗系統(tǒng)[J].測繪通報,2016(10):97-100.
[14]吳亞峰,索依娜.Unity5.X3D游戲開發(fā)技術詳解與典型案例[M].北京:人民郵電出版社,2016.
[15]楊壹斌,李敏,解鴻文. 基于Unity3D 的桌面式虛擬維修訓練系統(tǒng)[J].計算機應用,2016,36(S2):125-128.
[16]馮立艷.機械設計課程設計[M].北京:機械工業(yè)出版社,2016.