颜宗欢 张士杰 黎鑫
关键词:仿真系统;虚拟技术;金工实习;钳工教学
中图法分类号: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评分
在实际的金工实习过程中,实验结束后会对学生的打磨作品进行评分,因此,需要为系统添加类似功能。基于前文的技术,系统已经保存了用户整个操作过程的数据。对学生打分的过程使用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—),本科,研究方向:计算机视觉、计算机科学。