APP下载

基于虚拟展厅的学生作品展示系统设计与实现

2014-04-29孟庆轩刘洋赵海峰

计算机时代 2014年10期

孟庆轩 刘洋 赵海峰

摘 要: 在分析学生图像作品与动画作品展示方式的基础上,基于虚拟现实技术与Unity3D开发工具,设计并完成了一个基于虚拟展厅的学生作品展示系统。重点论述了利用3ds Max进行虚拟展厅的模型制作和利用Photoshop进行虚拟展厅的贴图制作,利用Unity3D平台完成虚拟展厅的第一人称自由浏览的交互式开发,并对整个开发流程与关键技术进行了探讨。

关键词: 虚拟展厅; 学生作品展示; Unity3D; 自由浏览

中图分类号:P209 文献标志码:A 文章编号:1006-8228(2014)10-41-03

Design and realization of virtual student works show system based on virtual exhibition

Meng Qingxuan, Liu Yang, Zhao Haifeng

(Beijing Morden Vocational and Technical College, Beijing 101300, China)

Abstract: After analyzing the current students' image and animation works display mode, based on virtual reality technology and Unity3D development tools, students' works show system is designed and realized based on the virtual exhibition. Both the models making of virtual exhibition by 3ds Max and corresponding textures making by Photoshop are introduced in detail. The interactive development for the free browsing of virtual exhibition from first person is elaborated using Unity 3D. Some of the key points of technique during the whole development process are expounded.

Key words: virtual exhibition; student works show; Unity3D; free browsing

0 引言

随着计算机技术的不断发展,虚拟现实技术已经广泛应用到了各个领域,通常用于对某一真实场景的虚拟或还原,并可以根据设计者的意图完成真实世界中无法的操作或展示[1]。

现阶段我计算机应用技术专业的学生已设计并完成了若干优秀的专业作品。对于静态作品,如Photoshop作品可以通过打印展览的方式进行展示,而对于动画作品,如:flash动画作品、3ds Max动画作品,并不能采取这种方式进行展示。针对以上问题,本文介绍了以Unity3D为技术手段采用虚拟现实技术实现的一个虚拟展厅,实现对学生的图像作品与动画作品的第一人称交互式自由浏览。

1 Unity3D介绍

Unity3D是由丹麦Unity Technologies公司开发的多平台的游戏开发引擎,是一个全面整合的专业游戏制作工具。它的最大特性就是出色的夸平台性,用Unity3d制作的游戏软件或虚拟现实系统发布在PC、Mac、Android以及微软、任天堂、索尼这些公司推出的主流家用游戏机平台上,一经推出就受到了游戏和虚拟现实开发人员的青睐,成为近几年发展极快的一款3D制作引擎。此外,Unity3D也可以用于开发基于虚拟现实技术的展示系统,并广泛应用于旅游、医疗等很多领域[2]。

2 系统概述

本系统的虚拟展厅设计分为四个部分:学校与计算机专业展示部分、flash动画作品展示部分、3ds Max静态与动画作品展示部分、indesign静态作品展示部分。

根据学生的作品风格,设计了展厅的外观与布局。所实现的功能主要有:①对于虚拟展厅场景第一人称的自由浏览;②学生动画作品的交互式浏览;③每个场景的搭建与载入。

在具体开发过程中,首先对于展厅的模型部分采用3ds Max进行建模,之后对于展厅的贴图采用Photoshop进行制作,最后将展厅模型、展厅贴图、要展示的作品导入到Unity3D中并进行特效添加与交互式开发和最终系统的发布。

3 系统实现

3.1 展厅模型的制作

由于Untiy3D系统中的单位是米,并且Unity3D与3ds Max的系统单位比例为100:1,所以为了便于以后将模型导入到Unity3D中进行系统开发,首先将3ds Max软件的系统单位比例与显示单位比例都设置为厘米,之后根据展厅的设计进行建模,在建模时重点在于把握模型的尺寸比例,一定要与真实世界的尺寸比例一致。在建模时需注意以下几点:①为了提高系统的运行效率,需要尽量减少模型的面数并删除模型中看不见的面与多余的顶点;②模型之间不能出现相互重叠的面与破面;③根据需要调整模型轴心;④模型的命名与材质的命名都必须是英文名字[3]。

3ds Max做好的模型需要借助插件导出为FBX格式,导出时需要注意设定向上轴为Y轴,这主要是因为Unity3D中的默认轴Y轴是向上的。

3.2 展厅贴图的制作

展厅贴图的制作与展厅模型的制作一般同步进行,为了尽可能地优化系统性能,展厅的许多细节需要通过贴图来表现,例如:展厅的地板纹理都是通过贴图来进行刻画的。对于模型的贴图一般需要通过3ds Max进行UV展开,之后在Photoshop中完成贴图的制作。为了提高系统性能,需要尽量减少贴图个数即使用量。这是因为在最终导入到Unity中时,每一个材质球都使用一张贴图。贴图数量越多就需要越多的材质球进行材质表现。同一个场景模型中,所需的材质球越多,系统性能越差。

为了要减少贴图的使用量,需要将贴图进行合并。合并的原则是同一材质的贴图可以合并到一起,此时只需要制作模型的漫反射贴图即纹理贴图,对于反射与折射等效果需要在Unity3D中完成。例如:可以将学生的静态作品分类合并到一张贴图中,也可以将展厅墙体的贴图合并到一张贴图中。

3.3 展厅的交互式开发

⑴ 展厅场景漫游主要实现了基于键盘的控制,能让用户通过第一人称的方式在虚拟展厅的场景中自由浏览。其中,可控制的第一人称游戏物体是由一个具备了Character Controller组件、Audio Source组件和Camera子物体的游戏物体来担当,通过脚本来实现它的自由行走。具备Character Controller组件可以控制此游戏物体的移动、具备Audio Source组件可以让用户实时听到场景中的音效与学生动画作品的声音[4]。

系统实现了用户点击键盘上的A、D进行旋转;点击键盘上的W或光标控制上键向前移动;点击键盘上的S或光标控制下键向后移动;点击光标控制左键与光标控制右键向左和向右移动。其中Rotate虚拟键对应键盘上的A、D,Vertical虚拟键对应键盘上的W、S、光标控制上键、光标控制下键,Translate虚拟键对应光标控制左键、光标控制右键。最终第一人称的移动通过CharacterController组件的SimpleMove()方法来完成,第一人称的旋转通过Transform组件的Rotate()方法来完成。

⑵ 学生动画作品的交互式展示主要实现了用户控制的第一人称游戏物体对动画作品碰撞的检测与动画的播放。

采用数组的形式存储学生的flash作品,通过触发器的碰撞检测确定碰撞到的场景中的物体,并通过循环检测碰撞到的物体对应的flash作品,通过鼠标点击图片按钮来控制学生flash作品的播放、暂停与停止。在播放学生flash作品的时候不进行场景的渲染并禁用键盘操作以实现全屏放映,停止学生flash作品的播放时再次渲染展厅场景并回复键盘的操作。

⑶ 场景切换。

本系统共包括三个场景:系统开始场景、系统关于场景与展厅场景。系统首先进入系统开始场景,之后通过鼠标点击界面按钮的方式进入其他两个场景。

其中的每一个界面元素,如背景、按钮等都作为独立的图片导入到Unity3D中。Unity3D支持透明通道,所以可以将界面元素通过PS等二维软件绘制成各种形状并将图片背景设置为透明即可。之后通过Unity3D中的GUITexture组建完成界面的搭建,对于场景的载入需要通过脚本完成[5]。点击进入系统按钮载入展厅场景,点击关于系统按钮载入系统关于场景,点击退出系统按钮关闭系统界面。

3.4 展厅的优化

⑴ 光照贴图技术的使用。为了增加系统的真实性,需要生成物体的阴影。实时阴影会消耗大量的系统资源,为了提高系统的性能,对于场景中大量不移动的物体,可以采用Unity3D中的光照贴图技术。例如展厅外面场景中的树木,可以通过Unity3D中的lightmap(光照贴图技术)将场景的阴影信息写入到相应的文件中,在场景的运行期间实时调用,可以节省大量的系统资源。本系统展厅场景的主光源是Directional Light,在使用上,①首先检查将要烘培的模型上是否存在一个合适的用来定位光照贴图的UVs,如果不存在,可以从mesh import settings面板中的勾选Generate Lightmap UVs选项来生成一个用于定位光照图UV的集;②在物体面板中将要烘培光照贴图的物体设置为Static,这样Unity就会知道哪些物体是需要被烘培的;③选择Window->Lightmapping打开光照图工具窗口进行设置,点击Bake,等待烘培完成即可[6]。

⑵ 遮挡剔除技术的使用。Occlusion Culling,即遮挡剔除。当使用遮挡剔除时,会在渲染对象被送进渲染流水线之前,将因为被遮挡而不会被看到的隐藏面或隐藏对象进行剔除,从而减少了每帧的渲染数据量,提高了渲染性能。对于本虚拟展厅而言,摄影机并不能每帧都看到场景的全部,可以采用遮挡剔除技术来进行优化。在本系统展厅场景中应用了遮挡剔除技术,在使用上,①对于场景中的小物体或者透明物体设置为Occludees Static,对于其他静止的物体设置为Occlusion Static;②打开Window->Occlusion Culling,不用创建遮挡区域,遮挡剔除将应用到整个场景,点击Bake,等待烘培完成即可[7]。

3.5 展厅的发布

本系统的最终发布版本为网页平台,点击File->Building Setting,将本系统的三个场景拖动到窗口的Scences In Build中,并保证系统开始场景处于序号0的位置;在窗口中选择Streamed选项使得场景可以通过流的方式从服务器进行下载;设置屏幕宽为800,屏幕高为600;设置完成后点击Bulid即可完成发布。

发布后,通过修改发布生成的html代码可以定义加载屏幕的外观,包括logo以及进度条等[8]。设置如下:

var config = {

width: 800,

height: 600,

params:

{ backgroundcolor:"f3fd81", //加载期间,显示的背景颜色

logoimage:"image/logo.png", //自定义logo

progressbarimage:"image/bar1.png", //加载期间,进度条图片

progressframeimage:"image/bar2.png", //加载期间,帧进度条图片

disableContextMenu:true, //禁止鼠标右键操作

disableFullscreen:true //禁止全屏

}

完成以上设置后,就完成了最后的发布工作。最终完成的系统如图1、图2和图3所示。

4 结束语

本文探讨了使用Unity3D平台开发一个基于虚拟展厅的学生作品展示系统,重点讨论了模型的制作、贴图的制作、交互式开发等技术关键点。对于本系统而言,将更多有趣的互动引入到系统中,进而提供更加友好的交互将成为下一步研究的重点。

参考文献:

[1] 欧阳攀,李强,卢秀慧.基于Unity3D的虚拟校园开发研究与实现[J].

现代电子技术,2013.4:27-30

[2] 蔡翊.基于Unity3d的金丝峡地质公园虚拟旅游系统的研究与实现[D].

西安科技大学,2012.

[3] 倪乐波,戚鹏,遇丽娜等.Unity3d产品虚拟展示技术的研究与应用[J].

数字技术与应用,2010.9:56-57

[4] 朱惠娟.基于Unity3D的虚拟漫游系统[J].计算机系统应用,

2012.10:38-41

[5] 干建松.基于Unity3d的室内漫游仿真系统[J].淮阴师范学院学报:自

然科学版,2011.6:48-51

[6] 倪乐波,戚鹏,遇丽娜等.Unity3d产品虚拟展示技术的研究与应用[J].

数字技术与应用,2010.9:56-57

[7] 吕莲.基于3ds MAX建模技术的校园建筑漫游的实现[J].南京工业

职业技术学院报,2010.2:53-56

[8] 王星捷,李春花.基于Unity3D平台的三维虚拟城市研究与应用[J].计

算机技术与发展,2013.4:247-250