APP下载

基于Unity3D的多模块虚拟系统的设计与实现

2015-12-05赵运生黄海峰徐小明沈卓艺

机械工程与自动化 2015年6期
关键词:脚本虚拟现实软件

吴 景,赵运生,黄海峰,徐小明,沈卓艺

(广东工业大学 机电工程学院,广东 广州 510006)

基于Unity3D的多模块虚拟系统的设计与实现

吴 景,赵运生,黄海峰,徐小明,沈卓艺

(广东工业大学 机电工程学院,广东 广州 510006)

针对在校学生多、实验器材紧缺、实验周期长、实验不安全等问题,结合传统的虚拟现实系统的单一性以及虚拟现实技术的交互性等特点,利用Unity3D等引擎技术设计了多模块的虚拟实验平台系统,能够在虚拟世界中实现多种功能,从而为提高教学工作效率和教学质量作出一定的贡献。

虚拟现实;Unity3D;多模块

0 引言

虚拟仿真实验可以节省资金,突破了传统实验室在硬件设备上的限制,缓解了实验经费不足与实验人数过多的矛盾,优化了教育资源,提高了学生的学习兴趣和学习效率,真正实现了理论教学与实验教学的结合。利用虚拟仿真系统虚实结合、动静相宜等多种教学手段,可以对学生进行有目的、有计划的培养和影响,使学生带着全新的可持续发展理念走向社会。为此本文开发了基于Unity3D的虚拟实验系统,为学习者提供了一个自由的、虚拟的实验操作平台。

1 多模块虚拟系统的设计

1.1 传统虚拟系统的组成

传统的虚拟现实系统包括硬件体系和软件体系[1],其组成框图如图1所示。硬件主要有计算机、输入输出设备,是用来与虚拟世界中的仪器进行交互的。计算机是整个系统的核心部分,其交互效果的好坏主要体现在计算机的配置,如果计算机的配置较低,则渲染的效果比较差;相反,则效果较好。传统的输入输出设备,比如鼠标和键盘,已经无法满足人们的需求,随着硬件技术的发展,近年已经出现了3D头盔、体感游戏、交互眼镜等高端设备。软件主要有应用软件以及数据库,是用来支撑虚拟现实系统的另一个重要部分。实现虚拟现实系统的软件主要有建模软件和实现交互的交互软件,最常用的三维建模软件有Auto CAD、Maya、3DS MAX、Sketch等,除此之外,还有专门的声音仿真、视景仿真软件,如Creator、Creator-Pro、Poly Trans等;交互软件主要是Web 3D系列软件,如EON、Unity3D等。

1.2 多模块虚拟系统的设计

传统的虚拟现实系统比较单一,即一个系统里只实现一种功能。而在现实世界的环境中,比如一个实验室里,同一高端设备,可实现不一样的实验,本文基于这种思想,提出了多模块的概念,即在一个系统中,可以实现多种功能。本文设计的多模块虚拟系统总体框架如图2所示。基于Unity3D的多模块虚拟系统主要包括GUI(图形用户界面)和几个模块。本系统的操作流程是:用户通过输入/输出设备操作Unity3D引擎软件,在图形用户界面选择想要操作的模块,然后进行有序地操作,如果完成该模块的所有流程,则退出,否则继续操作该模块的流程。

图1 传统虚拟现实系统的组成框图

图2 多模块虚拟系统的总体框架

2 多模块虚拟系统的实现

前面已经说过,虚拟系统包括硬件和软件这两部分,本系统是基于Unity3D引擎技术开发的,要想实现整个系统的构建,则需要完成如图3所示的内容。

图3 多模块虚拟系统实现框架

2.1 前期工作

2.1.1 场景模型制作

场景模型的准备非常重要,模型的制作效果决定了整个虚拟系统场景的逼真性。虚拟实验是对真实实验进行模拟或者再现的一种实验模式,如果场景中的模型制作不够逼真,则整个实验效果大打折扣。最常用的三维建模软件有Auto CAD、Maya、3DS MAX、Sketch等,本系统制作模型所采用的软件是3DS MAX。

2.1.2 用户界面制作

用户界面(UI)是指对软件的人机交互、操作逻辑和界面美观的整体设计。好的UI设计不仅能使软件变得有个性有品味,还能使软件的操作变得舒适、简单、自由,充分体现软件的定位和特点。制作图形用户界面所用到的软件有很多,其中Photoshop使用者较多,本文中使用的也是Photoshop软件,其简称为PS,是由Adobe Systems开发和发行的图像处理软件。

在多模块虚拟系统中,图形用户界面的设计主要包括实验标题显示、演示模式、操作模式、步骤提示、标签提示等功能,其中演示模式又包括多模块的演示,同样,操作模式也包括多模块的操作。

2.2 中期工作

经过前期工作准备之后,我们可以得到三维模型、模型贴图以及UI图。中期工作主要是在Unity3D中导入相应的三维模型、模型贴图以及UI图,并编写相应的脚本程序,以便实现场景模型的交互和用户界面的交互。

2.2.1 用户界面的实现

GUI界面的设计很重要,在整个项目工程的开发过程中,第一个映入用户眼帘的就是UI界面。在本系统中,并不是直接采用Unity3D自带的GUI控件,而是采用了NGUI插件来完成本系统整个GUI界面的设计。要想使用NGUI插件,则需要在网上下载该插件,下载之后,导入到Unity3D中,便可以使用。

2.2.2 交互脚本的实现

将场景模型、模型贴图、UI切图导入到Unity3D中,但是这些资源在Unity3D中是静态的,要想使这些资源能够在Unity3D中附有动态行为,则需要编写相应的脚本程序,并附加到相应的三维模型或者UI切图的属性上。

Unity3D中支持3种程序语言编写脚本,分别是JavaScript、C#和Boo,都可以达到同样的目的。因C#语言更加符合Unity3D的编程思想,所以本系统中采用C#语言进行脚本编写。每个编写好的脚本与其他组件用法相同,必须绑定在GameObject中才能执行它的生命周期。在本系统中编写的脚本只绑定在少数对象中,其他的对象使用相应的脚本API来找到,并且执行相应的动态行为即可。

针对多模块虚拟系统,本文建立了7个脚本程序,即ComputerUIControl、EventControl、EventTemplate、ProcessControl、ShowToolTip、StepControl和UIControl。其中,ComputerUIControl主要负责虚拟场景中电脑端UI界面的交互行为;EventControl主要负责场景中对象的鼠标单击、双击、右击事件的处理;EventTemplate主要负责将场景对象的所有属性编写在一个脚本类中;ProcessControl的功能类似于C语言的main函数,学习者可以通过该脚本查看整个系统的执行步骤;StepControl利用数据结构中的队列功能,操作EventTemplate类的对象;UIControl主要负责整个系统UI界面交互的行为;ShowToolTip主要负责场景对象的标签显示。

很多操作者比较喜欢在每个场景对象中绑定一个脚本或者更多的脚本来执行相应的动态行为,但是当场景中有很多GameObject时,则需要绑定的次数很多,因此导致工作量大大增多,后期维护的难度系数增加。本系统采用的脚本设计方式不需要每个GameObject都绑定一个脚本,只需要在程序中编写相应的API找到场景的GameObject,并执行相应的动态行为即可。每个GameObject的属性用一个模板类来设计,这样更加体现了面向对象的思维方式。利用数据结构中的队列方式来操作GameObject,可以有序地操作整个场景中的GameObject,如果在后期执行脚本中出现Bug时,学习者可以很快知道是操作哪个GameObject出现的Bug,这样可以节省很多开发时间,提高开发效率。

2.2.3 碰撞检测技术

虚拟世界中的物体之间之所以需要进行碰撞检测,是因为在现实世界中同一个空间区域内不能存在两个或者多个不可穿透的物体[2]。在Unity3D中实现碰撞检测的方法是在GameObject中添加相应的碰撞器组件,其中碰撞器有多种,常用的是Box Collider(盒碰撞器)、Capsule Collider(胶囊碰撞器)、Mesh Collider(网格碰撞器)、Sphere Collider(球碰撞器)等,可以针对不同的物体形状添加相应的碰撞器。如当用户在与虚拟世界中的三维模型进行交互时,三维模型则需要添加相应的碰撞器组件,这样用户才能拖拽到物体,图4为添加Box Collider。

2.3 后期工作

前期工作以及中期工作的内容完成之后,则整个系统的开发工作大部分已经完成了。如果测试了整个系统的脚本程序没有任何Bug,则可以进行系统的发布工作。Unity3D是一款可以发布多平台的引擎技术,操作者可以按照自己的需求将系统发布成不同平台的应用程序[3]。

图4 添加Box Collider

3 多模块虚拟系统的案例实现[4]

本系统是多模块的虚拟系统,用户选择模式框图如图5所示。当用户选择了操作模式,则可以选择对应的模块进行虚拟实验操作。

图5 菜单选择模式

本文以“沥青混合料低温小梁弯曲实验”为例进行虚拟实验操作。根据“沥青混合料低温小梁弯曲实验”的实际操作流程,制定了虚拟系统操作流程,如图6所示。

图6中,用户可以分别选择演示模式或操作模式。对于初学者而言,应先选择演示模式,通过观看视频操作演示熟悉整个实验的操作步骤。对于熟练的操作者,则可以直接选择操作模式。

在Unity3D中,任何一个完整的项目工程都是由若干个场景组成的,通过这些场景的组合,可将整个工程拆分为若干模块。然后可以利用应用程序即Application类中的方法调用各模块,完成模块之间的切换。完成了“沥青混合料低温小梁弯曲实验”整个过程后的虚拟系统整体风貌如图7所示。

4 结束语

建立多模块虚拟系统,可以使学习者在虚拟环境中开展多功能的实验,可以实现真实实验不具备或难以完成的教学功能,在涉及高危险或极端的环境、不可及或不可逆的操作和高成本、高消耗、大型或综合训练等情况时,提供可靠、安全和经济的实验教学,可拓展实践领域,丰富教学内容,降低成本和风险,开展绿色实验教学。

图6 “沥青混合料低温小梁弯曲实验”虚拟系统操作流程

图7 多模块虚拟系统整体风貌

[1] 李治军.基于Unity3D的船舶舵机舱虚拟现实设计与研究[D]. 大连:大连海事大学,2014:12-13.

[2] 欧阳攀,李强,卢秀慧.基于Unity3D的虚拟校园开发研究与实现[J].现代电子技术,2013,36(4):21-22.

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

[4] 朱柱.基于Unity3D的虚拟实验系统设计与应用研究[D].武汉:华中师范大学,2012:9-11.

Design and Implementation of A Multi-module Virtual System Based on Unity3D

WU Jing, ZHAO Yun-sheng, HUANG Hai-feng, XU Xiao-ming, SHEN Zhuo-yi

(School of Mechanical and Electrical Engineering, Guangdong University of Technology, Guangzhou 510006, China)

With a huge population, a lot of students in school in China, there are the problems of the shortage of experiment equipment, long experimental period, etc. Combined with the singleness of traditional virtual reality systems and the interactivity of virtual reality technology, a virtual experimental platform system is developed by Unity3D engine technology, which can realize a variety of functions in the virtual world, to improve the teaching efficiency and teaching quality.

virtual reality; Unity3D; multiple modules

1672- 6413(2015)06- 0059- 03

2015- 01- 21;

2015- 08- 25

吴景(1987-),男,广东湛江人,在读硕士研究生,研究方向:虚拟系统的设计。

TP391.9

A

猜你喜欢

脚本虚拟现实软件
酒驾
禅宗软件
安奇奇与小cool 龙(第二回)
软件对对碰
数据库系统shell脚本应用
快乐假期
REALITY BITES
风口上的虚拟现实
虚拟现实技术向科幻小说借灵感
谈软件的破解与保护