基于Unity3D的室内漫游仿真系统研究

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于Unity3D的室内漫游仿真系统研究研究背景和意义1相关理论和技术2系统需求分析3系统架构设计4系统实现5总结和致谢6目录研究背景和意义•虚拟现实技术综合利用了计算机图形学、仿真技术、多媒体技术、人工智能技术、计算机网络技术、并行处理技术和多传感器技术,模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间。虚拟现实技术已经在多个领域中得到应用,如家庭娱乐系统、军事仿真系统、室内漫游仿真系统、医疗系统等,创造了巨大的社会价值和经济价值。研究背景和意义•室内漫游仿真系统作为虚拟现实技术的一个分支,正在得到迅速的重视和发展。室内漫游仿真系统的优势在于,相对于单一的图片展示,更能使用户获得身临其境的直观感受,能获得更细节、全方位的信息。它的沉浸感、交互感是其他传统媒体平台和动画所无法比拟的。室内漫游仿真系统包括一个逼真的视、听、触觉的一体化的虚拟环境,用户借助必要的装备在该环境中漫游,从任意角度观察环境中的物体,从而产生身临其境的感觉,同时也可以对环境中的家具进行规划和操作。应用领域相关理论和技术三维建模,是通过三维建模软件,将心中想象的或设计图纸中的家具和建筑模型构建出来,然后再通过绘图软件来绘制贴图,将贴图映射到模型的表面,最后完成一个一个物品的过程。三维建模方法:几何建模/建模软件建模、设备扫描建模、根据图像或视频建模•编程控制,是通过编写代码,精确控制每一个家具的运动和位置,控制人物在室内的行走,摄影机的移动,达到漫游的目的。室内漫游仿真系统三维建模编程控制相关理论和技术系统开发流程图如下图所示三维建模•本系统采用3dsMax2009建模软件为建模工具,它具有易上手、教程多、插件众多、能建立工业级复杂模型的优势。•场景三维建模是室内漫游仿真系统主要构成部分,也是整个项目最为繁重的部分•建模原则:–首先要尽量做简模。虚拟现实中的运行画面每一帧都是靠显卡和CPU实时计算出来的,如果面数太多,会导致运行速度急剧降低,甚至无法运行;模型面数的过多,还会导致文件容量增大,在网络上发布也会导致下载时间增加。–第二,模型的数量不要太多。如果场景中的模型数量太多会给后面的工序带来很多麻烦,如会增加烘焙物体的数量和时间,降低运行速度等编程控制本系统采用Unity3D引擎为实现平台,它具有超高的性能和简便的场景编辑器,拥有AAA级别的功能和组件,满足各种平台的需求。编程控制•Unity3D采用组件式开发,它包括寻路、动画、资源管理、音频、物理、图像效果、首选项设置、网格、网络、渲染、GUI用户界面、变换、摄像机、光照、角色控制、粒子特效等数十个组件。•它拥有层级可视化编辑器,动态的游戏预览和属性编辑,支持自动资源导入,支持BumpMapping、Reflectionmapping、Parallaxmapping、Shadowmapping、lightmapping等技术,内建地形编辑器,支持树木与植被贴片,支持多人网络联机。•Unity3D支持三种语言,即C#、JavaScript、Boo,前者是面向对象语言,对于大型项目宜采用;后两者是脚本语言,对于中小型项目更具有灵活性。编写程序必须调用Unity3DSDK中的API,包括实时运行类和编辑器类•项目工作主要集中在Assets文件夹,包括models、scripts、materials、textures、sounds、shaders、standardassets7个文件夹。scripts下放编写的脚本文件。在保存场景的时候,系统会自动编译脚本为.netdll文件。系统需求分析开始着手项目,首先应该对系统做需求分析,确定系统要做什么。需求分析之所以重要,就因为它具有决策性,方向性,策略性的作用。我姑且把它称作需求驱动开发。用户需求:1.别墅建筑有四层,第一层是杂物储存室,第二层是起居室、读书室、活动室等,第三层是会客室,第四层是天台。2.用户能利用键盘和鼠标来控制摄像机的移动。3.用户能与场景中的道具有交互体验。4.系统具备和现实世界一样的物理特性。系统需求:1.采用面向对象的软件开发工具,使系统具有可扩展性、可维护性和稳定性。2.操作界面友好,系统运行流畅,内存占用适中。系统架构设计系统分为三维建模和编程控制,那么自然在设计的时候就分为模型和程序两个模块。这样在项目的不同阶段,可以针对某一个模块进行实施,让开发人员得到一定程度的解放。模型模块程序模块模型模块设计模型模块的设计图如下所示,整个模块分为三个层次,在建模要求上和模型复杂度上都有不同的要求,需要区别对待。程序模块设计程序模块的设计图如下所示,整个模块也分为三个层次,按功能的优先级划分依次是漫游、交互操作、系统设置。系统实施-三维建模首先是建筑模型的三维建模。1.楼体建模。规划设计整个楼体的形状和各附属物(门、窗、楼梯)等的相对位置及它们的尺寸比例。四层楼的建筑,可以分成四个部分,每一层楼为一个部分,单独在一个max文件中建立,每层楼的楼体建立过程大体相似,墙壁、门窗、地板都可以用同一套资源。系统实施-三维建模2.室内家具建模。包括书桌、沙发、床等的建模,要求比较精细,综合运用了旋转、弯曲、面片编辑、多边形编辑等修改器。下图为椅子、台灯的模型成品。系统实施-三维建模3.其他设施。主要包括地形和植物。地形本质上是一张平面,只是在U3D中又加了一些东西而成了一个独特的Terrian对象。在这层地形上,可以拉出山脉、高原,栽种一些植物,铺就一层植被和绿茵草。系统实施-三维建模4.灯光。在Unity3D中,依次点击GameObject-DirectionalLight创建太阳光,选择SpotLight创建室内灯光。系统实施-三维建模最后整合场景,将资源按规格命名,依次导入Unity3D并作简单优化。系统实施-程序编写1.摄像机漫游。首先创建一个替代主角的物体,随便什么模型都可以,这里选用一个胶囊体A,并为之创建一个CapsuleCollider包围盒。Unity3D已经内置了一个CharacterController,里面已经包含了包围盒,并附带一些其他运动控制信息,所以这里为胶囊体A附加一个组件CharacterController。此时A只是具有了包围盒和一些物理信息,但是它自己不能动,因为没有任何让模型A运动的逻辑处理代码。所以再创建一个JavaScript脚本名为CharacterMotor(寓意为模型的运动马达)。系统实施-程序编写此时虽然有了处理模型运动的代码,但是模型仍然不能动,为什么?因为没有处理用户输入的逻辑代码,当用户按住W、S、A、D的时候,系统并没有去获取这些输入信息,所以还要创建一个JavaScript脚本文件名为FPSInputController。系统实施-程序编写完成这一步,模型A能运动了,但是我们的视觉没有跟着模型A一起运动,因为摄像机(相当于这虚拟世界中我们人的眼睛)并没有移动。这里需要把摄像机MainCamera1和模型A绑定起来,让MainCamera1跟着A一起运动。因此这里需要创建一个JavaScript脚本文件名为thirdpersoncamera.将MainCamera1指定给CameraTransform组件,完成这一步,我们的摄像机就能跟随模型A一起运动,并不断变换视角,终于有了一丝漫游的味道。系统实施-程序编写很快我发现,我的眼睛(摄像机)只能直勾勾地盯着前方,不能转动脑袋,仿佛僵硬的机器人。这是因为我在绑定摄像机之后,它的角度和位置是固定的,我要想转动摄像机,就需要实时地改变摄像机的角度。通过鼠标的X、Y坐标来获取用户的输入,这与我们以往的游戏体验是一致的。为了能够处理X、Y坐标的输入信息,并改变摄像机的角度,我需要创建一个JavaScript脚本文件MouseLook,将它附加到MainCamera1上。做完这一步,摄像机漫游的功能就做完了。系统实施-程序编写2.碰撞检测。Unity3D内置五种包围盒,即Box,Sphere,Capsule,Mesh,Wheel包围盒。所以直接在需要碰撞检测的模型,比如墙壁、楼体、门等加上碰撞检测器。系统实施-程序编写3.门的交互控制。为了实现门的打开,本质上来说就是要控制门要绕着Z轴旋转九十度。因此我创建了一个JavaScript脚本文件名为DoorControl,并将之附加到门的门把上,这样与现实似乎一致。在这个文件里我检测鼠标点击事件,当点击门把时,门旋转九十度,结果就达到了开门的目的。系统实施-程序编写4.音乐的控制。为了实现背景音乐的关闭,我专门做了一个音响模型SoundBox,然后创建了一个脚本文件名为SoundControl,并将SoundControl脚本组件附加到SoundBox上。最后别忘了随便在某处添加一个AudioListener。总结项目成果:基于Unity3D的室内漫游仿真系统一套。学习并实践了Unity3D开发知识,积累了初步的研究能力。存在的主要问题:•由于项目的复杂、技术的水平限制,我的项目并没有达到我心中完美的模样,有些功能还没有开发出来。•别墅模型的精度还不是很高,贴图也绘制得不是特别像,尤其是贴图绘制好之后,要放大模型就会发现贴图变模糊了。•对Unity3D的学习还不足够,只实现了大概的功能,并没有完善到细节,程序的架构设计还存在不合理的地方。

1 / 27
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功