APP下载

基于Unity3D的化学虚拟实验系统的设计与实现

2020-11-13叶诗慧

微型电脑应用 2020年10期
关键词:化学学习虚拟实验

叶诗慧

摘要:针对高中化学实验操作条件有限、危险性大、实验教学内容深度广度不够等问题,结合Unity3D技术设计开发一套应用于高中化学实验教学的虚拟实验系统。参照高中化学实验大纲的要求,将虚拟实验系统划分为三大功能模块:实验演示模块、三维操作模块、操作考试模块。其中关键技术采用粒子系统特效技术、模型贴图纹理处理技术、视频调用技术、人物漫游技术以及碰撞检测技术,并且通过3个功能模块对学习者进行虚拟实验操作训练,多通道、多角度提高学习者的手脑协作能力,进而激发学习者的学习兴趣。

关键词:Unity3D;化学学习;虚拟实验

中图分类号:TP311

文献标志码:A

DesignandImplementationofChemicalVirtual

ExperimentSystemBasedonUnity3D

YEShihui

(SchoolofComputerandInformationTechnology,NortheasternPetroleumUniversity,Daqing163318,China)

Abstract:Aimingattheproblemssuchaslimitedoperationconditions,highriskandinsufficientdepthandbreadthofexperimentalteachingcontents,thispaperdesignsanddevelopsavirtualexperimentalsystemappliedinhighschoolchemistryexperimentalteachingbycombiningUnity3Dtechnology.Accordingtotherequirementsofhighschoolchemistryexperimentoutline,thevirtualexperimentsystemisdividedintothreefunctionalmodules:experimentaldemonstrationmodule,threedimensionaloperationmoduleandoperationtestmodule.Keytechnologiessuchasparticlesystemeffectstechnology,themodelmaptextureprocessingtechnology,videocallsandroamingandcollisiondetectiontechnologyareused,andthroughthethreefunctionalmodules,thevirtualexperimentoperationcantrainlearnerswithmultichannelthinkingandimprovethelearnerscooperationabilityofhandsandbrain,inturn,stimulatelearnersinterestinlearning.

Keywords:Unity3D;chemicaltraining;virtualexperiment

0引言

化學是一门以实验为基础的科学,实验仪器陈旧、实验药品缺少、实验室开放时间少,以及一些高危操作影响着实验在学校中的展开。为缓解这一教学现状,化学虚拟实验的引入是非常必要的。相比于传统实验,化学虚拟实验能够使知识从抽象变具体、降低实验成本、避免安全隐患等。虚拟实验尤其是桌面式虚拟实验相较真实实验成本较低,便于及时更新,学习者能随时随地使用实验所需资源。通过使用虚拟实验,可以完成对虚拟物体的使用操作,获得与真实实验相似的现象与结果,从而掌握在现实环境中相同的知识与技能,甚至能掌握现实中由于安全因素不能进行操作的实验内容,为实验教学提供了一种新的方式与思路。虚拟实验在不同类型的化学实验教学中的作用有很大的差异对于一些安全性高、现象明显的感知实验、验证实验等采用虚拟实验教学可以起到模拟、渲染、立体、交互的辅助作用;对于毒气性质、易燃易爆等化学实验教学有着不可替代的作用,其安全、高效且能给实验者带来声光、温度等多重感官刺激,甚至可以使实验效果优于真实实验[1]。

1总体设计

1.1系统设计思路

本系统的主要目的是使学习者具有更加真实的模拟现实的学习环境,既能促进学生的学习兴趣还能提高学生的技能水平,从而完成学习目标,掌握相应知识点。通过检索相关资料与教材,深入了解相关化学实验操作过程,并结合迪克凯里教学设计理论对系统进行开发。首先在进行开发前,对学生的学情与学习偏好进行分析,确定学生当前水平和要达到的预期效果;其次对学习目标进行分析,通过解读高中化学实验大纲中对实验的要求及课程要求来确定学习目标;最后分析学习内容和学习者,结合化学实验的基本操作流程对系统进行设计。在本化学虚拟实验系统中,学习者可以通过观看演示动画、动手操作交互动画等方式熟悉实验流程及实验用品,掌握实验过程中的反应原理,并通过三维考试模块对所学知识进行评价。

系统总体设计使用两层逻辑架构模式,虚拟实验部分采用的是三维交互式虚拟环境开发框架,选择具有跨多种平台优势的开发软件unity3D进行开发;系统管理部分采用的是统一的管理框架。开发过程要依据真实的化学实验过程,首先对化学实验分类以及实验过程呈现方式进行设计,并编写对应的脚本;其次利用3DMAX软件建立模型导入unity3D中根据脚本制作交互动画;最后将构建好的资源汇总到高中化学虚拟实验系统中。本系统选取“氯气的实验室制法”、“铜与浓硫酸反应”、“乙醇的消去反应”为主要实验对象进行设计开发,每个实验都包括三个不同的功能模块,以保证学习者能够顺利完成学习目标。如图1所示。

1.2功能实现

本系统通过3DMAX制作模型,将生成的FBX格式的模型导入到unity3D中进行交互场景的搭建[2]。场景中人物、地板、墙壁、实验仪器等相关工具需要放置在合适的位置以便后续交互动作的开发。根据学习者的需要使用本系统时,分别进行系统的:实验演示模块、三维操作模块、操作考试模块三种功能模块进行练习。

(1)实验演示模块

本模块以视频方式呈现,此模块在三维操作模块的基础上进行开发。实际操作三维操作模块,并将这一操作过程用EV录屏软件录制下来。录制视频时鼠标设置为不显示光标;画质级别设置为“原画”;文件格式保存为.mp4其他均为默认设置。这样既保证了视频的清晰度,又方便后续的剪辑。将录制好的视频导入到Premiere中进行剪辑,去掉多余的视频片段,再将实验过程完整的串联起来。视频中伴随语音讲解,将配好录音导入Premiere中,并将语音正确对应到合适的位置,说明实验的仪器、方法、用量等。最后利用AE进行片头、片尾的制作。在使用此系统时首先接触演示模块能够让使用者对所学知识有一个初步的了解与掌握,对后续的学习起到先导作用。

(2)三维操作模块

三维操作模块使用3DMAX与unity3D技术开发出可以进行实时交互的可操作三维交互场景。在此功能模块中通过线性脚本控制实现交互动画,每一个脚本对应一到两个动画。学习者使用时可以通过每个步骤文字提示内容进行操作,文字提示功能通过在脚本中加入publicstringnextText语句,并在unity3D前台输入文字提示内容。操作过程中,将需要使用的工具放置在屏幕右侧UI中,UI界面中的图片在Photoshop中修改美化,放在相应的资源包中,如图2所示。

新建ToolControl脚本,并设置UI个数,设置完成之后,将对应的图片拖拽至ToolControl脚本中使用。当操作需要使用工具时,相应的工具高亮提示。除此之外在本模块中实现了真实化学实验中产生的各种效果,包括火焰的燃烧、气体的产生以及各种实验试剂颜色的变化,增加本系统的真实感。

(3)操作考试模块

操作考试模块与三维交互模块开发过程一致,增加计分的功能。在原有脚本中增加添加elseif条件判断语句,判断鼠标点击的物体是否正确,若鼠标点击正确则得分,并将得分计入到总分中,若点击错误不得分,错误原因系统调用XML文档在结果页面中显示出来。此功能模块用来对学习者的学习成果进行检验,代码如下。

if(

gameObject.GetComponent().isDone==true&&

StaticVar.iconName=="jjd"&&

gameObject.GetComponent().isConfirmButtonClick==true&&gameObject.GetComponent().objectHit!=null&&isDone==false)

{

ClickObj=gameObject.GetComponent().objectHit;

if(ClickObj.name==stepClickObj.name)

{

transform.GetComponent

().curruntText=curruntText;

script_xuesheng.true_false[0]=true;

jiujingdeng.SetActive(true);

Cursor.lockState=CursorLockMode.Locked;

StartCoroutine(wait());

}

elseif(ClickObj.name!=stepClickObj.name)

{

transform.GetComponent

().curruntText=curruntText1;

script_xuesheng.true_false[0]=false;

jiujingdeng.SetActive(true);

Cursor.lockState=CursorLockMode.Locked;

StartCoroutine(wait());

}

2關键技术

2.1火焰粒子系统特效技术

粒子系统是unity3D中的重要部分,粒子是个动态产生的过程,粒子模块通过粒子曲线编辑器使使用者创建出各种各样的粒子效果。在很多化学实验中都需要有加热的操作,本系统中为实现火焰的真实效果,采用的是unity3D自带的Particlesystem资源[3]。并在Renderer处的Material和Trail选择ParticleSmokeWhite这个贴图。然后再调整相关的属性,duration设为1,startliftime设为1,startspeed设为2,startsize设为3。火焰底部位置较小,因此在shape这个地方将angle设为0,radius设为0.3。接下来设置火焰的形状,火焰的形状是

底部小、中部大、顶端小的特点因此设置sizeoverlifetime来调整其变化的曲线,调整时要注意观察火焰的实时变化,以期调到满意的形状[4]。除此之外火焰分为内焰、外焰,内焰的颜色一般为蓝色,外焰的颜色为黄色并接近于透明状态,因此在coloroverlifetime中把火焰底部的颜色设置为蓝色,中间部分为黄色,同时调整火焰上方的透明度为0,使火焰在颜色上呈现出过度的效果,这样火焰效果更为逼真,如图3所示。

2.2模型贴图纹理处理技术

建模时应对模型材质进行选择,为了避免文件量过大因此,一些模型无需制作过于精细,所以采取贴图的形式,不仅能够增加模型的真实感,又可以减少模型的面数,保证模型最基本的效果,提高交互场景的运行速度。如场景中墙壁、窗户、地板等无需展示细节的模型,就选择通过贴图的方式来赋予材质。对于一些透明玻璃的实验器材,如烧杯、温度计、酒精灯等,则需要在3DMAX中选择材质编辑器中的(p)Phong对材质的不透明度设置为20,高光级别设置为80,光泽度13,柔化0.19,并将材质赋予给目标物体。

2.3视频的调用技术

三维操作模块中,使用者可以通过动手操作来完成化学实验的完整流程。包括实验发生装置的连接、气密性检验、反应物的检验等。如铜与浓硫酸反应实验中将湿润的石蕊试纸通入集气瓶中,试纸颜色褪色这一步骤首先通过动画的形式呈现,动画结束后,再调用真实世界中对应的实验操作视频。这样不仅能够规范使用者的实验操作手法,也能够加深使用者的印象。首先在Assets中新建StreamingAssets,放入想要调用的视频,新建Canvas放置视频及相应控件,然后通过Maincamera中相应代码对视频进行调用,代码如下。

voidStart()

{

GameObjectcanvas=GameObject.Find("Canvas");

video=canvas.transform.Find("Video").gameObject;

videoContrl=video.GetComponent();

}

voidUpdate()

{

if(gameObject.GetComponent().isDone==true&&

gameObject.GetComponent().isConfirmButtonClick==true&&

gameObject.GetComponent().objectHit!=null&&

isDone==false)

{

video.SetActive(true);

videoContrl.OnPlayButton();

}

if(videoContrl.playOver==true){

video.SetActive(false);

videoContrl.playOver=false;

transform.GetComponent

().curruntText=nextText;

gameObject.GetComponent().isConfirmButtonClick=false;

isDone=true;

gameObject.GetComponent().objectHit=null;

Cursor.lockState=CursorLockMode.None;

}

}

2.4物漫游技術

场景中选取第三人称视角,并将在此场景中主摄像机跟随unity3D自带人物移动来改变视角,因此当控制人物行走时,摄像机的视角也会发生相应的变化。设置方式如图4所示。

将第三人称视角拖拽到主摄像机控制目标中去。操作完毕后运行系统,人物漫游实现的主要功能包括:按W、A、S、D键,人物分别向前、左、后、右方进行移动,从而更换人物视角[5]。

2.5碰撞检测技术

当漫游角色在试验场景里进行交互操作时,与实验场景里的模型发生碰撞是不可避免的,本系统的试验场景中主要模型有实验台、座椅、立柜以及各种实验仪器为了避免碰撞时发生“穿墙”现象,漫游系统必须能及时检测到碰撞并做出响应,有时还需要通过碰撞检测技术来辅助规划运动路径,避免发生碰撞。Unity3D中内置了6种碰撞器,分别是boxcollider(盒子碰撞器)、spherecollider(球体碰撞器)、capsulecollider(胶囊碰撞器)、meshcollider(网格碰撞器)、wheelcollider(车轮碰撞器)、terriancollider(地形碰撞器)。这些碰撞器的基本思想就是通过对包裹住要发生碰撞的模型的几何体进行碰撞检测,从而判断物体模型是否发生碰撞[6]。本系统中采用的是BoxCollider(盒子碰撞器)。因此在模型上建立BoxCollider,并将其大小调整至物体大小相等或相似的长方体,作为试验场景中的墙壁、实验桌、椅子等。例如:在本系统中,当人物走到实验桌前时,若没有给实验桌加BoxCollider的效果,人物就会直接穿过实验桌,加上BoxCollider后,人物就会在实验桌前面停止,不会发生“穿墙”的现象。

3总结

本文通过使用3DMAX和unity3D技术实现化学虚拟实验系统,该系统能够更加真实的模拟现实实验环境、易于操作并且方便使用者进行反复练习、弥补传统实验教学的不足。在普通高中的实际教学中使用后发现,本虚拟实验系统不仅有助于授课教师进行实验的讲解与演示,更能极大程度的吸引学生的注意力、提高学生的学习兴趣。此外,本系统在用户界面设计及交互设计方面还有不足之处还需进行改进,将其建成一个更良好的实验系统。

参考文献

[1]伍婷,许苏宜,张亚鹏,等.虚拟实验技术在化学实验教学中的应用与实践[J].化学教育,2017,38(5):5861.

[2]张嘉璐.基于Unity3D的VR化学虚拟实验开发[J].电脑编程技巧与维护,2018(6):169170.

[3]孙宁,刘贤梅,田枫,等.基于Unity3D的机械清罐应急处置系统的设计与实现[J].微型电脑应用,2018,34(8):79.

[4]火焰粒子效果-CSDN博客[EB/OL].(加上载日期/浏览日期)https://blog.csdn.net/DDghsot/article/details/80488036.2018.05.28.

[5]张典华,陈一民.基于Unity3D的多平台虚拟校园设计与实现[J].计算机技术与发展,2014,24(2):127130.

[6]朱喜基,冯振辉.基于Unity3D虚拟校园漫游碰撞检测的研究[J].江苏科技信息,2018,35(11):6668.

(收稿日期:2019.08.17)

猜你喜欢

化学学习虚拟实验
虚拟现实技术在初中物理实验教学中的应用
论如何提高高中化学成绩
基于Xenserver的虚拟网络实验平台建设
初三学生化学实验能力的培养策略
中职化学学习中常见问题及解决对策研究
激发初中生学习化学兴趣的研究
电子设计大赛与电工电子设计实训课程改革
如何提高高校学生化学学习兴趣
基于虚拟实验技术的单片机课程实践教学改革研究
三维虚拟实验系统研究探讨