APP下载

基于Unity3D的机械零件测绘虚拟仿真实验

2023-09-14林适遥张正阳陈曦邱英石奕凡

现代信息科技 2023年13期
关键词:按钮建模实验教学

林适遥 张正阳 陈曦 邱英 石奕凡

摘  要:在“新工科”建设与疫情防控常态化管理的双重背景下,由于实验教学拓展性低,实验设备维护成本高等原因,工科实验中精密测量教学难以达到较好效果,为此提出一种使用虚拟仿真实现操作大型精密设备进行测绘实验的方法。该方法基于Unity 3D、SolidWorks和3Ds Max搭建可视化交互场景,以万能工具显微镜为原型,使用C++、C#脚本语言进行虚拟仿真实验系统的搭建,再进行测试并生成WebGL文件进行B/S架构部署。本虚拟仿真实验操作方便快捷,兼容性强,不仅满足了针对此实验的线上教学需求,而且也对未来虚拟仿真实验设计探索具有重要参考价值。

关键词:虚拟仿真;精密测量;实验教学;Unity 3D;仿真开发

中图分类号:G642;TH742  文献标识码:A 文章编号:2096-4706(2023)13-0046-07

Virtual Simulation Experiment of Mechanical Part Surveying and Mapping

Based on Unity3D

LIN Shiyao1, ZHANG Zhengyang1, CHEN Xi2, QIU Ying1, SHI Yifan1

(1.College of Mechanical and Electrical Engineering, Harbin Engineering University, Harbin  150001, China;

2.College of Power and Energy Engineering, Harbin Engineering University, Harbin  150001, China)

Abstract: Under the dual background of “New Engineering” construction and normalized management of epidemic situation prevention and control, due to low expansion of experimental teaching and high maintenance cost of experimental equipment, it is difficult for precision measurement teaching in engineering experiments to achieve satisfactory results. Therefore, a method of using virtual simulation to operate large precision equipment for surveying and mapping experiments is proposed. This method builds a visual interactive scene based on Unity3D, SolidWorks and 3Ds Max. It takes the universal tool microscope as the prototype, uses C++ and C# script languages to build a virtual simulation experiment system, then tests, and the WebGL files are generated for B/S architecture deployment. This virtual simulation experiment is easy to operate and has strong compatibility, which not only meets the online teaching needs of this experiment, but also has important reference value for future virtual simulation experiment design exploration.

Keywords: virtual simulation; precision measurement; experimental teaching; Unity 3D; simulation development

0  引  言

實验教学是“新工科”背景下培养创新型人才的重要途径[1]。在“新工科”建设与疫情防控常态化管理的双重背景下,传统实验教学逐渐难以适应日益增长的教学需求。工科机械专业在新的背景下面临新的挑战:传统实验室平台和教学仪器以演示操作为主,场面热闹,收效甚微,拓展性弱,难以开展创新性实验;大型精密实验教学仪器价格昂贵,数量有限,维护成本极高,对实验室环境要求严格。在此背景之下,线上实验教学逐渐成为各高校实验教学中必不可少的一部分。

2022年2月23日,教育部高教司发布的《教育部高等教育司2022年工作重点》中表示:应该加大力度继续建设慕课,建设开发一批新形态教程,具有数字化、智能化、多介质、快速更迭的特点,推进“虚拟仿真实验教学2.0”建设,强化“实验空

间”平台应用。由此可见,虚拟仿真实验资源逐渐成为实验教学中重要组成部分。虚拟仿真技术通过计算机对实体实验进行模拟仿真,展现不可视的结构,模拟真实精确的实验,以虚代实、以虚补实,极大程度上降低实验教学成本,优化实验教学资源,增强使用者自主创新意识,进一步提高教学成果[2]。

本文基于Unity 3D等虚拟开发引擎,通过使用C++、C#脚本语言,对机械零件二维测绘的实验项目进行三维建模与人机交互开发,搭建虚拟仿真实验平台,使学生等主体能够更方便快捷地进行机械精度测量的虚拟仿真实验,顺应“新工科”疫情常态化管理趋势,推动线上实验教学的发展。

1  研究背景概述

本文所仿真的核心实验设备——万能工具显微镜,集光学、视觉机器、精密机械等于一体,运用了光栅细分与数字化技术,具有精度高(1 μm)、检测效率高等特点,是平面零件二维检测的必用仪器。它广泛地应用于各企业的计量检测、各级检测和校准试验室以及其他科学研究等部门的计量检测工作[3]。万能工具显微镜属于大型精密仪器,价格昂贵,极易损坏。因此本文提出基于Unity 3D技术构建机械零件测绘实验的虚拟仿真实验。

Unity 3D是由Unity Technologies公司开发的专业引擎,其原本主要应用于游戏开发领域。具有强大的跨平台编辑性;多元组件拓展性;shader粒子、烟雾的虚拟场景模拟功能[4]。其强大功能可帮助开发者更好完成交互场景流程开发。基于Unity 3D技术的万能工具显微镜虚拟仿真实验具有非常好的灵活性和可行性,将万能工具显微镜进行了虚拟呈现。

2  国内外Unity3D技术虚拟仿真系统研究现状

2.1  国外机械设计虚拟仿真研究状况

国外发达国家对虚拟仿真技术较为重视,比我国开始研究的时间要早。目前国外较为成熟的虚拟实验平台主要有:美国奥多明尼昂大学的让用户与实验机通过远程桌面的方式建立连接进行实验的虚拟实验系统;印度理工大学通过动画演示,基于JAVA技术,利用网页脚本实现虚拟仿真器具[5]。2002年美国新媒体联盟就计划把虚拟仿真融入教学实验当中。科罗拉多大学建设了一个结构化的虚拟仿真实验室,让学生在学习的同时发挥自主性和创新性。

2.2  国内机械设计虚拟仿真研究状况

国内的虚拟仿真教学应用较国外略晚,但发展极为迅速。2013年8月,教育部高等教育司印发了《关于开展国家级虚拟仿真实验教学示范中心建设工作的通知》(教育司函〔2013〕94号),明确了虚拟仿真实验教学是高等教育信息化建设和实验教学示范中心建设重要内容,并决定开展国家级虚拟仿真实验教学中心建设工作[6]。2018年6月,教育部认定了首批来自91所高校的105个国家虚拟仿真实验教学项目;2019年3月,再次认定来自全国186所高校的296个国家虚拟仿真实验教学项目[7]。“985工程”和“211工程”以及“双一流”高校應当积极搭建虚拟仿真实验平台,涵盖生物科学、机械、电子信息等多种学科领域,推动智能化、个性化、普适化的实验教学新模式。如今良好的实践教学的重要性越来越凸显,我国也在探索虚拟仿真实验教学的过程中不断创新。

3  虚拟仿真实验设计

本文首先运用软件工程的思想,着眼于用户需求,分析实验模块的实用功能,来实现虚拟仿真实验的开发[8]。虚拟仿真实验开发流程如图1所示,在具体开发时,首先根据实验器具说明书上的结构图和实际观测的结构,将实验器具分解成各个具有独立功能的部件,利用SolidWorks分别将各部件进行三维建模并进行配合,以还原实验仪器。使用SolidWorks得到的模型格式无法直接被导入Unity 3D中应用,因此还需运用3Ds Max将模型转化为可被兼容的格式,导入Unity 3D,再实时调试场景光源照明和贴图效果。场景构建完成后,进行实时运动仿真程序设计,完成系统交互功能设计。系统搭建完成后,对实验系统进行性能测试,最后生成可执行文件和WebGL文件,采用B/S架构部署到服务器上,进一步进行在线测试。由于实验不存在安全事故隐患,学生可以独立地反复完成实验,多次进行仿真实验不仅能够提高操作熟练程度,还能够帮助学生主动分析问题、解决问题,牢固所学理论知识,提高学生的科研素质,克服了传统实验中存在的不安全性、高投入、理论知识难以理解等问题,有效地提升了实验教学的质量[9]。

4  虚拟仿真实验实现

4.1  三维建模及虚拟场景构建

对于Unity3D而言,场景建模一般有两种方式:第一种方式是凭借Unity3D自带的建模工具进行场景建模。Unity3D自身携带的建模工具可以便捷且快速地构建出一些常见的几何体,同时也可以通过设置各项参数模拟出逼真的地形、植物等不规则图形,还可以设置天空盒,但在面对复杂的机械模型时就显得相形见绌,不便于构造精确的几何和装配模型;第二种方式则是凭借其他建模软件构建三维模型,再用与Unity 3D相兼容的格式将模型导入其中使用。由于本项目主要模型为精密的机械部件,Unity 3D自身的建模工具难以将精密的机械部件准确地建模,所以项目方案选择主要面向机械领域的SolidWorks作为建模工具,辅以3Ds Max进行格式转换与编辑优化,严格按照万能工具显微镜的实际尺寸和比例建模,最后用Unity 3D自带的建模工具构建实验室环境,实现对实验仪器和环境的最大限度还原。

本项目以使用SolidWorks与Unity 3D联合建模进行虚拟场景构建为基本思路,构建虚拟场景的流程如图2所示。本虚拟仿真实验的建模包含虚拟仪器建模与虚拟环境建模两部分。

虚拟仪器建模即是对万能工具显微镜及其待测零件进行3D建模。首先对实验仪器万能工具显微镜的主机各部件与待测零件进行实体测绘,结合说明书,在SolidWorks进行建模并装配,确定各部件尺寸与位置关系,导出step格式的模型文件;3Ds Max作为第三方软件将专业模具设计软件建立的模型导入或根据现有模型重新建立新的模型,建模完成后,将模型转换为FBX格式[10],以供导入Unity 3D使用;还可以将模型在Unity 3D中进行进一步的编辑与贴图。

虚拟环境建模即虚拟仿真实验室的场景建模。虚拟仿真实验室的作用主要是增强虚拟仿真实验的真实感,优化使用体验,对具体的交互操作影响较小,且大多可以由简单几何体组成,因此直接使用Unity 3D中自带的建模工具进行搭建。

虚拟设备与虚拟环境分别搭建结束后,将两部分进行整合,并根据要求实时改变灯光、摄像机等参数,完成整个建模过程。

虚拟仪器建模是建模工作中的核心要点。虚拟仿真实验操作过程中,万能工具显微镜的各部件之间具有明显的层级关系,需要保证在一些部件移动时,其余部件保持相对静止。例如:当万能工具显微镜的纵向滑台相对于底座移动时,纵向滑台上搭载的部件如玻璃工作台、顶针架也将一起移动,而横向滑台不移动;当万能工具显微镜的横向滑台相对于底座移动时,横向滑台上搭载的部件例如玻璃工作台也将一起移动,而纵向滑台不移动。此时,我们引入父子层级关系对各个模型加以定义,保证层级关系下的移动可以实现。子物体继承父物体,而父物体不会继承子物体,即子物体跟随父物体运动,而子物体移动时,父物体不随之运动[11]。

4.2  实时运动仿真实现

通过使用Unity3D虚拟仿真引擎完成实时运动仿真。通过将已有的模型和图片进行分类,分别导入到项目程序中,根据要求新建不同场景[12]。系统交互包含以下功能:

1)移动和拖放。移动与拖放是本项目中的基本功能。用户通过鼠标的不同操作来控制模型整体及部分的不同运动,来实现观察实验对象的结构,从而对仪器的内、外部结构有一个清晰明了的认识[13]。例如:用户可以通过持续按住鼠标的右键并移动来实现控制视角变换;通过长按鼠标左键并移动来实现控制模型大小。关键代码如下:

using UnityEngine;

using System.Collections;

using UnityEngine.UI;

public class LongPress : MonoBehaviour

{

private bool isUp = true;

public bool IsUp { get => isUp; set => isUp = value; }

void Start()

{

EventTriggerListener.Get(gameObject).onDown += OnClickDown;

EventTriggerListener.Get(gameObject).onUp += OnClickUp;

}

void OnClickDown(GameObject go)

{

isUp = false;

StartCoroutine(grow());

}

void OnClickUp(GameObject go)

{

isUp = true;

//img.fillAmount = 0f;

}

private IEnumerator grow()

{

while (true)

{

if (isUp)

{

break;

}

yield

return null;

}

}

}

2)面板按鍵与部件名称显示。在每个按钮上添加一个碰撞器,并在OnGUI函数中定义文本框和矩形框。为保证显示整洁,可以将矩形框设定为文本背景,当鼠标指向按钮时,触发碰撞器对应的OnMouseEnter()广播事件,然后由场景控制器脚本监听事件并在按钮附近显示矩形框与相应的描述文本,让交互步骤更人性化。

3)仪器按键交互功能。仪器按键的函数采用面向对象的程序设计思想,为每个级别的功能键设置了包括函数名称、对应资源路径、继承类以及按键的次数等信息的类,然后通过类的调用来实现对函数的逐级调用。

4)数字键盘的输入和显示。使用OnGUI函数创建用来进行测绘图像的标注的输入框。

5)实验操作功能模块。开始进入实验测绘操作后,每个相应的操作都有对应的UI按钮,每个按钮分别设置有碰撞器。当鼠标移动至碰撞器所在坐标范围时,鼠标就会变成一只小手来表示可交互。关键代码如下:

using UnityEngine;

using System.Collections;

using UnityEngine.EventSystems;

public class CursorChange : MonoBehaviour

{

private Texture2D cursorTexture;

private bool IsPointerOver;

void Start()

{

cursorTexture = Resources.Load("CursorImage") as Texture2D;

Cursor.SetCursor(null, new Vector2(43f, 0f), CursorMode.Auto);

IsPointerOver = false;

}

private void Update()

{

if (EventSystem.current.IsPointerOverGame

Object())

OnMouseEnter();

else

OnMouseExit();

}

private void OnMouseEnter()

{

if (!IsPointerOver)

{

Cursor.SetCursor(cursorTexture, new Vector2(43f, 0f), CursorMode.Auto);

IsPointerOver = true;

}

}

void OnMouseExit()

{

if (IsPointerOver)

{

Cursor.SetCursor(null, new Vector2(43f, 0f), CursorMode.Auto);

IsPointerOver = false;

}

}

}

在各項测绘前准备工作都完成的状态下,才能开始测绘操作。给每个可交互的仪器都分别设置一个按钮事件,当点击该按钮时,执行其按钮事件。关键代码如下:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.SceneManagement;

public class Experiment_ScenceControllerScript : MonoBehaviour

{

private Vector3 OriginalHorizental, OriginalVertical, OriginalUpright;

[SerializeField] private float VerticalLimit, HorizentalLimit, UprightLimit;

private GameObject HorizentalPlatform, VerticalPlatform, UprightPlatform;

private GameObject WatcherCamera, QMS3D_Camera, ScopeImage;

private GameObject left, right;

bool showWatcherCamera;

void Start()

{

WatcherCamera = GameObject.Find

("WatcherCamera");

QMS3D_Camera = GameObject.Find

("QMS3D_Camera");

ScopeImage = GameObject.Find

("ScopeImage");

left = GameObject.Find("left");

right = GameObject.Find("right");

showWatcherCamera = true;

left.SetActive(false);

QMS3D_Camera.SetActive(false);

HorizentalPlatform = GameObject.Find("Heng_Xiang_Xi_Tong");

VerticalPlatform = GameObject.Find("Zong_Xiang_Xi_Tong");

UprightPlatform = GameObject.Find("XWJ");

OriginalHorizental = HorizentalPlatform.transform.localPosition;

OriginalVertical = VerticalPlatform.transform.localPosition;

OriginalUpright = UprightPlatform.transform.localPosition;

}

X轴向移动代码如下,其他方向代码类似:

void Update()

{

if (!GameObject.Find("ButtonMinX").GetComponent().IsUp&& HorizentalPlatform.transform.localPosition.z> OriginalHorizental.z - HorizentalLimit)

HorizentalPlatform.transform.localPosition = new Vector3(HorizentalPlatform.transform.localPosition.x,

HorizentalPlatform.transform.localPosition.y, HorizentalPlatform.transform.localPosition.z - HorizentalLimit / 1000);

}

public void On_Button_arrow_right()

{

SceneManager.LoadScene("Main_Interface");

}

public void On_Button_right()

{

if (showWatcherCamera)

{

WatcherCamera.SetActive(false);

ScopeImage.SetActive(false);

QMS3D_Camera.SetActive(true);

showWatcherCamera = false;

right.SetActive(false);

left.SetActive(true);

}

}

public void On_Button_left()

{

if (!showWatcherCamera)

{

WatcherCamera.SetActive(true);

ScopeImage.SetActive(true);

QMS3D_Camera.SetActive(false);

showWatcherCamera = true;

right.SetActive(true);

left.SetActive(false);

}

}

6)聲音效果和语音提示。通过在脚本中定义音频数组并将事先导入Unity3D的音频素材文件拖动到对应的变量中,使仪器和界面上的按钮具有按键音效,让交互更显生动和有反馈感,进入实验操作时有相应的语音操作提示。使用按钮监听事件控制音频播放。

4.3  UI界面设计

虚拟仿真实验的创新性不高,实验的交互方式也较为单一[14]。然而实验的交互操作是实验的核心和重点,而实现交互操作,离不开交互界面的引导。在实验教学过程中,遵循教学规律,设计交互界面不仅需要美观,也需要引导学生进一步思考,使学生在面对全新的实验时能有自己的流程性思维。通过UI设计引导,让学生独立思考完成实验内容。从设计者变为用户,从体验的角度去感受设计的不足[15],从而完善UI设计。

首先要引导学生对实验进行全局把握。对整体软件进行感情化理解,以学生为中心进行设计。了解实验设计的整体思路,结合实验教学大纲设计UI界面,推进线下线上实验相结合,从而便于学生在虚拟的场景中完成实验内容、还原实验设计。交互界面是实现交互功能的直接媒介,因此,交互界面设计的合理性和实用性是实现交互的前提保障。

其次,根据平面设计原理,结合基础美学,运用个人独特的视觉思维进行设计。设计时不仅仅限于美工元素的堆砌,更要注重个人对整个实验的理解,基于教学来对整体实验进行表达。依靠较高的人文素养和较高的表现力与创造力,灵活融入个人思维,运用Unity3D和Photoshop进行UI设计。对整体软件进行感情化理解,以学生为中心进行设计。

机械零件测绘虚拟仿真实验的UI界面设计经历三个时期。首先是,进行反复的线下实机操作实验,以此达到对实验的整体过程以及中途可能出现的情况进行整体掌握,同时记录实验步骤,构思如何进行交互界面的设计来使用户可以更好地进行虚拟仿真实验。其次是,搜集符合实验内容主题的素材资料,并通过Photoshop进行原创素材制作,同时也参考其他虚拟仿真实验的交互界面设计,结合传统平面设计原理,挖掘想象力和创造力。用Photoshop将素材有机结合,用个人视觉设计思维调整视觉设计,使得总体风格统一,完成主界面及其他交互界面的设计。再者,将设计好的基本界面导入Unity 3D中,在Unity 3D商店中购买按钮和音效素材,加以设计创新,给UI界面贴上按钮和响应的音效素材,使得整个虚拟仿真实验过程更加符合实际,也更具有逻辑性。

除了给设计的界面贴上按钮之外,还要给实验仪器模型和实验操作界面贴上按钮,深度还原实验的真实性,实现交互功能时更为快捷简易。最后,与代码进行结合。通过Unity3D的PlasticSCM协同开发功能,将项目各个部分结合在一起,通过代码来执行按钮事件,进行调试,完成交互。良好的视觉效果会提升对用户的吸引,优质的视觉效果会给予用户强烈的视觉冲击。视觉吸引力是在用户的本能层次获得用户的关注,与用户的第一反应息息相关,好的界面设计应该能够瞬间引起用户的注意,并牢牢抓住用户的心理,在视觉体验中达到用户的预期,引导用户采取进一步行动[16]。

5  结  论

本文主要对船舶机械零件测绘实验展开研究,通过对实验仪器进行SolidWorks建模、3Ds Max优化、Unity 3D调整等一系列处理,实现基于Unity 3D引擎、使用C++、C#作为脚本语言开发的B/S架构虚拟仿真实验的设计。如今,虚拟现实技术具有可以实时渲染虚拟场景以及可快捷构建虚拟单元的特点。将Unity 3D等虚拟网络技术与现实实验器具相结合,开发近于真实的虚拟实验系统,提高学生的学习兴趣与学习主动性,使得用户操作时不受时间空间约束,解决实验设备短缺、实验场地不足等问题,可实现资源共享。基于Unity 3D的船舶机械零件测绘虚拟仿真实验的完成不仅仅满足了针对此实验的线上教学需求,而且也对未来虚拟仿真实验设计探索具有重要参考价值,可为其他同类型虚拟仿真实验项目的开发提供借鉴。随着计算机技术的发展,今后现实与虚拟融合逐渐加深,未来应用将更方便,更人性,让用户可以在得到更好体验的同时获取更多的知识。

参考文献:

[1] 刘磊,张嘉鹭.“新工科”背景下工程机械类虚拟仿真实验教学资源建设 [J].实验技术与管理,2021,38(1):140-143.

[2] 张宁,赵毅强,兰馗博,等.“新工科”背景下关于虚拟仿真实验的几点思考和建议 [J].实验技术与管理,2020,37(3):185-188.

[3] 段伟飞,穆亚娟.万能工具显微镜的基本原理和测量方法 [J].价值工程,2018,37(17):239-240.

[4] 陈璜.基于Unity3D、VR等技术的机械设计虚拟仿真系统构建研究 [J].长沙大学学报,2021,35(2):20-25.

[5] 杜月林,黃刚,王峰,等.建设虚拟仿真实验平台 探索创新人才培养模式 [J].实验技术与管理,2015,32(12):26-29.

[6] 季林丹,朱剑琼,徐进.国家级实验教学示范中心十年建设工作总结 [J].实验室研究与探索,2014,33(12):143-146.

[7] 高志强,王晓敏,闫晋文,等.我国虚拟仿真实验教学项目建设的现状与挑战 [J].实验技术与管理,2020,37(7):5-9+14.

[8] 朱惠娟.基于Unity3D的虚拟漫游系统 [J].计算机系统应用,2012,21(10):36-39+65.

[9] 刘佳丹,董曼辰,刘基宏.基于Unity 3D的并条工序实验虚拟仿真系统 [J].丝绸,2022,59(8):48-53.

[10] 李艳娟,王芳.模具装配虚拟仿真实验教学系统的构建 [J].模具工业,2017,43(2):68-71+77.

[11] 高国雪,高辉,焦向东,等.基于Unity3D的焊接机器人虚拟现实仿真技术研究 [J].组合机床与自动化加工技术,2018(3):19-22.

[12] 李晓峰,薛小荣,梁兰花.基于Unity3D的矢量网络分析仪虚拟实验系统的设计与实现 [J].实验技术与管理,2019,36(4):134-137.

[13] 周思洁,杨泽亮,董子和,等.基于Unity3D的气相色谱仪虚拟仿真实验系统的构建 [J].色谱,2016,34(6):621-624.

[14] 侯慧,朱韶华,张清勇,等.国内外高等学校虚拟仿真实验发展综述 [J].电气电子教学学报,2022,44(5):143-147.

[15] 涂浩.用户UI界面设计中的教学吸引力研究 [J].电脑知识与技术,2022,18(14):129-130+147.

[16] 李雪雪,高博.愉悦情绪在交互界面情感化设计中的应用研究 [J].湖南包装,2022,37(5):28-32.

作者简介:林适遥(2000—),男,汉族,广西玉林人,本科在读,研究方向:机械设计制造及其自动化;张正阳(2002—),男,汉族,山西长治人,本科在读,研究方向:机械设计制造及其自动化;陈曦(2002—),女,汉族,广西贺州人,本科在读,研究方向:能源与动力类;石奕凡(2002—),男,汉族,山东济南人,本科在读,研究方向:机械设计制造及其自动化;通讯作者:邱英(1964—),女,汉族,江西抚州人,高级实验师,工学学士,主要研究方向:精密测量。

收稿日期:2023-02-16

基金项目:国家级大学生创新创业训练项目

猜你喜欢

按钮建模实验教学
当你面前有个按钮
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
小议初中化学演示实验教学
电容器的实验教学
对初中化学实验教学的认识和体会
基于PSS/E的风电场建模与动态分析
不对称半桥变换器的建模与仿真
死循环
几何体在高中数学实验教学中的应用
内心不能碰的按钮