APP下载

基于Unity3D的虚拟校园漫游的设计与实现

2015-01-08王彩玲刘瑞香

科技视界 2015年5期
关键词:碰撞检测漫游虚拟现实

王彩玲 刘瑞香 宋 钊

(西安石油大学计算机学院,陕西 西安 710065)

0 引言

在网络快速发展的时代,虚拟现实技术成为了高等教育机构和国内外商业抢占市场和提高竞争力的一个强有力手段。他们通过虚拟现实技术,让用户足不出户就可以了解到他们所需要的东西,而且具有身临其境地感觉。使用者利用网络手段真实感触到产品、环境及体验,对虚拟现实技术的要求更高更迫切。基于双方的需求,更加促进了web3d技术的完善和成熟。

所谓虚拟现实是利用电脑模拟产生一个三维空间的虚拟世界,提供使用者关于视觉、听觉、触觉等感官的模拟,让使用者如同身历其境一般,可以及时、没有限制地观察三度空间内的事物。虚拟现实技术已经广泛应用在医疗[1]、教育[2-3]、电子商务[4-5]等众多领域。其中,Web3D技术是当前虚拟现实 的主流技术。Web3D又称网络三维,是一种在虚拟现实技术的基础上,将现实世界中有形的物品通过互联网进行虚拟的三维立体展示并可互动浏览操作的一种虚拟现实技术。相比起目前网上主流的以图片、FLASH、动画的展示方式来说,Web3D技术让用户有了浏览的自主感,可以以自己的角度去观察,还有许多虚拟特效和互动操作。Unity3d是由Unity Technologies开发的一个可以轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity3D最大的优势是性价比高,并且可以发布成网页浏览的方式,用户不用下载客户端,就可以直接体验.Unity3D支持各种脚本语言包括Javascript、C#兼容各种操作系统,真正的实现了跨平台。

本论文从创建数字校园需求分析入手,通过前期测量,三维建模完成各个数字模块,最终完成一个数字化校园。首先应该通过CAD平面图[6-7]和实地拍摄图片[8-10]构造模型主题,经过测量和分析得到虚拟场景内各个模型的尺寸,利用3dmax建模软件对各个建筑体进行建模,然后进行场景合并。运用3dmax插件导出为FBX格式,将导出文件导入Unity3D中,在 Unity3D中添加灯光设置、图纸设置、及第一人称角色来完成人机交互。利用Unity3d的跨平台设置生成html格式,将html格式文档发布在互联网中,可实现网络环境下虚拟校园的漫游。

1 三维虚拟校园漫游的总体设计

1.1 虚拟校园漫游开发流程

基于西安石油大学新校区的虚拟校园漫游开发流程如图1所示。

首先,获取校园地理相关信息数据。在这里首先获取校园AutoCAD平面图和相关建筑物设计图纸。对建筑物分别从四个正面及八个方向拍照,获取外部轮廓及细节图;对草地、水域及道路等采用实景拍照获取相关信息。

其次,将所采集到的数据及图片信息利用3Dmax建模软件,制作三维数字模型,对粗糙模型进行加工渲染,得到效果逼真的三维模型。

再次,将三维模型利用3Dmax插件导出,由于Unity3D软件要求输入模型为FBX类型,因此,按照Unity3D软件平台要求输出指定模型,进行后续的开发。

最后,利用Unity3D软件,使用Javascript和C#语言,添加灯光照射和人物角色,对人物添加碰撞检测,实现基于第一人称的无失真漫游。

图1 虚拟校园开发流程图

1.2 开发过程中的关键技术

1.2.1 漫游功能的实现

漫游功能是实现数字化校园的关键,交互是实现漫游的方式.基本的人机交互方式,例如人物行走,需要采用鼠标点击前进、后退、左转、右转、跳跃等功能,在Unity3D中可以以WSAD实现,代码在FPScontral.js脚本文件中,其关键代码如下:

var Speed=5;

var RotateSpeed=20;

function Update(){

if(Input.GetKey(KeyCode.W)){transform.Translate(Vector3.forward*Time.deltaTime*Speed);

if(Input.GetKey(KeyCode.S)){transform.Translate(Vector3.forward*Time.deltaTime*-Speed);

if(Input.GetKey(KeyCode.A)){transform.Translate(Vector3.up*Time.deltaTime*RotateSpeed);

if(Input.GetKey(KeyCode.D)){transform.Translate(Vector3.up*Time.deltaTime*-RotateSpeed);}

}

另一种重要的交互功能是GUI界面设计,在虚拟校园中,需要场景的跳转,如图2所示,根据选择进入场景,实现相应的漫游模式。核心代码如下:

function OnGUI(){

GUI.Label(Rect(280,150,400,200),str);

if(GUI.Button(Rect(250,320,100,25),"进入校园"))

{

Application.LoadLevel("xishiyou02");

}

if(GUI.Button(Rect(600,320,100,25),"退出系统")){

Application.Quit();

}

}

图2 场景切换界面

1.2.2 碰撞检测设计

碰撞检测[11-12]是模拟现实环境中的人物及物体在遇到障碍物时发生的本能反应,例如,当角色遇到墙壁,如果没有设计碰撞检测,则角色会出现穿墙而过的失真现象,在现实中,应该是当发现墙壁与角色存在一定距离时,则需要停止前进。在这种情况下,设计人员需要添加碰撞检测函数。碰撞检测实现及性能是整个数字校园漫游的性能指标之一。Unity3d开发平台默认给每个对象(GameObject)添加一个碰撞组件(ColliderComponent),一些背景对象则可以取消该组件。在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器。这两种方法应用都非常广泛。

在Unity3d中,主要有以下接口函数来处理这两种碰撞检测:

触发信息检测:

1)MonoBehaviour.OnTriggerEnter(Collider other)当进入触发器

2)MonoBehaviour.OnTriggerExit(Collider other)当退出触发器

3)MonoBehaviour.OnTriggerStay(Collider other)当逗留触发器

碰撞信息检测:

1)MonoBehaviour.OnCollisionEnter(Collision collisionInfo)当进入碰撞器

2)MonoBehaviour.OnCollisionExit(Collision collisionInfo)当退出碰撞器

3)MonoBehaviour.OnCollisionStay(Collision collisionInfo) 当逗留碰撞器

2 虚拟校园的实现

2.1 虚拟校园漫游系统设计要求

虚拟校园提供三维浏览功能有利于用户通过网络直观地获取信息,可以自主控制前进方向。构建这样的虚拟校园系统,在开发过程中需要解决的问题如下:

1)可以实现网络浏览,文件不能过大,要保证适合大多数计算机可以访问;

2)以一定的比例真实缩小实体校园,所有重要的场景要尽量真实还原;

3)提供比较人性化的GUI界面,比如“帮助导航”用来给用户提示信息;

4)设置与学校官网链接的页面导航;

5)配备背景音乐,并可以由用户自行设置关闭或打开;

6)设置导航图方便用户了解校园的整体;

7)通过服务器多用户交互。

2.2 构建过程

2.2.1 数据收集

通过实地考察量,测量,拍照等方式进行数据信息的收集。

2.2.2 模型构建

学校模型通常为学校大门,教学楼,路灯,花池,树木,草地等元素构成。根据收集的数据通过3dmax对基础模型进行平面建模,在模型构建过程中添加贴图,材质,灯光,效果等构建出逼真的模型。在模型的构建中需要注意的是多边形模型的优化.一个虚拟校园系统还是比较大的,对模型充分的优化可以减小最后网络文件的大小,利于用户浏览。

2.2.3 人机交互

人机交互技术是通过计算机输入、输出设备,以有效的方式实现人与计算机对话的技术.在本系统中主要的人机交互包括GUI界面设计和漫游设计.。用户通过网页浏览器打开该系统,在系统的介绍下进行校园漫游,用户以第一人称视角进行浏览,增强体验感,通过控制键盘wasd控制视角的移动同时鼠标控制视角的旋转。音乐可以给用户带来试听上的快感,结合视角,使其有种身临其境的感觉,同时用户可以自己开关音乐。系统添加碰撞检测系统使得用户不会出现穿墙现象,完善虚拟环境的真实性。

3 效果展示

图3 系统运行截图1(地点为西安石油大学东方广场)

图4 系统运行截图2(地点为西安石油大学实验楼)

图5 系统运行截图3(地点为西安石油大学运动场一角)

4 软件测试与优化

任何系统都需要进行黑盒子测试以发现系统存在的问题和漏洞。本系统也进行了相应的测试。在测试中发现,基于网络环境下,系统存在占用网络流量大,运行缓慢的现象。分析原因是因为测试电脑配置较低及网络带宽限制。这就要求我们从用户角度出发,在保证真实度的情况下尽量减少模型的数量,大部分建筑需要通过平面建模来优化模型的复杂度,在建模过程中尽量减少模型顶点和分段数,在unity3d处理过程中,尽量使用静态灯光,动态实时灯光相比静态灯光,非常耗费资源。所以除了能动的角色和物体静态的地形和建筑。尽量减少视角范围和距离,减少不必要的运行消耗。

具体实施方案有:

1)模型设计方向:

a)使用层距离来控制模型的显示距离;

b)阴影其实包含两方面阴暗和影子,建议使用实时影子时把阴暗效果烘焙出来,不要使用灯光来调节光线阴暗;

c)少用像素灯和使用像素灯的Shader;

d)如果硬阴影可以解决问题就不要用软阴影,并且使用不影响效果的低分辨率阴影;

e)实时阴影很耗性能,尽量减小产生阴影的距离;

f)允许的话在大场景中使用线性雾,这样可以使远距离对象或阴影不易察觉,因此可以通过减小相机和阴影距离来提高性能。

2)程序优化方向:

a)删除脚本中为空或不需要的默认方法;

b)只在一个脚本中使用OnGUI方法;

c)避免在OnGUI中对变量、方法进行更新、赋值,输出变量建议在Update函数中调用;

d)同一脚本中频繁使用的变量建议声明其为全局变量,脚本之间频繁调用的变量或方法声明为全局静态变量或方法;

e)不去频繁获取组件,将其声明为全局变量;

f)需要隐藏/显示或实例化来回切换的对象,不使用SetActive Recursively或active,使用将对象远远移出相机范围和移回原位的做法;

g)尽量少用模运算和除法运算,比如a/5f,需改写成a*0.2f。

5 结束语

本文以西安石油大学新校区为例,基于Unity3d平台开发的系统运行效率高、维护简单,运用3dmax建模软件进行对场景建模,通过Javascript和C#语言实现人机交互,最后结合html进行融合导出,从而完成虚拟校园的开发。在论文中重点介绍了系统设计过程中的关键技术以及对系统从模型设计及程序设计两方面的优化。该系统经过测试,基本实现学生用户的使用需求。

[1]范立冬,李曙光,张治刚.虚拟现实技术在医学训练中的应用[J].创伤外科杂志,2008,12,9(6).

[2]吴燕玲.基于Wed的玩味动画技术及其在教学中的应用[J].中山大学学报:自然科学版,2002(6):53-56.

[3]詹胜利.Web3D技术在网络教学中的应用[J].网络技术与网络教学,2006,1:15-17.

[4]来翔.面向电子商务的虚拟商品模型研究[D].浙江大学,2003.

[5]沈璞.虚拟现实技术在现代工业设计中的应用[J].制造业自动化,2004,6:76-78.

[6][]Okabe M,Igarashi T.3D modeling of trees from freehand sketches[C]//International Conference on Computer Graphics and Interactive Techniques.ACM SIGGRAPH 2003 Sketches&Applications.New York,USA:ACM,2003:1-1.

[7]Okabe M,Owada S,Igarashi T.Interactive design of botanical trees using freehand sketches and example-based editing [J].Computer Graphics Forum,Eurographics(S0167-7055),2005,24(3):487-496.

[8]Livny Y,Yan F L,Olson M,et al.Automatic Reconstruction of Tree Skeletal Structures from Point Clouds [J].ACM Transactions on Graphics (S0730-0301),2010,29(6):151-1:151-8.

[9][]Tan P,Fang T,Xiao J X,et al.Single Image Tree Modeling [J].ACM Transactions on Graphics(S0730-0301),2008,27(5):108-1:108-8.

[10]Neubert B,Franken T,Deussen O.Approximate image-based tree-modeling using particle flows[J].ACM Transactions on Graphics(S0730-0301),2007,26(3):88-1:88-8.

[11]甘建红,彭强,戴培东,等.基于 OBB层次结构碰撞检测的改进算法[J].系统仿真学报,2011,23(1):2619-2173.

[12]Gayle R,Manocha D.Navigating virtual agents in online virtual worlds[C]//Proceedings of the Web3D 2008.New York,NY,USA:ACM,2008:53-56.

猜你喜欢

碰撞检测漫游虚拟现实
全新预测碰撞检测系统
基于BIM的铁路信号室外设备布置与碰撞检测方法
Unity3D中碰撞检测问题的研究
REALITY BITES
NASA漫游记
虚拟现实技术向科幻小说借灵感
BIM技术下的某办公楼项目管线碰撞检测
浅谈虚拟现实
边走边看:漫游海底 梦想成真