顏宗歡 張士杰 黎鑫
關鍵詞:仿真系統;虛擬技術;金工實習;鉗工教學
中圖法分類號:TP391 文獻標識碼:A
1引言
“鉗工實訓”是機械類各專業必修的一門基礎性實踐課程,旨在提升學生動手操作、創新、解決問題等能力。學生不僅需要了解鉗工(包括鋸削、銼削、劃線等)的基本原理,同時需要對其規范操作進行實踐和掌握。但由于鉗工設備價格較高且某些操作的危險性很高,導致教學往往側重于掌握基本的原理,這嚴重影響了教學效果,也降低了學生的參與度和體驗感,沒能實現培養其實踐能力的目標。
針對以上問題,很多高校已經開始了相關研究與應用。隨著交互性應用的發展,虛擬仿真技術有了突破性的進步,在各行各業都有成功的應用,并取得了相應的經濟效益。
虛擬仿真系統主要包含硬件和軟件2個部分,其中軟件作為控制,硬件作為仿真對象。其優勢在于以鉗工教學作為理論基礎,以虛擬現實的仿真系統作為技術支持,基于Unity軟件構建3D實驗室,連接手機與平臺進行交互,實現與真實環境相似的效果。相對于其他虛擬平臺,本文虛擬平臺在一定程度上更有助于實踐性課程的訓練,同時成為全國高校金工實習首個線上線下共同教學平臺,填補了金工實習線上虛擬現實教學的空白。
2虛擬仿真技術
虛擬現實技術,又稱作虛擬實境技術。該技術是一種能夠創建和體驗虛擬世界的計算機仿真系統(Computer Simulation System)。該技術主要是由計算機技術、傳感器技術、人類心理學和生理學等綜合而成。因此,其能夠向用戶提供視覺、嗅覺、味覺等感知功能,讓用戶完全沉浸在虛擬環境中,實現身臨其境的效果。該技術通過計算機仿真系統盡可能地還原現實環境,讓用戶能夠在虛擬環境中進行交互,并為用戶提供各種信息。
虛擬現實技術包含3個主要特點:交互性(Interaction),沉浸感(Immersion),想象性
3實驗系統設計
3.1系統構思
系統的初步構思:前端開發系統登錄界面的設計,后端建立mysql數據庫,存放用戶信息,利用Unity實現用戶注冊登錄并進入實驗平臺。通過三維建模軟件solidworksUnity構建3D實驗室環境,即操作平臺界面。插入實訓教學的音頻,用戶可以在實驗操作前觀看具體的操作步驟。然后將手機與計算機進行連接,通過移動手機端,實現虛擬工具的移動,從而對元件進行打磨。后端數據庫記錄整個實驗操作過程,實驗結束后,根據建立的數據庫對其操作進行評分,并給出具體的扣分原因。
該系統主要是基于Unity平臺,結合硬件和軟件設計而成的虛擬仿真實驗系統。虛擬仿真實驗系統主要實現以下功能。
(1)通過三維建模軟件solidworksUnity搭建虛擬現實3D鉗工虛擬車間場景。學生可從計算機端進入虛擬現實車間場景,選擇工具,并對虛擬毛坯材料進行打磨加工,連接傳感器與虛擬工具進行匹配,可以實現對鉗工操作的模擬。
(2)虛擬仿真實驗系統能夠提供友好的交互功能,使用手機中的Unity remote APP與unity場景交互實現體感交互功能。學生手持傳感器即可以模擬真實的金工實習操作。例如,學生通過手機模擬銼,即可完成銼削動作。
(3)基于mysql數據庫和Unity上傳的數據,對學生的鉗工操作進行評分。當學生的操作出現銼削角度有誤、速度掌握不當、工件損壞等錯誤時,系統會基于Unity3D數據庫進行判斷,并對其糾正錯誤。實習完成后,系統自動將成品與Unity3D中的標準件進行比對,并完成評分。
3.2設計實現
3.2.1虛擬實驗室場景
為了還原實際車間的真實場景,我們采用了SolidWorks三維建模,對實驗室的環境和工具進行搭建,并利用3D MAX為實驗工具添加對應的貼圖材質。此外,為了有助于后續編程,在開始搭建環境時就對各類模型進行分類。因為實驗操作分為不同階段,各個階段所需要的工具不同,所以在后面的系統設計過程中,需要采用合理的建模方式。例如,交互編程中的平移和轉動會受到創建模型大小的影響,虛擬實驗室的環境優化問題會受到模型細化的影響。
在開發了一些3D場景后,我們創建了虛擬實驗室環境,用戶可以在其中選擇實驗工具。如圖1所示,該場景看起來像是一個簡單真實的實驗室,實驗桌上放有實驗操作的工具。
3.2.2交互界面
完成虛擬實驗室模型的創建后,還需要對該虛擬場景進行交互編程。交互編程主要分為以下2個方面。
(1)在虛擬實驗過程中實驗工具和實驗材料屬于基本屬性的交互編程,如實驗材料的選擇,實驗工具的更換,對實驗器材的打開或者關閉,用戶能夠自由移動工具或者實驗工具,場景中的儀器具有重力等基本屬性。這些功能主要是通過基于Furion框架的.Net6來實現。
(2)學生在虛擬實驗室環境中的每一個操作都將被后端數據庫記錄,以便后續對實驗操作進行打分。實現該功能的方法主要包含以下2種。
方法一,虛擬場景直接和前端頁面通過Javascript完成。具體實現如下:將網頁中嵌入的虛擬場景通過VR.Engineering, Node(“scnptname”")遍歷,原script已經創建了多個字符域(MultStringName),用于接收場景中傳人的字符,因為虛擬實驗中的操作促進script節點中的事件發生,該事件立即產生新的事件。
方法二,將虛擬實驗室和服務器嵌入同一個網頁,通過Java Applet來記錄用戶整個操作數據,實驗操作的變化將受到Java Applet的控制,由Java Applet編程產生的數據或提示信息字符直接輸出在網頁中嵌入該Java Applet頁面的位置上。
其主要代碼如下。
public classApplet(Integer transaction) throws SQLException{
String sql = "delete fromtransaction where transactionid=?";
corin=JDBCUtil.getConnection();
pstmt=conn.prepareStatement(sql);
pstmt.setObject(1,transactionld);
int recordNumber=pstmt.executeUpdate();
pstmt.close();
conn.close();
return recordNumber;
}
3.2.3播放視頻
學生在虛擬實驗中,需要完成鉗工操作。系統添加了實驗的操作視頻,幫助學生理解并掌握整個實驗過程的基本原理。用戶進入實驗室,點擊播放視頻后,可以通過其進行控制播放進度和點擊結束觀看等操作。其具體實現步驟如下。
首先確定打包資源,并且給該資源包命名,然后指定該資源的屬性。由于該資源僅在Victory模式下運行,但在實際的運行過程中并沒有創建該資源的過程,因此需要創建一個文件夾名為“Victory”,而后在此文件夾下打包指定的屬性。在代碼中寫好方法后,將此方法放到Unity的菜單下進行手動調用。其主要代碼如下。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LoadFromFile:MonoBehaviour{
void Start(){
AssetBundle ab=AssetBundle. LoadFromFile ("AssetBundles/wood.unity3d");
//加載資源
GameObject
wallPrefab = ab. LoadAsset ("Wood");
Instantiate( wallPrefab);
}
}
3.2.4評分
在實際的金工實習過程中,實驗結束后會對學生的打磨作品進行評分,因此,需要為系統添加類似功能?;谇拔牡募夹g,系統已經保存了用戶整個操作過程的數據。對學生打分的過程使用Visual Studio為此項目提供的算法,具體的偽代碼如下。
#include
int main(void)
{
int function;
printf(“選擇功能”);
printf(“A.選擇作業工具”);
printf(“B.作業評分”);
scanf(“%d”,&function);
switch( function)
{ case A:int i;
printf("1.銼2.老虎鉗3.銅刷");
scanf("%d",&i);
switch(i)
{casel://調動工具蝶
break:
case2://調動工具老虎鉗
break:
case3://調動工具銅劇
break;}
case B:int i,j;//i表示當前完成作品:j表示標準作品
{if(i>j)
printf("不合格");
else if(i= =j)
printf("合格");
else(i
printf("合格");
}
}
}
4結束語
本文旨在創建虛擬金工實習虛擬實驗室,以支持學生模擬鉗工實習。本文設計并開發了一個虛擬仿真實驗系統,在該系統中,用戶可以使用手機陀螺儀與虛擬物體進行實驗交互。此外,后端記錄用戶操作數據,并根據具體操作給出用戶實驗的分數。
本文提出采用新的技術和工具來創建可視化和交互式的鉗工實驗。本文實驗設計均基于鉗工教學的基本理論,將相關材料在3D模型中實現,并在虛擬系統中進行實驗。通過打磨金屬材料來模擬實驗過程,并通過虛擬現實系統模擬實驗室環境,從而提高學生的實踐能力。這種融合研究并不會帶來真實的實驗室環境的潛在危險,實驗錯誤也可以很容易地被糾正,而且學生可以在不消耗任何真實材料的情況下重復進行實驗。因此,虛擬現實仿真技術可以作為一種廣泛應用的教育工具。
作者簡介:
顏宗歡(2001—),本科,研究方向:計算機視覺、計算機科學。