基于Unity3D的漫游系统设计分析
2018-09-05于连鑫
摘要:虚拟漫画系统对于现今这个社会意义是非常重大的。因此,本文就基于Unity3D的漫游系统的设计进行了分析,根据JavaScript和C#的脚本详对各个关键技术进行了简述,以期为未来的虚拟漫游系统带来一些参考。
关键词:Unity3D;漫游系统;虚拟现实;NGUI
一、 Unity3D平台
Unity3D属于一种综合型的开发工具,其开发是由UnityTechnologies进行的,如实时三维动画、三維视频游戏以及建筑可视化等。同时,其也属于一个全面整合专业的跨平台游戏引擎。Unity3D的高易用性和移植性均都是由于其开发平台采取的渲染及软件架构这两种方式,使其开发的漫游系统能够在网页上运行,有效提升用户的体验感。
二、 基于Unity3D漫游系统设计模式
虚拟漫游系统需从设计者的需求分析入手,从而划分系统的各个模块功能,同时还要采用软件工程的思想。为了减低许多用户对于在其虚拟环境中的迷失感,系统就需增设一些较为重要的辅助工具,如显示人物坐标,增设指南针以及小地图等,进而使用户的漫游体验更加接近现实,具有体现出较高的真实性。
(一) 功能模块
针对大多数漫游系统而言,其均设置了用户自动寻路的功能,比如在路过一段比较小的峡谷或是危险性较高的路面时,能够在用户不操作人物的前提下,安全到达目的地,此功能不仅可减少对用户的专业技能要求,而且还拓宽了用户的使用范围,将漫游效果达到了最佳,进而实现了广泛使用软件的目的。
虚拟漫游系统想要实现用户在场景中的自由漫游,就应保证漫游有一定的较高真实性,如人物在实际生活中不能穿过房子等固体,这类的就需加设物体碰撞器件在系统中,从而达到碰撞检测技术的目的。同时,漫游系统不可缺少的主要组成部分就是交互功能,在Unity3D中,想要实现上方、下方、左方以及右方的移动功能,往往都是使用WSAD来达到目的。UI界面的设计也是不可忽视的一种交互功能,在大部分的系统中,用户往往都是利用导航菜单或对话框进而来达到人机交互功能,另外,大部分的PC用户都习惯用鼠标来进行操作,所以为了与其操作相符,开发者要想人物可以自动的达到鼠标的点击位置就可利用U3D中的脚本。由此可说明,漫游系统中绝对不能缺少的一部分就是界面交互设计。
(二) 虚拟场景生成
所有漫游系统的场景需求往往都来源于实际需求。基于此,就应依据系统的需要采用航拍或实地等技术来实现实景数据的采集,且还可通过Maya、3DMax等来实现模型的建立。场景中天空的绘制可以采取Unity的Skyboxes包来实现。为了使环境更加真实化,就需将光源、湖泊以及植被等现实中的事物加设进场景中,其中使得在构建虚拟环境的过程可以更顺利,就可利用Unity引擎自身所具备的功能包。
三、 关键技术探究
(一) 基于NGUI的UI制作
对于所有的系统来说,UI就是其不能缺少的重要组成部分,其在3D系统中可以为用户提供更优的体验感和更好的用户之间的交互性。U3D系统引擎自身具备API,进而可以进行设计界面,但同时由于插件技术的不断发展,进而本文就UI的制作选取了,选择了NGUI插件来进行完成。NGUI编写UnityD插件,需要相关人员严格按照KISS原则来进行,同时还需运用C#语言进行。另外,需NGUI的各种功能进行封装进而形成脚本,之后再把NGUI包导入U3D环境,在这之后就会增加了一个NGUI的组件,同时要在NGUI组件中构建需要的UI种类,进而就可为用户提供强大性非常大的进行事件通知的框架。对于用户和开发者来说,NGUI插件可有效系统的性能及其扩展性。
在进行具体开发时,NGUI插件所发挥的作用就是可以高速且方便地制作按钮、标签以及头像等,且NGUI只利用一个脚本就可以达到屏幕自适应功能的目的,从而系统地发布就又增设了较好的条件。同时,在进行具体实现时,图片的制作往往会选择图形处理工具,且可对NGUI插件中的AtlasMaker进行利用,Sprite精灵的生成通过UI来实现,将其位置及大小进行调整,然后具体功能的实现就可以通过脚本来进行。
(二) 自动寻路
实现漫游系统自动寻路功能需将JavaScript、NavMesh以及C#脚本进行结合并加以利用。同时,在Unity的菜单中,将Navigation进行点击选中,进而就会马上在Inspector的旁边显示出Navigation面板。
在Unity的自动寻路功能中,利用OffMeshLink来实现复杂性较高的场景自寻路。如场景中出现楼梯或者横向跨越时,进而人物的安全漫游就可通过OffMeshiLink来实现,如果想实现更加真实的现实模拟,则需要在Bake选项设置中。
场景路径的烘焙工作则需公国层的概念来完成。首先,不同划分NavigationLayer,之后实现对系统场景中漫游层的烘焙就可以采用Bake来进行,之后为漫游人物增设NavMeshAgent,进而对于人物在漫游层的选项就可在Inspector面板中体现出来,最后再把NavMesh不同的环境进行设置后,进而就可利用脚本来实现系统中场景人物的自动寻路功能。
(三) 粒子系统
粒子系统是一种在三维计算机图形学中模拟特定模糊现象的技术,在虚拟漫游中,经常使用粒子系统模拟的有火、爆炸、烟、水流、火花、落叶、雾、雪、云、雾、尘以及流星尾迹等抽象视觉效果等。另外,U3D中的Particles包中有包含Dust、Water、Smoke等,能够将其直接加入场景进而达到实现模拟效果的目的。
(四) 碰撞检测
漫游系统最基本要求就是一个全方位的碰撞检测,而模拟实际环境中的物体就是碰撞检测最为基本的作用,以至于在遇见障碍物能够进行本能的反应。例如,如果在场景中人物遇见房屋或比较坚硬的大规模物件时,就需停止前进,不然就会在一定程度上削弱漫游的真实性,更为严重的话还会彻底失去漫游模拟的意义。
四、 结语
本文简述了Unity3D引擎在虚拟漫游系统中的应用,并提出了以U3D漫游系统为基础的设计方法,对U3D引擎中的自动寻路功能以及碰撞检测等进行了讨论,以期为以后的开发工作者提供一些有价值参考。
参考文献:
[1]王彩玲,刘瑞香,宋钊.基于Unity3D的虚拟校园漫游的设计与实现[J].科技视界,2015(05).
作者简介:
于连鑫,四川省成都市,电子科技大学成都学院图形艺术系。