基于Unity 3D实现校园Web三维虚拟漫游的设计研究*

2015-03-08 02:15华江林姚宏亮
九江学院学报(自然科学版) 2015年4期
关键词:碰撞检测交互设计

华江林 姚宏亮

(1安徽新闻出版职业技术学院艺术设计系;

2合肥工业大学计算机与信息学院 安徽合肥 230009)



基于Unity 3D实现校园Web三维虚拟漫游的设计研究*

华江林1姚宏亮2

(1安徽新闻出版职业技术学院艺术设计系;

2合肥工业大学计算机与信息学院安徽合肥230009)

摘要:校园Web三维虚拟漫游系统开发是数字化校园建设的重要内容。该系统基于Unity3D平台,利用3Dmax建模和Photoshop制作材质贴图,结合javascript和C#语言实现交互功能,最终发布网络Html格式,用户通过浏览器进行三维浏览和交互。实践证明,Unity3D具有强大网络三维展示和交互功能,是三维虚拟展示平台系统开发的有效工具。

关键词:虚拟漫游系统,Unity3D,交互设计,碰撞检测

虚拟现实(Virtual Reality)技术是利用计算机生成多源信息融合的、交互式的三维动态视景和实体行为的计算机仿真系统,通过人机交互界面,用户沉浸模拟环境,体验虚拟世界。虚拟现实如今广泛应用于军事、教育、游戏、建筑、医疗、工业设计等领域。随着计算机网络技术和Web3D技术的发展,通过浏览器实现跨平台的在线三维交互体验的虚拟化校园环境,是数字化校园建设的重要内容。

1Unity 3D开发流程

目前虚拟三维漫游系统开发引擎技术主要采用Web 3D。Web 3D技术包括资源管理、场景管理、角色虚拟动画等内容。现有主流技术有:虚拟现实建模语言(Virtual Reality Modeling Language,VRML),是使用三维面片形式记录几何信息,几何造型功能非常有限,场景复杂是产生数据量非常大;Cult 3D软件系统不支持阴影渲染;Flash 3D引擎具有免插件安装,依赖于硬件加速系统的支持,可实现轻量化脚本程序设计的引擎技术。

与上述几个平台相比,Unity3D是一款跨平台的专业游戏引擎开发工具,适合创建三维视频游戏、建筑可视化、实时三维动画系统开发。具有高度优化的图形渲染效果,支持用户定制,支持Direct3D和OpenGL。采用了Nvidia PhysX的物理引擎并支持Lightmap Baking光影渲染系统,使画面运动更加真实逼真。植被方面采用Unitree并内置了大量常用效果的Shader,满足开发者使用;Unity 3D支持JavaScript、C#、Boo等三种脚本开发语言选择。Unity 3D最大的优势是支持多个平台发布,非常适合网络发布,客户端运行系统不需要安装插件。综上所述,Unity 3D引擎技术非常适合实现校园的Web三维虚拟漫游,Unity 3D可视化开发流程详见图1。

图1 Unity3D可视化开发流程图

2校园Web三维虚拟漫游系统的设计

2.1 系统功能

校园三维虚拟漫游系统总体规划:以Unity 3D为开发平台,采用B/S架构,实现网络浏览。系统功能要求:①设置校园整体布置导航图,真实再现校园各处虚拟3D场景;②提供人性化的GUI界面,方便用户操作;③以第三人称漫游,用户可以通过鼠标和键盘操控,实现游览校园三维仿真场景;④用户可以查询和搜索建筑模型信息;⑤用户可以搜索可寻路建筑信息,并采用自动寻路方式到达目标地点。

2.2系统设计

校园三维虚拟漫游系统可分为三层:数据层、逻辑层和表示层,如图2所示。

图2  校园三维虚拟漫游系统架构设计

数据层主要分为属性数据和空间数据。属性数据主要是指模型所代表的物体所包含的一些现实意义的信息,如某一栋楼的名称、联系方式、建造信息等等,与物体几何空间位置无关。空间数据主要包括谷歌地球影像、实地测量数据,它描述了虚拟校园当中物体的空间位置、轮廓、大小等信息。谷歌影像数据不是直接体现在虚拟场景中,而是通过模型的位置、轮廓、大小来体现的。通过卫星影像确定模型轮廓、位置和大小,在3ds Max中构建相应网格模型,利用贴图生成真实视觉感的3D模型。

逻辑层主要负责处理复杂的交互控制,它是在Unity引擎当中通过添加相应组件、设置相应属性、编写自定义脚本来完成的。自定义脚本可以分成以下几类:运动控制类脚本,如漫游角色在虚拟场景中的运动控制;信息查询类脚本,如建筑属性查询;组件控制类脚本,如自动寻路。

表示层主要构建校园三维虚拟漫游可视化系统与用户交互的界面,主要有浏览器解释执行HTML和Unity 3D插件组成,将逻辑层处理结果反馈到屏幕,展示给用户。

3校园Web三维虚拟漫游系统实现关键技术

3.1 人机交互技术

人机交互技术是指通过计算机通过输入设备发出请求,计算机处理后,通过输出设备进行显示,实现人机对话,涉及计算机学科、认知心理学、人机工程学等学科。该系统人机交互主要通过JavaScript实现,GUI界面设计如图3所示。

图3 校园三维虚拟漫游系统GUI界面

GUI界面设计可以提供自动导航、手动导航和地图导航等方式,以“自动导航”为例,主要代码如下[1]:

//自动导航GUI界面

function OnGUI( ) {

//是否显示菜单栏

if(menuShow==false){

return;}

//处理按钮事件

if(GUI.Button(Rect (Screen.width/2-40,Screen.height/2-60,90, 40 ),"自动导航")) {

print ("请单击按钮!");

Application.LoadLevel(1);

menuShow=false;

} }

漫游技术中使用鼠标或按键行走功能,键盘上W、S、D、A实现上下左右,如向前行走功能代码如下:

//显示内容更新

function Update () {

//获取界面显示控件

Control = GetComponent(js);

//获取用户按键信息

if(Input.GetKey(KeyCode.W)) {

Control.ForWard(); }

}

//按W键对应的事件

function ForWard(){

transform.Translate(Vector3.forward *Time.

deltaTime*Speed);}

3.2碰撞检测技术

碰撞检测技术是虚拟现实环境中,角色漫游过程遇到障碍物的反应。在Web3D虚拟漫游场景中,虚拟角色前进、后退或转身时,若不进行碰撞检测,就容易出现穿透失真现象。

Unity3D碰撞器主要包含原型和网格两种碰撞器。碰撞检测有碰撞器和触发器两种检测方式。碰撞器是一种物理组件,先为GameObject添加相应的碰撞器,然后在自定义脚本组件中重写相应的碰撞器碰撞时调用函数如OnCollisionEnter,但是需要附加刚体指定为刚体碰撞器或者直接指定为静态碰撞器。触发器碰撞检测,需要碰撞器组件的支持,不需要刚体的支持,但使用方式却不同于刚体碰撞器,只需将碰撞器中勾选Is Trigger属性,然后在自定义脚本中调用相应的触发器函数如OnTriggerEnter。另一种触发器叫做光线投射(Ray Casting),其思想是在物体对象的物体坐标系下往正前方即+Z轴方向投射一条具有一定长度的射线,与这条射线碰撞的物体在碰撞时会触发碰撞事件。

3.3虚拟场景构建技术

虚拟场景构建首先结合CAD规划平面图,通过3Dmax软件进行建模,也可以利用Unity3D自带素材构建虚拟环境,材质获取可以通过数码相机拍摄。

3.3.1数据采集校园漫游系统是模拟校园的真实环境,采集校园的空间数据信息是最关键。将获得的信息通过软件后期处理,即可得到构建校园漫游系统所需的空间数据。该系统采用了以下几种方法[1]:①学校提供CAD规划图得到数据或谷歌卫星地图数据;②仔细研究学院沙盘,收集部分信息;③对于缺少具体数据或信息不详的地点,需要重新进行实地测量;④贴图材质采集和处理。利用数码设备拍摄建筑物,利用Photoshop软件处理适合贴图材质。

3.3.2创建模型模型制作是包括校园的建筑模型、景观和花草等环境,利用3DMax中建模;环境部分可以利用Unity3D中有自带素材库,主要包括树木、花草和天空。建模过程中,尽量减少多边形模型面数,降低材质贴图素材的分辨率,尽量减少输出文件大小,便于用户快速浏览。

3.4 系统优化

受网络带宽的限制及3D运算等影响,为保证用户网络浏览的流畅性,需要对角色和场景、实时灯光、阴影和脚本语言进行优化,这里重点介绍脚本优化和建模优化。

3.4.1脚本优化第一,脚本编写时,尽量使用JavaScript语言使用静态类型替代动态类型,Unity3D采用类型推理的技术来自动转换静态类型脚本;也可通过添加#pragma strict放在脚本顶端,禁用脚本的动态类型。

第二,使用组件缓存优化脚本,程序代码足够长,缓存优化效果明显。获取组件或变量方法通过GetComponent函数,也可以通过缓存组件引用到私有变量。处理方法如下:

FunctionUpdate() {transform.Translate(0, 0, 7);}

改为:

Private var myTrans: Trans; functionAwake() {myTrans = trans;}

functionUpdate() {myTrans.Translate(0,0,7);}

第三,使用内置数组优化。使用Array类或ArrayList很方便,极易添加元件,但处理速度不同。内置数组有固定长度,它是嵌入结构数据类型在缓存中,不需要任何额外类型信息或其他开销,每个元素都是对齐的,缓存遍历也很容易。处理方法:

Privatevar positions: Arr2[];functionAwake ( ) {

positions = newArr2[100];

for (var i=0;i<100;i++) positions = Arr2.zero;}

最后,Assets目录创建新脚本时,尽量少调用函数,删除脚本里Update 方法。

3.4.2建模优化角色建模尽量使用一个Skinned Mesh Renderer,少用多materials,Unity会使用可见性裁剪和包围体更新的方法来优化角色的运动。经验表明:模型骨骼不超过30个,不用IK节点,因为角色动作实现已经设定,不要在静态实体上附加Animation组件,会增加的CPU开销来调用这一组件。

尽可能地减少描绘指令Drawcall的数量,采用减少的方法有:Unity有内建Frustum Culling组建,这就需要寻求合适的远裁剪平面;另外Occlusion Culling遮挡剔除是当一个对象被其他对象遮挡住而不在摄像机的可视范围内时,系统不对其进行渲染。Unity内嵌了OC库中有Umbra,充分利用OC库对场景进行优化;Texture Packing可以拼合shader同种纹理,static batching可以减少Drawcall。

4结语

(责任编辑胡安娜)

基于Unity 3D实现校园Web三维虚拟漫游,具有良好的系统结构,并利用三维可视化技术设计实现了三维交互式校园布局展示功能,该平台开发基本达到实现预期目的,但用户体验过程中,在交互功能、系统性能和运行速度等方面需进一步优化,以提高用户的浏览体验并降低服务器负担。当然系统校园服务功能方面予以完善。

参考文献:

[1]伊力哈木江·巴图尔,崔龙,张红忠,等.基于Unity3D的三维数字校园漫游系统[J]. 现代计算机(下半月版),2012,29(24):90.

The Development of Campus WEB 3DVirtual Roaming System Based on Unity 3DHUA Jianglin1, YAO Hongliang2

(1DepartmentofArtDesign,AnhuiVocationalCollegeofPressandPublishing;2SchoolofComputerScienceandInformationEngineering,HefeiUniversityofTechnology,Hefei230009,Anhui,China

ABSTRACTThe development of campus WEB 3D virtual roaming system is an important part of the construction of digital campus. Based on Unity 3D platform, The system used 3Dmax to build the scene and applied Photoshop to product material.Meanwhile JavaScript and C# were also used to implement the function of interaction.Finally, through publishing with HTML, users could conduct three-dimensional browsing and interaction through the browser. The system showed powerful 3D display and interactive function, which proved that unity 3d was an effective tool for designing a three-dimensional virtual platform.

KEY WORDSvirtual roaming system, unity 3D, interaction design, collision detection

中图分类号:TP 391.41

文献标识码:A

文章编号:1674-9545(2015)04-0057-(04)

通讯作者:华江林(1975-),男,安徽桐城人,硕士,副教授,研究方向为虚拟现实和交互媒体。E-mail:ahbzhjl@126.com。

收稿日期:2015-9-28

*基金项目:2013年安徽省高等学校省级质量工程项目(编号2013zy153);2014年安徽省自然科学基金重点项目(编号KJ2014A102)的成果之一。

猜你喜欢
碰撞检测交互设计
基于动力学补偿的机器人电机力矩误差碰撞检测
全新预测碰撞检测系统
基于BIM的铁路信号室外设备布置与碰撞检测方法
浅谈交互设计流程中的视觉因素
超数字化:网络体育新闻传播的发展趋势
非物质文化遗产数字化研究
浅谈交互设计在工业设计中的运用
空间遥操作预测仿真快速图形碰撞检测算法
交互设计在工业设计中的应用分析
BIM技术下的某办公楼项目管线碰撞检测