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