基于Unity3D的黄河风景名胜区虚拟漫游的实现

2015-10-19 13:49牛庆丽薛焕唐黄海林
电脑知识与技术 2015年20期

牛庆丽 薛焕唐 黄海林

摘要:利用Unity3D技术实现了黄河风景名胜区的三维交互漫游系统。通过三维漫游系统功能模块分析、关键技术研究、黄河风景区三维模型的建立、场景的导入、漫游的设计及天空盒子的添加等问题实现了黄河风景名胜区景点的漫游。通过虚拟漫游让游客足不出户更好的了解风景区的文化气息和建筑物特色为吸引游客并带动郑州市的旅游业发展,起到很好的宣传作用。

关键词:黄河风景区;三维场景;虚拟漫游

中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2015)20-0149-03

The Realization of Virtual Roaming of the Yellow River Scenic Area Based on Unity3D

NIU Qing-li, XUE Huan-tang, HUANG Hai-lin

(College of Information Engineering, Zhengzhou University of Science & Technology, Zhengzhou 450064, China)

Abstract: Three-dimensional interactive roaming system is realized using Unity three-dimension technology in the Yellow River scenic area. The roaming of the Yellow River scenic area can be realized through the analysis of this systems function module, key technology research, the establishment of the Yellow River scenic area three-dimension model, importing of scenes, roaming design, the adding of skybox and so on. Virtual roaming allows visitors to better understand the culture of the scenic spot at home and buildings characteristics to attract tourists and promote the tourism development of Zhengzhou, which has a very good propagandistic effect.

Key words: The Yellow River scenic spot; Unity3D; virtual roaming

黄河风景名胜区(以下简称黄河风景区)位于河南省郑州市西北约三十公里处,北临黄河,南依岳山,被誉为万里黄河上一颗璀璨的明珠。作为郑州市十大旅游景区之一的旅游胜地,多年来,风景区内绿树满山,亭阁相映,山清水秀,景色宜人,吸引着越来越多的游客来此游玩,尽管如此,外地的游客对于黄河风景区景点的特色还是了解甚少,甚至有些游客没有时间来此游玩,为此,本文主要介绍利用Unity3D技术完成风景区虚拟漫游的实现,让游客在百忙之中可以通过计算机虚拟技术来浏览风景区内的场景、建筑群和景区传播的文化气息。

1 漫游系统实现目标

黄河风景名胜区虚拟现实漫游系统旨在提供一个景区的三维虚拟展示平台,游客通过虚拟漫游系统以第一人称的方式在景区内跟随相机走动。漫游系统中包括风景区场景的3Dmax的建模、在Unity3D中生成风景区的三维场景自由漫游、向游客展示黄河风景区的地形地貌、景点分布、基础服务设施分布等信息,同时漫游系统在完整性上应保证用户可以自由漫游游览景点建筑群,切换景区场景点漫游等要求。由于黄河风景区景点众多本文主要以风景区大场景、炎黄二帝中心广场为例作为研究重点,通过对景区的三维虚拟仿真,向游客展示黄河名胜区的独特魅力,为此漫游系统的设计目标为:

1)以一定的比例来缩小风景区场景,但保证场景真实还原;

2)场景中实现第一人称漫游;

3)在漫游过程中实现碰撞检测处理;

4)用户可以根据电脑选择分辨率和画质模式的选择。

1.1 漫游系统开发工具

1)场景开发工具

Unity3D是由Unity Technologies公司开发的一个让用户轻松创建诸如三维视频游戏、建筑虚拟可视化、实时三维动画等类型的多平台、跨平台的综合型3D可视化开发软件[1],在黄河风景名胜区的场景交互中,利用Unity3D强大的图形交互开发环境可以轻松的导入风景区内的3D建筑物,利用Unity3D的三维场景构建工具,实现风景区内场景的自由漫游、指定景点漫游等,通过Unity3D的SKY-BOX添加诸如晴天、阴天、雨天等不同天气条件下风景区的自然景观浏览,鉴于黄河风景区内庞大的建筑群及繁茂的树木群,利用Unity3D的跨平台三维场景交互能力和强大的场景树制作功能完成对黄河风景游览区内场景的制作。

2)场景建模工具

3D Studio Max,是Discreet公司开发的基于PC系统的三维动画渲染和制作软件。3Dmax拥有先进的渲染和仿真功能、强大的绘图、纹理和建模工具集以及更流畅的多应用工作流。由于黄河风景区炎黄二帝像规模宏大,主场景区各种树木、鼎、牌坊的色彩鲜艳,建筑物的片面较多,为了在Unity3D中表现出风景区内清晰的建筑物和场景, 保证景区内建筑区的色彩和较高的清晰度3Dmax无疑是最好的建模工具。

1.2 漫游系统开发流程

首先,虚拟漫游系统的制作需要到黄河风景区实地进行考察勘测,进行实地拍照取证测量行走路线的比例尺,漫游系统选择使用CAD平面图和补测的精准数据确定虚拟黄河风景区的地理位置,这样才能把完整的场景按照相应的尺寸缩减进入Unity3D的场景中[2]。其次,把实地勘测的图片数据,用3Dmax软件进行构图,建立各个地物以及场景的模型,通过烘焙贴图、纹理、减面等,然后保存为FBX格式导入Unity3D中,利用Unity3D中的JavaScript技术实现场景中的人机交互,在人机交互中设定防碰撞检测技术实现场景内的漫游功能。最后,利用Unity3D中的导出生成可执行文件如exe,flash等。黄河风景区系统设计流程如图1。

图1 漫游系统设计

2 虚拟漫游系统关键技术

2.1 3D模型制作技术

黄河风景区虚拟现实系统是一个基于虚拟现实技术的三维虚拟旅游系统,因此,三维模型以及三维场景的制作是系统开发中关键的一项工作。

场景模型的制作分为两个部分,即地形和地物。由于黄河风景区目前缺少大比例尺地形图、航空影像等资料,因此采取的解决方法是:用免棱镜全站仪实测单个景点区域,以确定风景区景点各个地物的准确位置。地物包括各种建筑物、公共设施以及花草,假山石头、树木等,其模型制作主要是通过现场拍摄实物照片获取纹理、测量点数据获得其外形轮廓。对部分形状不规则,建模难度较高的物体,通过近景拍摄的方式重建其三维模型。

1)场景模型制作

三维场景中的地物模型,主要是指风景区内的各种小物品物件,例如:石桌椅、各种提示牌、雕塑、大门、景区内各种建筑物等。地物模型采用3Dmax 2010进行制作。以风景区入口大

图2 风景区大门入口3D建模图

门为例,采用堆砌建模、网格建模、细分建模、面片建模 Nuburs曲线建模等方法[3],完成大门的几何建模,然后在Photoshop中对模型进行纹理贴图,调节材质,制作成真实感较强的三维模型,在使用3Dmax制作风景区建筑物的3D模型中为了保证模型的清晰度,在制作的过程中,建筑物的片面较多,且生成建筑物的.3ds格式的文件在Unity3D场景中为了保证漫游的流畅性,需要在3DMax中对建筑物的模型进行片面减面、烘焙处理等,经过以上处理后风景区3Dmax建模入口大门如图2。

2)烘焙贴图与灯光

为了保证风景区制作的3D模型在Unity3D中流畅的进行渲染,因此在制作过程中需要进行优化处理,烘焙处理和减面。进行烘焙的贴图有很多种,比如灯光高光法线置换等。在风景区建筑物中烘焙贴图的主要目的还是以优化片面为主的,通过烘焙灯光贴图产生光照和阴影效果,打造伪灯光,减少多边形和片面的数量在处理时采用三角形优化片面方法[4],如果场景中有太多多边形,会导致在场景中计算机图形渲染时模型变慢的问题,不能维持最低的接受的帧率。在黄河风景区中采用(Render To Textures)即贴图烘焙技术,在制作时把复杂的Max光照信息被渲染成贴图的过程,然后把烘焙后的贴图再贴回到场景中去,这样光照信息变成了贴图,节省了大量的CPU计算,提高了计算机渲染图形的能力,省去了无效的光能传递时漫游动画抖动,同时减少了Untiy3D中场景漫游切换时场景的滞后问题。

在制作黄河风景区3D模型时,为了保证图形的清晰度需要对Unity3D中的场景进行灯光的处理,对于灯光,采用Max自带的Light Tracer光线追踪进行渲染。由于在烘焙前会给出固定的烘焙灯光,灯光的高度、角度、参数均不可调整,所以可以在顶视图中将灯光组平移到视图区,用灯光合并场景然后再进行烘焙。

2.2 虚拟漫游功能实现

1)风景区地形创建

利用Unity3D中的Terrain工具,可以生成风景区的三维地形,在建模型前先设置好单位,

在同一场景中用到的模型单位设置必须一致,模型与模型之间的比例要正确,应该和程序的

导入单位一致,方便程序中按统一比例调整缩放,在风景区中定义统一单位为米。风景区地形创建过程为在Unity3D菜单栏中选择“Terrain”一>"Create Terrain",这样就创建了一块面积较大的平面区域,面积大小也可以在Terrain工具栏下的“Set Resolution”选项中进行调整,因为模型要依附于地形上,所以可以通过调整地形和模型的坐标让它们处在同一个面[5]。

2)场景的导入

为保证场景在漫游时贴图不至于丢失,需要把在3DMax建模中使用的图片、文件、文件夹以及模型中物体、材质等统一复制到Textures目录下,并且在命名时不能采用中文或特殊符号。再打开Max文件,导出为FBX文件,由于风景区内建筑物众多,所以在制作时把模型分为几大类,比如:树木、植被、建筑、地形、牌坊、鼎,石像等,然后分开导出将包含Max文件、FBX文件和Textures文件夹的文件拷贝到Unity3D项目的Assets目录下,完成图片的复制工作。当再次启动Unity3D时,所有的项目都会自动导入编辑器生成文件夹信息,并生成Materials文件夹,风景区的部分贴图如图3。

3)风景区3D漫游实现

图3 Materials风景区贴图

漫游系统采用第一人称主视角的方式进行漫游,给观赏者更强的深入感。利用FirstPersonController作为用户的控制对象该对象由四个组件组成:TransformFPSInputContrController(script,Character,Controller(script,MouseLook(script在Unity3D中,是以层次关系来组织相关物体的,在工程面板中,可以看FirstPersonController中有两个子物体:一个是Graphics,另一个是Main Camera。Transform组件:用来控制物体的旋转、缩放和定位;FPSInputController:是实现第一人称漫游的核心,在风景区中通过一个附着在 FirstPersonController上的JavaScript脚本,它可以实现用户通过键盘操作场景进行行走、跳跃、奔跑、旋转的功能,同时可以调节前进的速度、跳跃速度J和重力等; CharacterController:角色控制器,提供了碰撞检测功能,场景中物体之间发生力的互相作用时会产生碰撞,在风景区漫游时通过调整Slope Limit可以让角色实现翻山越岭的果,MouseLook也是附属于 FirstPersonController上的一个C#脚本。它实现功能是用户用鼠标控制角色水平垂直两个平面视野的旋转。MainCamera作为漫游时的一个重要的组件,它提供了用户的视点,在起到展示场景的同时通过调节其各个属性,可以改变相机的渲染效果,通过参数设置,调整第一人称控制器在场景中的位置,可以看到控制器和地面模型发生碰撞后,用户站立在场景中,通过键盘操作即可进行漫游操作。

2.3 场景树生成和Skybox添加

1)场景树

为节省资源保持运行的流畅,使用Unity3D自带的场景树功能将大大节省资源。为了加速场景的漫游Unity3D引擎对场景树提供了支持,在场景中地面上可以放置千棵树,实际渲染时此采用1个实际的帧率渲染它们。在风景区漫游场景中将靠近相机的树渲染为3D,将远离摄像机的树转变为2D公告板,利用公告牌自己转动自己的原理,这样做出来的场景树无论从哪个角度观察都是场景树[8]如图4所示。

图4 通过树添加成森林

2)SkyBox添加

为了真实的展示黄河风景区在不同气候条件下的景区场景,比如晴天,阴天,雾天、雨天等场景,在系统中利用 Unity3D自带的SkyBox实现。选择菜单栏的“Assets”->“Import package”->“Sky boxes”把所有的Skyboxes都添加进入“Material”点击“Edit”->“Render setting”。例如:制作晴天的黄河风景区,在选择Unity3D中的SkyBox中添加Sunny1 SkyBox添加成功后点击预览效果,如图 5所示,就可以看到一个很逼真的太阳。

图5 风景区晴天场景

3系统测试与总结

通过Unity3D生成EXE可执行文件后对系统进行了测试,用户在漫游时可以根据自己的路径进行自由漫游,如图6是用户漫游时的炎黄二帝广场效果图。

图6 炎黄二帝主广场

通过Unity3D虚拟现实技术完成了黄河风景区的虚拟场景漫游,给旅游产业带来新的革命。通过风景区漫游仿真系统使用户足不出门就可以领略到黄河风景区的名胜、建筑群、建筑特色,为黄河风景区的网络宣传起到了巨大的推动作用,漫游系统在被风景区推广到旅游网上后,使用户在节省景区门票购买费用的同时,也使得黄河风景区有机会被推广到更多的人群中去,为风景区的景区特色起到了很多好的宣传作用。

参考文献:

[1] 吴亚峰, 杜华美,等.Unity 4 3D开发实战详解[M]. 北京: 人民邮电出版社, 2013: 216-222.

[2] 蔡翊. 基于Unity3D的金丝峡地质公园虚拟旅游系统的研究与实现[D].西安: 西安科技大学, 2012.

[3] 彭国安. 3DMAX建模与动画[M].武汉: 华中科技大学出版社, 2012.

[4] 黄心渊. 基于Unity3D的虚拟故园系统开发与实现[D]. 北京: 北京林业大学, 2014.

[5] 赵韩, 曾文萱, 黄方毅, 董玉德. 基于Web的三维模型库系统的研究与开发[J]. 合肥工业大学学报:自然科学版, 2005, 28(11): 1384-1388.

[6] 徐素宁, 韦中亚,等.虚拟现实技术在虚拟旅游中的应用[J]. 地理学与国土研究, 2001, 17(3): 92-96.

[7] 魏迎梅. 虚拟环境中碰撞检测问题的研究[D]. 长沙: 中国人民解放军国防科学技术大学, 2000.

[8] 云南“一颗印”居民数字虚拟展示系统设计与实现[D]. 厦门: 厦门大学, 2012: 63-67.