冲击韧性虚拟仿真实验开发研究*
2021-07-30郭东辰崔权维王亚辉崔岱曦苏浩楠
郭东辰,崔权维,王亚辉,崔岱曦,苏浩楠
(新疆大学 机械工程学院,新疆 乌鲁木齐 830047)
0 引言
传统的力学实验教学不仅较难满足学生独立实验的需求,而且成本较高,具有危险性。伴随着我国高等教育事业的发展,这些现实问题更加严峻[1]。此外,在新型冠状病毒导致的公共卫生危机中,如何消除线下教学阻隔、保证实验教学环节的正常开展是当前亟待解决的问题。
目前应用于教学的虚拟仿真技术已较为成熟。国内已有一定数量的院校开发出与材料力学相关的虚拟仿真实验系统[2]。Unity 3D是一种广泛应用的实时内容开发平台[3],用于创建多种可视化交互场景。在应用Unity 3D环境方面,大连海事大学的度红望等实现了气动虚拟实验的开发[4];石家庄铁道大学的郝孜奇等进行了铁路实训虚拟仿真系统开发[5]。C#可作为Unity 3D的脚本编程语言,在C#编程语言应用与开发方面,中国石油大学的万勇等搭建了面向用户的操作界面,研发出一套管道缺陷类型识别实验系统[6]。此外,实验系统的部分功能依赖于Windows窗体。在Visual Studio(以下简称VS)内可编写Windows Forms Application项目(以下简称WinForms),并进行版面和组件设计。因此,在软件开发过程中将Unity 3D和C#编程技术相结合,能够使系统功能更加完备。以上高校开展的虚拟仿真实验项目特色鲜明,但尚不能成熟应用于边疆高校系统性的力学实验教学中。为解决该问题,本文基于上述技术开发出一套冲击韧性实验虚拟仿真系统。其中软件根据实体教学中获取的数据样本建立数学模型;通过触发按键和动画模拟功能,提高了系统的交互性和体验感[7];实验步骤示范和提示保证了教学的指导作用;选择题模块则可巩固学生的学习成果。系统在各项功能得到实现的同时又不至过于复杂,便于安装和投放至网站,对设备的版本、性能要求低。
1 数学模型的建立基础
冲击韧性实验需要在多个环节获取数据,因此需要确定各个测量项目中数据的合理范围和阈值,建立相关的数学模型。Random类是一种产生伪随机数字的类,采用其构造函数New Random(),可用于生成指定范围内的数值,不需要特别调用其他功能复杂的函数。为保证数据的精确性,还需将数据类型设置为双精度浮点数。应用以上函数可在合理范围内生成试样的外部尺寸、截面尺寸和冲击吸收功数据。
实验中试样的材料分别为塑性材料和韧性材料,故需要两个功能相同的模板分别进行计算。
由于摆锤式冲击试验机不能直接读出材料的冲击韧性,需要将所得的冲击吸收功数据进行处理,故须引入冲击韧性计算的数学模型,即:
(1)
其中:αK为冲击韧性;AK为试样的冲击吸收功;S0为试样缺口底部处的横截面积。该部分无需引入其他函数,直接在代码中输入运算符号即可。
2 场景模型和动画的制作
基于SolidWorks 2016和Unigraphics NX设计视窗软件,通过拉伸、切除和装配等指令建立场景模型。其中试验机支架、摆锤工作半径、刀刃部分和试样均根据标准GB/T 229—2007[8]确定规格,如图1所示。
图1 SolidWorks模型制作环节
为使实验场景更贴近真实环境,借助KeyShot和3D Studio Max进行材质的渲染,如图2所示。
图2 KeyShot中场景渲染界面
为表现实验的动态过程,借助3D Studio Max和Unity 3D进行动画的制作[9],其主要步骤如图3所示。
图3 实验动画的制作流程
3 系统交互性设计
虚拟实验系统的交互性设计高度依赖脚本的编写,脚本是使用特定描述性语言、根据一定格式编写的可执行文件。Unity的脚本化使开发效率得以提高,所以冲击韧性实验系统开发过程中使用C#语言编写脚本,实现演示动画的播放、键盘控制视角、鼠标拖拽物体和旋转观察实验试样等操作。系统交互性开发的实现方法如图4所示。
图4 虚拟实验系统交互性的实现
以场景漫游为例,实现键盘按键控制系统操作的基本方法是:首先对UnityEngine命名空间进行引用, 并创建空物体和摄像机camera,将按键、空物体和摄像机绑定在一起;然后声明变量 m_movSpeed等,限制视角移动速度;绑定Transform、GetAxis组件变量,赋予物体和视角的位置参数并使摄像机跟随鼠标移动;最终使用GetKey组件,绑定键盘“W”、“S”、“A”、“D”和“Space”键,从而实现物体的“前”、“后”、“左”、“右”和“跳跃”动作[10-12]。
除场景漫游之外,系统还具备拖拽实验用具的功能,以及对制作的动画文件进行播放设置,使用户操作时收到虚拟实验现象反馈的功能。脚本代码的编辑既可先在VS中进行然后导入Unity 3D的项目编辑器中,也可直接在Unity 3D内部使用MonoDevelop编辑器编写。MonoDevelop是一种同时适用于Linux、Mac OS X和Windows系统的代码集成开发环境。
实验数据、课后测试部分和实验器材交互相对独立,使用VS创建WinForms应用程序和用户界面,用该工具可直接对窗体的版面和功能进行设计,毋需编辑过多代码。基本的操作方法有拖拽组件、编辑组件属性和功能算法编写等,将按键和文本框同程序联系起来。
将窗体文件编辑完成后,需要通过脚本将这些文件与在Unity中的实验界面对接。Graphical User Interface(以下简称GUI)也称作图形用户界面,是指以图形形式显示的计算机操作界面。引用窗体文件时首先需要将窗体文件转换为.exe格式,然后在脚本中创建一个GUI,再于实验界面中制作一个button按钮,最后在button下写入读取.exe文件的路径。
4 冲击韧性虚拟仿真实验系统的实现与应用
冲击韧性实验虚拟仿真系统各项实验模块功能完整,与线下实验内容保持一致,满足了工程力学教学大纲的需要。该系统可划分为五个部分,如图5所示。
图5 冲击韧性虚拟仿真实验菜单
“实验原理”是实验的理论基础部分,内容介绍了实验目的、冲击吸收功和冲击韧性的概念和测定方法。用户只需点击按键就能开始阅读。
“实验步骤”、“数据处理”、“课后习题”和“生成报告”属于虚拟实验部分,需要学生动手操作。点击“实验步骤”,按照文本框内的提示,通过点击相应的模型触发动画模拟实验过程,例如安装试样、启动试验机等。
试样被试验机摆锤冲断后点击菜单按钮,系统通过窗体给出合理范围内冲击功的随机值。学生获得数据后,点击“数据处理”,将所得数值填入表格中,系统将通过程序自动计算该材料的冲击韧性。实验操作界面如图6和图7所示。
图6 测量试样尺寸
图7 冲击吸收功测量界面
结束实验操作,点击“生成报告”即可导出一份可编辑的实验报告,学生可根据需要进行完善、保存和打印。
实验完成,学生可点击“课后习题”按键进入课后巩固环节,完成相关习题,系统将根据提交结果核算分数并给出正确答案供学生参考。
因某高校冲击韧性实验设备短缺,故于2020-2021学年第一学期,对五个教学班级115名学生使用该软件进行冲击韧性虚拟仿真实验教学,通过提交实验报告和整个实验过程,学生反馈虚拟仿真实验容错率较高,操作更加方便,可以短时间内完成多项数据的处理,一致认为虚拟仿真实验可以结合真实实验,达到混合式实验教学的目的。学生实验报告得分统计如图8所示。
图8 学生实验得分统计图
5 结语
本文在使用C#语言编程实现数据处理功能的基础上,通过Unity 3D平台建立了冲击韧性虚拟仿真的数学模型,完成了场景模型、动画的制作和系统交互性设计,制作的冲击韧性虚拟仿真试验系统具备交互性和沉浸感[13]。通过学生使用该仿真实验平台并反馈,结果表明该虚拟仿真实验可调动学生的学习主动性和学习兴趣,提高学生的动手能力和科研素养,又不失实验本身的严肃性、科学性,同时能够以较低成本达到教学目标[14]。针对边疆高校力学实验设备台件数不足的现状,改变思路,将线上线下的教学方式相结合,对于建设高等教育信息化、探索混合式实践教学模式有较强的指导意义。