基于Unity 3D 的化学虚拟实验系统设计与实现
2020-09-29何蔚珊
熊 巍,何蔚珊
(1. 华南理工大学 设计学院,广东 广州 510000;2. 广州美术学院 广东省工业设计创意与应用研究重点实验室,广东 广州 510220)
实验在化学学习中占有重要地位,学习者通过实验获取实际操作经验,并通过实验验证已有结论或是对假说进行探索研究[1]。但在实验室,学习者进行化学实验时会受到较大的时空和资源限制。由于实验人数多、实验经费不足等原因,学生重复进行实验的机会较少,且不宜进行有一定危险性的化学实验。此外,某些实验反应进程缓慢、实验现象不明显[2],上述因素都影响了化学实验的学习效率。
化学虚拟实验室通过设定好的实验场景、实验内容,对现实世界中的化学实验进行模拟[3]。在化学虚拟实验室中,实验者使用交互设备硬件和虚拟实验系统与虚拟仪器进行交互,完成与真实实验相似的各种操作,并对实验现象进行观察和记录[4]。化学虚拟实验室可以弥补因实验教学资源不足带来的问题,并且有效降低实验者亲手开展实物实验带来的风险,提高学生学习化学实验的兴趣和效率[5]。本文基于Unity 3D 平台开发二维化学虚拟实验程序,为学生提供一个虚拟的化学实验操作平台。
1 化学虚拟实验系统设计与开发
1.1 开发平台Unity 3D 介绍
根据开发平台的不同可将虚拟实验分为以下几种:基于Virtools 技术的虚拟实验、基于VRML 虚拟现实技术的仿真实验、基于Cult 3D 技术的化学虚拟实验[6]、基于交互式Flash 的仿真实验等。本文研究的虚拟实验则选择在Unity 3D 平台上开发的仿真实验。Unity 3D 是一款跨平台游戏引擎,可用于创建视频游戏、建筑可视化、实时三维动画等互动内容,而它最常用来进行游戏的开发以及虚拟社区设计。Unity 3D与其他虚拟实验的开发平台对比具有以下优势:良好的平台可移植性和人机交互性,可利用其内置物理引擎模拟实际的物理现象[7]。在Unity 3D 开发环境中,虚拟实验系统采用C#语言在Windows 系统中编写脚本以实现基本功能。
1.2 化学虚拟实验系统的设计
化学虚拟实验系统的设计主要包括:系统框架设计、实验流程设计、交互设计及界面设计。系统框架设计主要涉及用户如何通过智能设备使用虚拟实验室;实验流程设计则是对具体实验的操作流程进行设计;而虚拟实验室的交互设计旨在为用户提供良好的交互体验;界面设计则是对界面元素进行视觉设计。
1.2.1 化学虚拟实验室的系统框架设计
常见的化学虚拟实验系统由设备硬件和软件构成,硬件包括:智能手机、计算机以及输入输出设备(如鼠标、显示屏等)。由于该实验系统采用二维的方式呈现,因此对硬件的配置要求并不高,易于在不同的平台进行推广,化学虚拟实验室系统框架如图1 所示。
图1 化学虚拟实验室系统框架
1.2.2 化学虚拟实验的流程设计
实验者进入化学虚拟实验系统后,选择一个具体的实验进行操作,通过输入输出设备与其中的实验仪器进行交互。在真实的实验室中配有多种仪器以及药品,实验者可以在其中选用合适的仪器进行组合,开展多种实验[8]。为了降低实验者的学习负担,在所设计的虚拟实验系统中,实验者每次只能选择一个实验进行预设好的实验操作,这是因为如果实验者在化学虚拟实验室中能够自主选择仪器组合进行实验,就需要将大量的仪器和药品呈现给实验者进行挑选,这样不利于实验者专注于具体的实验任务,化学虚拟实验流程设计如图2 所示。
图2 化学虚拟实验流程设计
1.2.3 化学虚拟实验的交互设计
虚拟实验的交互设计需要遵从一致性原则,降低用户的记忆负担以及为用户行为提供提示和反馈。为了降低实验者的记忆负担,本设计仅呈现当前实验所需的药剂和器材,避免因摆放过多元素而造成实验者的学习负担。同时本设计中有一块用于展示实验信息的黑板为实验者提供具体的操作指引,帮助实验者更好地完成实验,展示操作提示的黑板如图3 所示。
图3 实验操作提示黑板
图4 常用的实验器皿
1.2.4 化学虚拟实验的场景设计
为了让虚拟实验室提供真实实验室的使用体验,降低学习者的学习负担,在界面设计时参考了真实实验室的场景布置[9]。虚拟实验室中,黑板上的文字选择手写风格的字体,使整体风格更为活泼,也更接近真实场景。仿照传统的实验室布置,实验系统设计了实验台,实验者的所有操作都在实验台上完成。针对每个具体实验,绘制了所需要的实验器皿以及实验药品,包括最为常用的铁架台、烧杯、烧瓶、酒精灯、试剂瓶等(见图4)。在虚拟的实验环境中,设置了离开实验室的按钮,以便实验者遇到中途需要离开的情况下能够退出正在进行的实验。
2 化学虚拟实验开发实例
本节通过介绍过氧化氢加热分解以及在装有蔗糖和水的烧杯中加入硫酸的两个具体案例来论证化学虚拟实验系统开发的可行性。
2.1 过氧化氢加热分解实验的案例开发
在进行过氧化氢加热分解的实验中,首先将圆底烧瓶固定在铁架台上,然后移走装有过氧化氢的细口瓶瓶盖,将过氧化氢倒入圆底烧瓶中,接下来将酒精灯移动到铁架台上,使酒精灯对着圆底烧瓶的底部,点燃酒精灯开始加热圆底烧瓶中的过氧化氢。过氧化氢加热分解实验的案例开发分为三个部分:前期工作、中期工作以及后期工作。
2.1.1 前期工作
前期工作包括设计实验室场景、实验仪器以及用户界面。使用Adobe Illustrator 绘制实验室背景以及实验所需要用到的实验器皿(见图5)。
图5 绘制仪器和实验室背景
2.1.2 中期工作
中期工作主要在Unity 3D 中进行开发,主要包括实现虚拟实验室的交互功能以及制作实验过程中的交互动画。
(1)实现虚拟实验室的交互功能。实验者使用鼠标对实验仪器进行操作控制。首先将需要实现鼠标拖拽移动的元件导入到Unity 3D 中,使用Unity 3D 插件NGUI 中的图集功能将交互元素打包制作一个图集。接下来将图集中的元件置入场景中,将NGUI 自带的UI Drag Drop Item 脚本添加到需要实现拖拽移动功能的元件上,就可以实现鼠标拖拽移动效果。
(2)制作交互动画。在二维的化学虚拟实验室中,许多实验效果是通过动画实现的。在过氧化氢加热分解这个案例中,点击装有过氧化氢的细口瓶后,瓶子倾斜的效果是通过旋转动画功能制作的;圆底烧瓶中过氧化氢溶液液面上升的效果则是通过逐帧动画功能制作的。下面以圆底烧瓶中过氧化氢溶液液面上升的动画制作为例,具体说明交互动画的制作过程。
首先,在AI 中绘制好一系列圆底烧瓶中过氧化氢上升的图片,并打包制作成图集。当实验者点击装有过氧化氢溶液的细口瓶时,细口瓶倾斜,过氧化氢倒出,圆底烧瓶中的液面高度上升。由此可见,控制液面上升动画是否播放的脚本应该挂载在装有过氧化氢的细口瓶上。在细口瓶中添加一个控制动画播放的脚本并命名为controlanim。
在脚本controlanim 中,编写如下代码实现在点击细口瓶时圆底烧瓶中的液面上升这一效果:
public class controlanim: MonoBehaviour {
private bool isPlayAnimation = false;
public UISpriteAnimation waterRise;
public GameObject shaoPing;
public GameObject water;}
接下来就需要接收鼠标的点击事件,以便触发动画的播放。当鼠标点击时,如果动画正在播放,此时点击鼠标就停止动画播放。在另一种情况下,若鼠标点击时,动画没有播放,则将UISpriteAnimation 变为真,鼠标点击后动画就会从不播放变为播放,同时将动画播放的速度设置为每秒5 逐帧,且不进行循环播放[10]。
void OnClick()
if (isPlayAnimation)
{isPlayAnimation=false;
waterRise.Pause();}
else {isPlayAnimation=true;
if (waterRise){waterRise.Play();}
else{waterRise
=sprite.AddComponent
waterRise.framesPerSecond=5;
waterRise.loop=false;}}
2.1.3 后期工作
使用Unity 3D 发布适用于桌面端和安卓智能手机的应用程序。将化学虚拟实验室发布到计算机端只需要在File 中点击Build Setting,选择发布到个人计算机,点击Build 按钮,Unity 3D 会运行生成一个带有.exe的程序[11]。发布完成后直接点开该程序就能运行化学虚拟实验室。而将化学虚拟实验室发布到安卓平台则需要配置安卓的开发环境。首先在Unity 3D 的菜单中点击Edit,选择Preferences 打开Unity Preferences 面板,在External Tools 中,会看到安卓编译环境需要的三个必须具备的软件,点击Download 按钮下载并安装,在安装完成后点击Browse 填入安装的路径。接下来需要对Windows 系统下的Java 环境变量进行配置。完成以上的设置后,就可以对安卓应用程序进行编译。
2.2 将浓硫酸加入到蔗糖中的实验的案例开发
浓硫酸具有极大的腐蚀性和强氧化性,同时反应生成的二氧化硫对呼吸道的健康有负面影响,考虑到实验的安全性,在中学的实验过程中,一般由教师在讲台上演示。将这个实验制作为化学虚拟实验后,能够帮助不能亲手操作的实验者更好地观察实验现象,了解该实验的本质。实验操作流程如图6 所示。首先移走装有浓硫酸的细口瓶的瓶盖,将浓硫酸倒入装有蔗糖和水的烧杯中,然后反应开始,观察反应现象。
图6 实验操作流程
在Unity 3D 中,对该实验案例进行开发,开发过程与过氧化氢加热分解的实验相似,不再累述。实验的界面如图7 所示。
图7 实验界面
3 结语
虚拟实验室与传统实验室相比具有实验成本小、不受时空限制、操作风险低等优点[12],虚拟实验室作为实验教学的补充提高了学习者的学习兴趣与学习效率[13]。本文结合Unity 3D 技术,对虚拟实验系统框架、实验流程、交互方式以及操作界面进行设计,开发实现了两个具体的化学虚拟实验项目,验证了基于Unity 3D 平台进行化学虚拟实验开发的可行性。但是本虚拟实验系统仍有不足之处,如缺乏实验报告填写功能,不能为实验操作者提供实时反馈等。在后续的改进中,将进一步完善本化学虚拟实验系统,为实验者提供更为优良的交互体验。