李永亮



摘 要:針對電子信息工程技術專業《音響技術與應用》課程的“膽機組裝實訓”環節中學生容易因線路錯接、漏接而燒壞電路板的情況,作者基于虛擬現實技術實現了“膽機組裝跨平臺虛擬仿真實訓系統”。利用Unity引擎、采用分層架構、面向對象設計思想,實現了場景漫游、組裝操作、操作情況統計及顯示等關鍵功能。該系統具有良好的跨平臺性,可運行在安卓設備、PC機和HTC VIVE頭盔等不同設備上,能夠將虛擬實訓貫穿于課前、課中和課后環節,使學生在接線實操之前得到充分的訓練,大大降低了錯接、漏接的風險,保障了實訓教學的安全性和高效率。
關鍵詞:虛擬現實;實訓系統;跨平臺;膽機組裝
中圖分類號:TP391.9;G434 ? ?文獻標志碼:B ? ? ?文章編號:1673-8454(2020)12-0088-05
一、引言
“膽機組裝實訓”是高職電子信息工程技術專業課程《音響技術與應用》的一個重要實操環節,在這個環節中,學生需要將前期制作的電路板安裝到機箱中并進行接線操作,由于需要連接的線路繁多,學生容易出現錯接、漏接的情況,加上機箱中存在高壓線路,燒壞電路板的可能性較高,而一旦燒壞電路板就會影響后續教學環節的正常實施。解決這一問題的辦法是給學生更多的練習次數和練習時間,以提高他們的操作熟練度和正確率,從而降低風險。然而由于實訓場所和器材的限制,很難給所有學生提供到實訓場所進行更多練習的機會,而引入虛擬仿真系統是個極佳的選擇[1-4]。
筆者針對上述問題,利用Unity引擎開發了“膽機組裝跨平臺虛擬仿真實訓系統”,該系統不受場地、器材、時間等因素的限制,具有安全、經濟的特點,能夠給學生提供直觀、形象、有臨場感和沉浸感的實訓體驗?;赨nity引擎的跨平臺性[5][6],本系統可在HTC VIVE頭盔、PC機器、安卓Pad、安卓手機等不同硬件平臺上使用,能夠分別服務于課前預習、課堂演示、小組學習等教學場景,讓學生在組裝實操之前得到充分的準備,大大減少實操過程中的風險。
二、膽機組裝跨平臺虛擬仿真實訓系統的設計
1.系統功能
“膽機組裝跨平臺虛擬仿真實訓系統”主要供學生在膽機電路板接線實操之前了解接線過程和方法、熟悉接線工藝,并進行充分的虛擬接線訓練,從而提高學生接線實操的熟練度并降低錯接、漏接的風險。此外,為了能夠檢驗學生的實際掌握情況,還提供了自主考核模式,通過誤操作、退回操作、花費時間等指標,客觀反映學生的操作熟練度。系統的功能模塊如圖 1所示。
其中,“實訓簡介”模塊通過文字描述介紹實訓目的,并提供新手上路環節,讓學生熟悉本系統在PC機、觸屏、VR頭盔等不同平臺中的常用操作方式,比如漫游、安裝、單頭接線、雙頭接線等動作的操作方式;而示范模塊則采用文字描述加動畫的方式,向學生展示實訓操作的過程和注意事項;訓練模塊以提示引導的方式,一步步帶領學生訓練接線過程;考核模塊則不提供任何引導,由學生自由操作,并記錄其誤操作、退回操作、花費時間等信息,從而客觀反映學生對接線過程和方法的掌握情況。
2.系統的軟件分層架構
本系統的軟件分層架構如圖 2所示。為了適配不同的軟硬件運行環境,設計交互層用于向業務層提供與設備無關的交互邏輯和界面渲染邏輯;在業務層中,根據不同業務流程設計五個業務邏輯;在展示層,根據業務需求,將模型、材質、貼圖、動畫等資源構建成五個場景,并設計場景切換邏輯和界面內容更新邏輯。
三、系統關鍵技術的實現
1.跨平臺性的實現
Unity引擎良好的跨平臺性,本可以運行在臺式電腦(Windows、Linux)、安卓Pad、安卓手機以及HTC VIVE頭盔上,但由于不同設備的人機交互方式和顯示器分辨率有很大差異[7],需要在系統的交互層將不同的操作方式進行封裝,并使用合適的界面設置方式。
(1)人機交互跨平臺性的實現
在人機交互方式上,PC機版采用鍵盤和鼠標進行交互,觸屏版采用觸屏進行交互,而HTC VIVE頭盔版則采用配套的手柄進行交互。將各版本獲取的用戶交互操作信號按照不同的交互操作意圖在交互層的各模塊中進行封裝,從而保證了業務邏輯和人機交互接口的解耦。
PC版獲取用戶交互操作信號的方法如下[8]:
鍵盤按鍵:“Input.GetAxis(String)”函數和“Input.GetKey(KeyCode)”函數;
鼠標按鍵:“Input.GetMouseButtonDown(int)”函數和“Input.GetMouseButtonUp(int)”函數;
鼠標位移量:“Input.GetAxis()”函數。
觸屏版獲取用戶交互操作信號的方法如下:
觸點個數:“Input.touchCount”;
觸點對象:“Input.touches”數組;
觸點位置:觸點對象的“position”屬性;
觸點狀態變化趨勢:觸點對象的“phase”屬性。
HTC VIVE頭盔版獲取用戶交互操作信號的方法如下[9]:
手柄Pad操作:“ViveInput.GetPadPressAxis(HandRole)”;
其他按鈕操作:“ViveInput.GetPress(HandRole,ControllerButton)”。
(2)界面顯示跨平臺性的實現
在界面設置上,利用Unity的“多分辨率界面”技術[10],使交互界面可以自動適配不同分辨率的顯示設備,無論是手機屏幕還是觸屏電視,都可以正常顯示交互控件并響應用戶的操作。而在HTC VIVE頭盔版本中,則將交互界面渲染在虛擬場景中,讓用戶以“虛擬屏幕”的方式進行界面操作。具體的設置項及其取值如表 1所示。
2.虛擬場景漫游功能的實現
本系統的操作對象是膽機的機箱和電路板,允許用戶在安裝和接線操作過程中在虛擬場景中自由漫游,以便用戶在各個角度和合適的距離觀察機箱和電路板的細節并進行操作。漫游的類型包括平移、旋轉和復原,其實現邏輯如表 2所示,其中PC機版和觸屏版的觀察者為虛擬場景中的主攝像機,HTC VIVE頭盔版的觀察者為虛擬場景中的“HTCViveCameraRig”對象。
在所有版本中,用戶都可以通過界面上的“復原”按鈕使視角回到默認位置;而不同版本的平移、旋轉操作方法則各不相同:在PC機版中,用戶利用鍵盤上的W、A、S、D四個鍵進行左右前后平移操作,利用Q、E兩個鍵進行上下平移操作,在鼠標右鍵被按下時利用鼠標位移實現旋轉操作。在觸屏版中,用戶通過長按屏幕的四個邊緣實現左右上下平移操作,利用雙觸點實現前后平移操作,利用單觸點實現旋轉操作。在HTC VIVE頭盔版中,用戶利用左側手柄的Pad鍵實現左右上下平移,Trigger鍵實現前平移操作,Grip鍵實現后平移操作,利用右側手柄的Pad鍵實現旋轉操作。
3.對象操作交互邏輯的實現
在本系統中,對象操作有電路板安裝、機箱到電路板接線、雙絞電源線焊接、板間線路連接四種,其中“電路板安裝”和“機箱到電路板接線”采用從界面拖拽圖標到虛擬場景中指定位置的操作方式,“雙絞電源線焊接”和“板間線路連接”則采用連續點擊相關連接點的操作方式。
(1)“從界面拖拽圖標到指定位置”操作方式的實現
以“電路板安裝”為例,用戶的具體操作過程為:待安裝的電路板以圖標的形式顯示在界面上,用戶利用鼠標、觸點或者HTC VIVE手柄的引導線將電路板圖標拖拽到對應的機箱位置上釋放,從而完成安裝操作;在被拖拽過程中,圖標所經過的待安裝位置會高亮顯示,從而提醒用戶是否將圖標釋放在該位置。
本系統采用四種對象共同實現上述操作方式:“EventManager”對象用于管理用戶操作過程中相關事件的訂閱和觸發,以保證其他三種對象能夠協同工作,“DragableImage”對象用于管理圖標的顯示狀態,“RayCastOrigin”對象用于判別圖標對象被拖拽過程中所對準的虛擬對象,“DragableImageTarget”對象用于管理待安裝位置對象的高亮顯示狀態。
“EventManager”對象用單例模式實現,并作為組件掛載在場景管理器對象上,其管理的事件為“UnityEvent”類的對象,各事件的觸發者和訂閱者信息如表 3所示,事件觸發的條件在觸發者的狀態轉換圖中進行說明。
“DragableImage”對象以Unity組件的形式掛載在每一個可拖拽圖標對象上,當處于“等待”狀態時圖標圖像在界面上正常顯示,當處于“拖拽中”和“對準中”狀態時圖標圖像變為半透明并“克隆”出一個圖像實時顯示在鼠標位置,當處于“已設置”狀態時圖標圖像上增加一個紅色的勾并不能再被拖拽,其狀態轉換圖如圖 3所示。
“RayCastOrigin”對象用單例模式實現并作為組件掛載在場景管理器對象上,其默認狀態為“等待”,在接收到“開始探測”事件后,創建出一個“Ray”類型的射線對象并進入“探測中”狀態,在“Update()”函數中利用射線對象實時探測圖標所對準的位置從而在三個子狀態中切換,具體的狀態轉換圖如圖 4所示。
“DragableImageTarget”對象以Unity組件的形式掛載在每一個待安裝位置對象上,這一類對象為半透明的方塊,當其“DragableImageTarget”組件處于“等待”和“已設置”狀態時隱藏,而處于“被正確對準中”和“被錯誤對準中”狀態時則顯示?!癉ragableImageTarget”對象的狀態轉換圖如圖 5所示。
(2)“連續點擊相關連接點”操作方式的實現
在用戶進行模擬“雙絞電源線焊接”和“板間線路連接”時需要“連續點擊相關連接點”的操作方式。其中,“雙絞電源線焊接”是放大板上的操作,為了避免干擾,需要將接入的三組電源線以正負雙絞線的方式焊接在電路板對應的焊盤上;而“板間線路連接”則是將不同電路板的某兩個點用導線連接。用戶的具體模擬操作方式為:利用鼠標、觸點或者HTC VIVE手柄的引導線連續依次點擊同組電源線的多個焊盤,或者連續依次點擊需要用導線連接的兩個點,從而觸發雙絞線或者導線的連接動畫。通過這樣的虛擬操作,使用戶熟悉正確的焊接或者連接位置。
本系統采用“MouseTarget”“Node”“Connector”三種對象來實現上述功能。“MouseTarget”和“Node”以組件的形式加載在焊盤對象或者連接點對象上,其中“Node”組件只加載在確實需要連接的對象上。“Connector”則以組件的形式加載在雙絞線或者導線對象上,并將具有“Node”類型的數組用于存儲雙絞線對應的焊盤對象或者導線對應的連接點對象?!癕ouseTarget”用于控制操作焦點移入移出焊盤對象時的高亮顯示狀態,“Node”用于記錄焊盤的設置狀態并根據狀態呈現不同外觀形態,“Connector”用于判定一組雙絞線的連接操作是否完成并控制雙絞線連接動畫的播放。以一組雙絞線的成功連接過程為例,各相關對象的活動圖如圖 6所示。
4.操作統計和顯示功能的實現
在訓練模塊和考核模塊中,本系統對用戶的操作情況進行統計,主要統計操作耗時、錯誤操作次數、放棄操作(退回)次數三種指標,并將統計結果實時顯示在界面上,通過這些指標可以客觀反映用戶進行虛擬接線操作的熟練程度。
上述功能主要通過“EODetector”“SceneManager”“UIManager”三個對象實現,這三個對象均為單例并以Unity組件的形式加載在場景管理器對象上,其中,“EODetector”組件對象用于探測用戶的錯誤操作以及放棄操作,“SceneManager”組件對象則具有計時和統計功能,“UIManager”組件對象用于管理統計數據在交互界面上的更新顯示并響應用戶的界面操作。
(1)操作統計功能的實現
統計并顯示錯誤操作次數的過程為:“EODetector”對象通過訂閱“EventManager”對象所管理的“用戶釋放”事件,以及Unity提供的對象的“OnClick”事件,結合相關對象的狀態來判定是否發生錯誤操作,并由“SceneManager”對象進行錯誤操作次數累計,再由“UIManager”對象進行顯示數據的更新。
統計并顯示放棄操作次數的過程則為:“UIManager”對象探測到用戶點擊“放棄本次操作”按鈕后由“SceneManager”對象進行放棄操作次數累計并對場景進行“后退”處理,再回到“UIManager”對象進行顯示數據的更新。
上述兩個過程的活動圖如圖 7所示。
(2)計時功能的實現
操作耗時由“SceneManager”對象利用Unity的協程來實現,每個協程等待時間為1秒鐘,第一個協程在練習或者考試開始時啟動,在每個協程結束前更新耗時計數并啟動下一個協程,同時由“UIManager”對象進行顯示數據的更新。
四、系統實現效果及應用效果
1.系統實現效果
本系統運行之默認顯示的是主界面,用戶可以通過菜單選擇進入“實訓簡介”“示范模塊”“練習模塊”“考試模塊”等功能模塊。其中在“實訓簡介”模塊中以文字方式對實訓內容進行介紹,還可以進入“操作指引”場景熟悉系統中的常用操作;“示范模塊”以動畫的方式展現虛擬接線的正確過程;“練習模塊”中為用戶提供操作提示,并由用戶親自操作;“考試模塊”中則沒有任何提示,完全由用戶自行操作。圖 8為考試模塊中不同場景的效果展示。
2.應用效果
本系統已經在我校電子信息工程技術專業《音響技術與應用》課程中得到實際應用,根據任課教師和學生的反饋,取得了如下效果:①提高了實訓的安全性和效率。通過虛擬訓練,學生在接線實操之前已經熟悉了線路的正確接法,過去時常發生的錯接、漏接現象極少發生,電路板燒壞的情況更是不再發生。②改善了教學效果。由于本系統可以在多種設備和操作系統上運行,任課教師可以更加靈活地設計相關教學內容的教學方案,讓學生在課前、課中、課后都能夠有虛擬訓練的機會,并反饋訓練的結果,使任課教師的教學更有針對性。③提高了學生的學習興趣。本系統的應用使教學內容更加具備趣味性,能充分吸引學生,并激發他們相互競爭,獲得更好的虛擬訓練成績。
本文闡述了“膽機組裝跨平臺虛擬仿真實訓系統”的設計和實現方法及其使用效果,其中重點闡述了跨平臺性、場景漫游、對象操作、操作統計及顯示等關鍵功能的實現方法。通過該系統的應用,提高了“膽機組裝實訓”教學環節的安全性和效率,改善了教學效果,提高了學生的學習興趣。本文所總結的關鍵技術具有較高的普適性,可以推廣到其他仿真實訓系統的研發工作中。
參考文獻:
[1]張勇亮,張均東,張志政.三維船舶輪機虛擬實驗室的設計和實現[J].計算機應用與軟件,2019,36(1):171-175.
[2]范志鋒,徐敬青.基于虛擬現實技術的末制導炮彈檢測訓練系統[J].計算機應用與軟件,2019,36(2):139-143.
[3]姚亮,邵曉冬,姜旭.基于Unity3D的烹飪專業虛擬仿真實訓系統研究[J].計算機仿真,2019,36(9):371-375.
[4]楊晨彬,高瞻.基于WebVR的醫學體數據可視化[J].計算機應用與軟件,2019,36(5):101-107.
[5]呂圣卿,陳一民,黃晨,等.一種基于網絡的并行渲染和跨平臺同步展示系統[J].計算機應用與軟件,2017,34(10):113-117.
[6]楊壹斌,李敏,解鴻文.基于Unity3D的桌面式虛擬維修訓練系統[J].計算機應用,2016,36(S2):125-128.
[7]谷學靜,張凱峰,郭宇承,等.基于Unity3D的ASD兒童認知教育系統設計與實現[J].系統仿真學報,2019,31(5):893-900.
[8]尹大偉,張熙若,李歡歡,等.基于Unity3D的虛擬校園漫游系統及其關鍵技術研究[J].軟件工程,2019,22(9):17-19.
[9]張陽,楊長強,鄭慧平.基于Unity3D與VR頭盔的虛擬現實體感游戲開發[J].軟件導刊,2017,16(8):119-122.
[10]陶瑞,任鴻翔.基于HTC VIVE的船舶固定水滅火模擬訓練系統[J].中國航海,2018,41(3):76-80+90.
(編輯:魯利瑞)