吳振銘 張瑞杰* 何富君 吳汶錫 呂 文 毛國安
(東北石油大學機械科學與工程學院,黑龍江 大慶163318)
在汽車構(gòu)造教學中,傳統(tǒng)的文字加圖片的教學方法難以將汽車手動變速器的內(nèi)部結(jié)構(gòu)、裝配關(guān)系、工作原理等表達清楚,學生理解起來比較困難[1],教學效果不理想。如果通過實驗教學,學生親自動手實踐,但是手動變速器結(jié)構(gòu)復雜、沉重,如果操作不當,不但會造成變速器的損壞,甚至引發(fā)自身安全問題。
采用虛擬仿真技術(shù)可以將復雜的結(jié)構(gòu)搬入課堂,這些問題迎刃而解。汽車手動變速器虛擬仿真實驗教學系統(tǒng)構(gòu)建了虛擬環(huán)境,將理論與可操控的模型相結(jié)合,便于學生對手動變速器各個知識點的掌握。用戶在系統(tǒng)中對模型進行操控,可以避免真實操作中的零件損耗與安全問題,而且對模型的剖視和透明化處理也能夠更細膩地展示連接關(guān)系和運動關(guān)系。
根據(jù)教學大綱要求,本系統(tǒng)涵蓋基礎(chǔ)知識、結(jié)構(gòu)功能、工作原理和虛擬拆裝四個教學模塊。
基礎(chǔ)知識模塊中首先提出教學目標,再介紹出變速器概念、分類以及作用。結(jié)構(gòu)功能模塊建立了軸、齒輪、同步器等主要零部件的模型,構(gòu)建了變速器整體裝配模型,介紹各部件的功能。在工作原理模塊中,重點展示各部件的動作過程,變速器的操作及工作過程,在內(nèi)容的組織上通過啟發(fā)式引入,由淺入深地引出對同步器工作原理的教學。接著從細節(jié)回歸整體,對各檔位的換檔原理進行教學。針對教學難點的變速器拆裝過程,本系統(tǒng)在虛擬拆裝模塊中將鼠標與鍵盤操控相結(jié)合,鼠標可以控制觀察模型的角度,鍵盤的方向上下鍵可以控制變速器的拆裝順序。配合文字介紹,學生可對疑點難點反復學習。
考慮到虛擬仿真實驗教學系統(tǒng)所具備的逼真性和良好的交互性,本系統(tǒng)模型均采用3DSMAX 進行數(shù)字化建模。3DSMax具有豐富建模工具,UV 貼圖調(diào)節(jié)功能,制作模型逼真,質(zhì)感表現(xiàn)真實,并且對于動畫的制作也具備良好的兼容性[2]。
為了確保系統(tǒng)運行的流暢,在前期需要較高標準的數(shù)字化建模。所以利用三角網(wǎng)格優(yōu)化算法對每個模型進行優(yōu)化,保證組合后面數(shù)最少。由于3DSMAX 的默認單位為英寸,Unity3D 中的默認單位為米,在前期數(shù)字化建模中還要注意模型的比例不同,在3DSMAX 運用重縮放世界單位功能可以完成模型在平臺之間導入的比例問題。
完成數(shù)字化建模后,為了保證模型在Unity3D 的平臺中有著逼真的質(zhì)感表現(xiàn),在3DSMAX 需要給模型賦予UVWMap 立體Box 貼圖,再調(diào)整好貼圖通道后渲染漫反射貼圖與高光貼圖,模擬出物體自身與光照下的不同狀態(tài)。
本系統(tǒng)的界面采用了科幻界面FUI (Fictional User Interfaces)風格,與車輛的科技感相契合。如工作原理界面,如圖1 所示。為了避免多視覺元素對信息辨識造成干擾,設(shè)計元素均采用扁平化風格[3],在顏色搭配上選擇黑色的背景搭配白色的文本,各視覺元素則使用藍色和橙色形成對比。在布局方面,文字分布、字體大小、按鈕布局在突出教學內(nèi)容的同時還要使用戶感到舒適、便捷,方便控制界面的跳轉(zhuǎn),保持用戶對教學系統(tǒng)的注意力及其興趣。
圖1 工作原理界面
2.4.1 選項組中的元素切換
為了提高系統(tǒng)運行的流暢性,方便用戶選擇,本系統(tǒng)選擇切換標簽的方式,這就涉及到了Toggle 的運用。為保證組內(nèi)同一時間只有一個按鈕可處于選中狀態(tài),需要將多個教學項目按鈕作為不同Toggle 加入同一選項組內(nèi)。用戶使用鼠標點擊Toggle 按鈕,觸發(fā)OnValueChanged 消息,激活GameObiect.SetActive 函數(shù),從而調(diào)用出在RuntimeOnly 屬性中設(shè)置的元素,完成選項組中的元素切換。
2.4.2 模型縮放與旋轉(zhuǎn)
用戶進入虛擬場景,可以使用鼠標進行模型的旋轉(zhuǎn)與縮放,便于360°全方位觀察學習模型的細節(jié)。鼠標滾輪控制攝像機距離變速器的遠近,系統(tǒng)通過Input.GetAxis("Mouse ScrollWheel") 函數(shù)監(jiān)控鼠標的滾輪變化。Camera.main.fieldOfView 未達到設(shè)定范圍時,若滾輪向后移動,fieldOfView則增大數(shù)值,模型在攝像機視野范圍內(nèi)縮小,反之則放大。用戶使用鼠標左鍵控制模型旋轉(zhuǎn)時,調(diào)用相關(guān)函數(shù)Input.GetMouseButton()獲取鼠標x 軸和y 軸的相對位置,通過Input.GetAxis("Mouse")計算出鼠標x 軸和y 軸的偏移量,結(jié)合設(shè)定好的旋轉(zhuǎn)速,利用transform.Rotate(new Vector3(OffsetY,-OffsetX,0)*speed,Space.World)計算出模型旋轉(zhuǎn)角度。
2.4.3 鼠標懸浮顯示部件名稱
為了用戶在能夠裝配情況下區(qū)分各部件的名稱和位置關(guān)系,系統(tǒng)通過OnMouseEnter()函數(shù)判斷鼠標是否懸浮在變速器部件上,若結(jié)果為true,則通過Debug.Log(cube. name)函數(shù)顯示部件名稱(如圖2)。為了實現(xiàn)文本的顯示功能,需要通過style1.fontSize 控制字體大小,style1.normal.textColor=Color.white控制字體顏色,再利用GUI.Label(newRect(Input.mousePosition.x,Screen.heightInput.mousePosition.y,400,50)函數(shù)在特定坐標生成文本UI。
圖2 鼠標懸浮顯示物體名稱
以汽車手動變速器為例開發(fā)的虛擬仿真教學系統(tǒng),從教學目標出發(fā),借助計算機技術(shù)、虛擬仿真技術(shù)模擬展示變速器的結(jié)構(gòu)、工作原理以及虛擬拆裝過程,把枯燥乏味的知識與可動手操作的系統(tǒng)相結(jié)合,可以彌補現(xiàn)有教學的不足,提高教學質(zhì)量。