龙源期刊网的漫游系统的实现作者:刘凯来源:《电脑知识与技术》2015年第25期摘要:随着当今科技的不断发展,三维虚拟仿真技术渐渐走到人们的日常生活之中,通过虚拟现实来使人们对所要进行的事进行大概的评估和预测。建筑三维漫游是现在三维虚拟技术应用最广泛的方法之一,本次选取一个古代小镇作为的虚拟漫游的场景,使用Unity3D引擎作为开发工具,实现了一个建筑漫游系统,具有一定的使用价值。关键词:虚拟现实;unity3D;优化模型;贴图中图分类号:TP311文献标识码:A文章编号:1009-3044(2015)25-0156-02ImplementationofaRoamingSystembasedonUnityLIUKai(NanYanginstituteofTechnology,Nanyang473000,China)Abstract:Withthecontinuousdevelopmentofthemodernscienceandtechnology,3-Dvirtualsimulationtechnologygraduallycomestopeople'sdailylife,whichhelpspeoplehavepossibleassessmentandpredictionaboutwhatiscomingon.3-Dconstructionroamingisoneofmethodwhich3-Dvirtualsimulationtechnologyismostwidelyused,byvirtualroamingitcanrealizetheselectionoftouristdestination,thepurchaseofrealestateandsoon.ThetopicofthisthesisisAnAncientTowninVirtualRoaming,whichhighlightersantiqueChineseclassicaltown.Keywords:virtualreality;unity3D;optimzation;bakingtextures1引言伴随着网络和计算机技术的发展,三维虚拟仿真技术在人们日常生活中的应用已经逐渐普及开来。建筑漫游是虚拟漫游的一个重要分支,通过三维软件制作三维模型,然后将所制作的三维模型导入游戏引擎或者虚拟现实软件中来实现相关的虚拟漫游功能,来实现计算机程序与体验者的交互。在国内,3D游戏引擎作为近年迅速崛起的一项技术,种类繁多,呈百家争鸣之势,本文选用的是Unity3D游戏引擎,来完成一个中国古典小镇的三维漫游,使体验者通过漫游功能和交互体验来感受小镇秀丽的自然风光,并借此来向体验者宣扬中国古代建筑文化,是体验者能够更加了解中国古典文化。2开发流程分析与实现龙源期刊网虚拟漫游开发流程三维漫游着重注意的应该是体验者的体验感受,因此对三维漫游应该具有以下功能:在体验者刚进入虚拟漫游程序时,镜头以一个固定的路径与视角运行,对古典小镇进行一个全景展示。要给体验者一个全景的感受,在半空中固定一个视角,使体验者可以在古典小镇上空360度观察小镇。让体验者可以在小镇中自由行走、参观,自由参观古典小镇中的美景。根据三维漫游想要实现的功能,实现该系统需要经过以下流程:包括素材收集、模型灯光材质、界面的设计、脚本的编写等一系列的过程,具体如图1所示:2.2系统实现2.2.1场景实现数字化建模是整个漫游动画中的第一步也是至关重要的一步,三维漫游所展现给体验者的就是数字模型的部分,体验者可以通过视觉来观察三维模型的外形、材质以及位置等来直观的感受整个场景。三维模型也是之后进行三维漫游创建的基础,对三维模型的创建要正确、简洁,否则在之后的工作中就会出现意想不到的错误,导致工作无法继续进行,甚至从头返工。下面在前期准备的素材和模型的基础上对场景进行搭建。首先是城镇的地形模型。地形模型的创建比较简单,原本对地形的规划如图2所示,在进行建模时发现如果按照规划的进行建模,那么场景的复杂度会远远增加,这样会使系统的负荷远远增加,所以在建模时对地形模型进行了简化建模,建模的步骤为画线将地形的轮廓勾勒出来,然后转换成为可编辑多边形,进行调整。然后,对山地模型进行制作。山地模型在3dsmax软件中制作需要创建一个平面,将平面的纵横比调节的很高才能获得比较好的效果,这样会增加游戏引擎的负担,所以地形模型选择在Unity游戏引擎中制作。进入Unity界面,点击工具栏“GameObjectCreatOtherTerrain”创建一个Unity系统自带地形,在此界面内,按照规划对地形进行编辑,并添加树木、草地等地形对象。模型的制作完成之后,要对模型进行贴图的绘制,在此即要用到Photoshop图形编辑软件和渲染出来的UVW模板,将在开始制作之前就收集好的素材,根据渲染的UVW模板的位置,将图片处理为符合模型UVW的贴图,将贴图赋予模型。2.2.2漫游实现首先,声明Texture2D变量,数量根据自己的需求来定,这是Unity游戏引擎的GUI图片自定义,我们可以通过这些变量将自己在外部制作的图片导入Unity中,使用这些图片来作为自己的UI,提高显示效果。龙源期刊网其次,我们要通过自定的变量和系统自定义的封装函数来获取运行时屏幕的宽高数据,并通过计算获得比例,将比例值赋予自定义的屏幕数据和按钮位置,来达到使UI自适应屏幕的功能。然后,编写场景跳转程序,通过加载Unity自带的封装函数,来调整按钮的位置,并通过函数来实现场景之间的跳转。其中的自适应屏幕代码:sW=Screen.width/sw;sH=Screen.height/sh;Screen.width-400*sW,Screen.height-570*sH,120*sW,120*sH场景跳转代码:if(GUI.Button(Rect(Screen.width-400*sW,Screen.height-570*sH,120*sW,120*sH),v_01)){Application.LoadLevel(1);}在漫游实现过程中,需要添加一个固定视角的场景和一个可以自动漫游的脚本,通过这两个脚本实现以下功能:1)路径动画展示路径动画是绘制一个路径,将摄像机吸附在路径上,并指定摄像机的目标,实现一个路径动画展示。首先,通过Itween绘制一个路径,将路径调整到适当的位置,并新建一个目标物体摆放在适当的位置。然后,通过编写脚本,将摄像机吸附在路径上,控制摄像机的速度,并为摄像机指定目标物体。iTween.MoveTo(this.gameObject,iTween.Hash(path,iTweenPath.GetPath(mypath),time,100,movetopath,false,easytype,iTween.EaseType.linear));以上代码为设定路径动画的相关选项,分别是获取路径、动画总体时间、是否从路径起点开始、移动类型,通过这几个参数来设定路径动画。2)固定视角展示固定视角展示是通过脚本控制摄像机在固定的视角进行旋转观赏,让体验者在指定位置观察小镇全貌。在Unity工程视图中点击右键导入Unity工程包“ImportPackageCharacterController”。在工程试图中选择CharacterControllers文件夹,里面包含一个第三人称的角色控制和一个第一人龙源期刊网称的角色控制。在此,我们将第一人称控制器拖放到Hierarchy视图中去,第一人称的预设物体就会出现在世界坐标轴的原点位置,这样可以减少因直接拖放到视图中出现的错误和产生的调节困难。通过移动将第一人称控制器移动到场景的上方,取消第一人称的重力,通过脚本上的接口限制第一人称控制器的旋转角度。3)移动视角展示移动视角展示为导入Unity的第一人称控制包,让体验者可以在小镇中自由漫游,体验小镇风景。移动视角展示同样需要导入一个第一人称控制器,所以导入与添加和固定视角相同,不再赘述。将第一人称视角通过移动工具调节至相应的位置,对参与碰撞的场景物体添加面碰撞,选择物体“ComponentPhysicsMeshCollider”完成设置。完成后的漫游系统及演示效果如图3所示:3结束语本文以Unity3D游戏引擎为基础,实现了具有基本漫游功能及简单场景设置的小镇漫游系统。针对本系统实时性及逼真性进一步改进的考虑,今后的工作包括:地形匹配问题;基于遮挡裁剪技术的高效场景优化问题;用户交互问题等。参考文献:[1]成国飞.独立游戏开发者[J/OL].http://u3dpro.com.2011.[2]王琦.Autodesk3dsMax2010标准培训教材II[M].北京:人民教育出版社,2010.[3]吴波.3dsMax2010从新手到高手[M].北京:中国铁道出版社,2011.[4]程明智,王一夫.Unity游戏开发技术[M].北京:国防工业出版社,2012.[5]MichelleMenard.GameDevelopmentWithUnity[M].美国:CengageLearning,2011.[6]宣雨松.unity3d游戏开发[M].北京:人民邮电出版社,2012.[7]王亚萍.浅析Unity3创建环境地形[J].计算机光盘软件与应用,2012(19).174-175.[8]王田,李昌菊.虚拟现实[J].艺术教育,20813(07).龙源期刊网[9]安俊伟,亓东,刘帅.浅析虚拟现实技术沉浸性[J].教育教学论坛,2012(12).[10]崔蕾.虚拟现实技术及其应用综述[D].福建电脑,2008(05).龙源期刊网