[虚拟现实,系统]虚拟现实漫游系统的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
虚拟现实漫游系统的设计与实现
摘要:漫游系统的设计以西北民族大学大学生实践创新中心为研究对象,利用3DS MAX、Unity3D等软件,探讨了虚拟现实漫游系统的设计与实现过程以及设计过程中需要注意的一些技术上的关键问题。漫游系统的设计实现了交互、自寻路径、碰撞检测等功能,真实的还原了大学生实践创新中心场景。
关键词:漫游系统;三维建模;模型优化;游戏引擎
1 系统概述
虚拟现实漫游系统是利用三维建模软件3ds MAX、MAYA等加以游戏引擎如UDK、Unity3D 等的配合来实现在电脑中再现现实世界的技术。西北民族大学大学生实践创新中心的设计利用3ds max软件建立模型,Photoshop软件处理贴图,最后将模型导入unity3d中设计游戏引擎并发布。
2 数据采集
数据采集阶段是系统开发的基础,西北民族大学大学生实践创新中心漫游系统的数据采集包括CAD图纸的设计、建筑参数的测量、建筑实景照片的拍摄以及室内数据的收集等。
利用计算机辅助设计CAD导出的图纸,精确搭建西北民族大学大学生实践创新中心建筑模型,不仅使工作效率得到极大的提高,同时模型的精度也是非常高的。建筑的高度难以测量,利用微积分思想,通过数台阶的方式。这样只需测量每个台阶的高度,就能通过简单的计算得到建筑的高度。
3 模型建立
3.1建筑建模
漫游系统制作的第一步就是模型的建立,首先,利用已有的西北民族大学大学生实践创新中心CAD图纸(如图1),将其导入3Ds MAX软件,采用分层导出的方法进行外场景建筑的制作。
3.2室内建模
室内建模对于还原场景十分重要,直接关系到后期用户界面的体验效果。模型精确程度关系到后期纹理贴图,模型不能过于简单,因为如果模型过于简单,模型就会显得粗糙,导致很多细节都不能表现出来,模型容易失真。但是如果物体的每一个面都用三维模型的面来模拟,又容易产生大量的三角面,增加了每一次的渲染时间。
3.3 建模流程和模型优化
3.3.1 三维建模流程
①涉及到多人参加建模,必须统一单位。
②模型中面片之间的最小间距大于场景中最大尺寸的二千分之一。
如果三维模型中两个面与面之间的距离小于此数值,会出现这两个面交替渲染的现象,从而产生渲染时闪烁的情况。三维模型的面片之间不允许有交叉和叠加共面现象,单个的模型不允许出现有破洞的情况,也不可以有黑色反面出现的情况。
③关于模型的结合问题。当三维物体的每一个模型中所有的面片都使用3DS Max软件经过三维建模和添加对应的材质之后,将材质相同的三维模型附加为一个整体,便于后期的移动和渲染。
④对在同一个平面上相邻的两个面可以删除公共的边,但是不要形成凹多边形,保证每个面都是凸多边形。
3.3.2模型优化
由于系统的资源有限,为在有限资源下使程序运行更加流畅,必须对模型进行优化。在3Ds MAX中,模型的面数对游戏流畅程度的影响极大,面数越多,资源消耗越大,从而游戏流畅程度越低,所以模型优化的一类就是减少面数。减少面数并不能随意的减少,只有那些没有贴图并且看不到的面才能优化,否则就会影响模型的外观。
4 材质及贴图的制作
贴图对于整个漫游系统的真实度起着至关重要的作用,整个贴图的设计过程包括照片采集、图像处理、贴图。
4.1 图片处理
利用photoshop软件对图片进行处理,除了对图片的颜色、亮度、污点等调整处理之外,由于大多数照片都是以仰拍的形式进行拍照的,所以将图片调正是贴图质量的关键。将待修改图片置入ps中,通过选择扭曲、缩放等功能的配合使图片调正。贴图像素不能太高,因为图片像素过高在3ds Max里难以导入且会增加渲染负担。
4.2 贴图
贴图主要过程包括,材质球设计、将材质赋予物体、添加UVW贴图。在对外场景建筑贴图过程中采用孤立物体、贴图、隐藏已贴图物体的方式进行贴图,使整个过程更加方便快捷。
对于地砖等进行贴图时注意不能在材质球中更改平铺次数,可以通过UVW贴图对平铺次数进行修改。因为如果直接修改材质球中平铺次数,将模型导入U3D时贴图的平铺次数实际上将不会改变。
贴图过程中还有一个重要的修改器--法线。在贴图过程中我们遇到贴完图渲染出来的却是黑色的问题,这时为模型添加法线修改器便能轻松解决。
4.3贴图优化
在添加UVW贴图后,对其进行塌陷全部命令,使模型转换为可编辑多边形。建模过程中会有很多命令夹杂重叠在模型上,这样就会占用很大一部分内存和CPU,从而拖慢电脑的运行速度,对模型进行塌陷后就会去除那些多余的命令等,把所有附加在立体模型上的修改器、贴图、形态等特征全部固化到模型上,从而节约出大量的内存提高电脑速度。
5 引擎的设计与实现
模型设计完成后,将模型导入unity中从而实现计划的功能。目标包括:灯光、相机的设置,自寻路径,语音播放,碰撞检测,人机交互等功能的实现。
5.1 模型导入前准备
由于3ds Max和unity3d两个不同软件之间的差异,制作好的模型并不能直接导入到unity中,我们还必须进行一系列的处理。
单位的处理
在导出模型前,必须在3DMAX中将系统默认单位设置进行修改,这样才不会在unity中出错。在3DMAX中,默认的单位是毫米,而在unity中默认的单位是米,这两个软件中单位不同。如果不进行相应的处理,将会出现unity中的模型非常小的情况。模型轴向的处理
模型导出前,必须在3DMAX中将模型的y轴设置为向上。因为在3DMAX中,模型的z轴是向上的,而在unity中向上的是y轴。如果不处理轴向,在3ds max中正常的模型,导入到unity中将会竖起来。
5.2功能实现
系统功能主要包括人机交互、碰撞检测、自寻路径等功能以及灯光、相机的设置。交互功能是实现漫游的重点,将‘上’、‘下’等逻辑功能封装成角色控制器组件实现第一人称视角。
碰撞检测在3D漫游系统中至关重要,是模拟物体遇到障碍物时的物理反应。例如当对象遇到墙壁时,则不能继续前进。通过为对象添加相应的碰撞器,物体便能够实现碰撞检测。
Light mapping(光照贴图技术)是一种增强静态场景光照效果的技术,它可以通过较少的性能消耗使得静态场景看上去更真实、丰富,以及更具有立体感。
在使用这一技术的时候,必须进行一定的设置。