1 / 29

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

基于Unity3D的室内漫游仿真系统研究. 目 录. 1. 研究背景和意义. 2. 相关理论和技术. 3. 系统需求分析. 4. 系统架构设计. 5. 系统实现. 6. 总结和致谢. 研究背景和意义. 虚拟现实技术 综合利用了计算机图形学、仿真技术、多媒体技术、人工智能技术、计算机网络技术、并行处理技术和多传感器技术,模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间 。.

raziya
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 目 录 1 研究背景和意义 2 相关理论和技术 3 系统需求分析 4 系统架构设计 5 系统实现 6 总结和致谢

  3. 研究背景和意义 • 虚拟现实技术综合利用了计算机图形学、仿真技术、多媒体技术、人工智能技术、计算机网络技术、并行处理技术和多传感器技术,模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间。 • 虚拟现实技术已经在多个领域 中得到应用,如家庭娱乐系统、军事仿真系统、室内漫游仿真系统、医疗系统等,创造了巨大的社会价值和经济价值。

  4. 研究背景和意义 • 室内漫游仿真系统作为虚拟现实技术的一个分支,正在得到迅速的重视和发展。室内漫游仿真系统的优势在于,相对于单一的图片展示,更能使用户获得身临其境的直观感受,能获得更细节、全方位的信息。它的沉浸感、交互感是其他传统媒体平台和动画所无法比拟的。室内漫游仿真系统包括一个逼真的视、听、触觉的一体化的虚拟环境,用户借助必要的装备在该环境中漫游,从任意角度观察环境中的物体,从而产生身临其境的感觉,同时也可以对环境中的家具进行规划和操作。

  5. 应用领域

  6. 相关理论和技术 室内漫游仿真系统 三维建模 编程控制 • 三维建模,是通过三维建模软件,将心中想象的或设计图纸中的家具和建筑模型构建出来,然后再通过绘图软件来绘制贴图,将贴图映射到模型的表面,最后完成一个一个物品的过程。 • 三维建模方法:几何建模/建模软件建模、设备扫描建模、根据图像或视频建模 • 编程控制,是通过编写代码,精确控制每一个家具的运动和位置,控制人物在室内的行走,摄影机的移动,达到漫游的目的。

  7. 相关理论和技术 系统开发流程图如下图所示

  8. 三维建模 • 本系统采用3dsMax 2009建模软件 为建模工具,它具有易上手、教程多、 插件众多、能建立工业级复杂模型 的优势。 • 场景三维建模是室内漫游仿真系统主要构成部分,也是整个项目最为繁重的部分 • 建模原则: • 首先要尽量做简模。虚拟现实中的运行画面每一帧都是靠显卡和CPU 实时计算出来的,如果面数太多,会导致运行速度急剧降低,甚至无法运行;模型面数的过多,还会导致文件容量增大,在网络上发布也会导致下载时间增加。 • 第二,模型的数量不要太多。如果场景中的模型数量太多会给后面的工序带来很多麻烦,如会增加烘焙物体的数量和时间,降低运行速度等

  9. 编程控制 • 本系统采用Unity3D引擎为实现平台,它具有超高的性能和简便的场景编辑器,拥有AAA级别的功能和组件,满足各种平台的需求。

  10. 编程控制 • Unity3D采用组件式开发,它包括寻路、动画、资源管理、音频、物理、图像效果、首选项设置、网格、网络、渲染、GUI用户界面、变换、摄像机、光照、角色控制、粒子特效等数十个组件。 • 它拥有层级可视化编辑器,动态的游戏预览和属性编辑,支持自动资源导入,支持Bump Mapping、Reflection mapping、Parallax mapping、Shadow mapping、light mapping等技术,内建地形编辑器,支持树木与植被贴片,支持多人网络联机。 • Unity3D支持三种语言,即C#、JavaScript、Boo,前者是面向对象语言,对于大型项目宜采用;后两者是脚本语言,对于中小型项目更具有灵活性。编写程序必须调用Unity3D SDK中的API,包括实时运行类和编辑器类 • 项目工作主要集中在Assets文件夹,包括models、scripts、materials、textures、sounds、shaders、standard assets7个文件夹。scripts下放编写的脚本文件。在保存场景的时候,系统会自动编译脚本为.net dll文件。

  11. 系统需求分析 开始着手项目,首先应该对系统做需求分析,确定系统要做什么。 需求分析之所以重要,就因为它具有决策性,方向性,策略性的作用。我姑且把它称作需求驱动开发。 • 用户需求: • 别墅建筑有四层,第一层是杂物储存室,第二层是起居室、读书 室、活动室等,第三层是会客室,第四层是天台。 • 用户能利用键盘和鼠标来控制摄像机的移动。 • 用户能与场景中的道具有交互体验。 • 系统具备和现实世界一样的物理特性。 • 系统需求: • 采用面向对象的软件开发工具,使系统具有可扩展性、可维护性和稳定性。 • 操作界面友好,系统运行流畅,内存占用适中。

  12. 系统架构设计 系统分为三维建模和编程控制,那么自然在设计的时候就分为模型和程序两个模块。这样在项目的不同阶段,可以针对某一个模块进行实施,让开发人员得到一定程度的解放。 程序模块 模型模块

  13. 模型模块设计 模型模块的设计图如下所示,整个模块分为三个层次,在建模要求上和模型复杂度上都有不同的要求,需要区别对待。

  14. 程序模块设计 程序模块的设计图如下所示,整个模块也分为三个层次,按功能的优先级划分依次是漫游、交互操作、系统设置。

  15. 系统实施-三维建模 首先是建筑模型的三维建模。 1.楼体建模。规划设计整个楼体的形状和各附属物(门、窗、楼梯)等的相对位置及它们的尺寸比例。四层楼的建筑,可以分成四个部分,每一层楼为一个部分,单独在一个max文件中建立,每层楼的楼体建立过程大体相似,墙壁、门窗、地板都可以用同一套资源。

  16. 系统实施-三维建模 2. 室内家具建模。包括书桌、沙发、床等的建模,要求比较精细,综合运用了旋转、弯曲、面片编辑、多边形编辑等修改器。下图为椅子、台灯的模型成品。

  17. 系统实施-三维建模 3.其他设施。主要包括地形和植物。地形本质上是一张平面,只是在U3D中又加了一些东西而成了一个独特的Terrian对象。在这层地形上,可以拉出山脉、高原,栽种一些植物,铺就一层植被和绿茵草。

  18. 系统实施-三维建模 4.灯光。 在Unity3D中,依次点击GameObject->Directional Light创建太阳光,选择Spot Light创建室内灯光。

  19. 系统实施-三维建模 最后整合场景,将资源按规格命名,依次导入Unity3D并作简单优化。

  20. 系统实施-程序编写 1.摄像机漫游。首先创建一个替代主角的物体,随便什么模型都可以,这里选用一个胶囊体A,并为之创建一个Capsule Collider包围盒。Unity3D已经内置了一个Character Controller,里面已经包含了包围盒,并附带一些其他运动控制信息,所以这里为胶囊体A附加一个组件Character Controller。 此时A只是具有了包围盒和一些物理信息,但是它自己不能动,因为没有任何让模型A运动的逻辑处理代码。所以再创建一个JavaScript脚本名为Character Motor(寓意为模型的运动马达)。

  21. 系统实施-程序编写 此时虽然有了处理模型运动的代码,但是模型仍然不能动,为什么? 因为没有处理用户输入的逻辑代码,当用户按住W、S、A、D的时候,系统并没有去获取这些输入信息,所以还要创建一个JavaScript脚本文件名为FPSInput Controller。

  22. 系统实施-程序编写 完成这一步,模型A能运动了,但是我们的视觉没有跟着模型A一起运动,因为摄像机(相当于这虚拟世界中我们人的眼睛)并没有移动。这里需要把摄像机Main Camera1和模型A绑定起来,让Main Camera1跟着A一起运动。因此这里需要创建一个JavaScript脚本文件名为third person camera. 将Main Camera1指定给Camera Transform组件,完成这一步,我们的摄像机就能跟随模型A一起运动,并不断变换视角,终于有了一丝漫游的味道。

  23. 系统实施-程序编写 很快我发现,我的眼睛(摄像机)只能直勾勾地盯着前方,不能转动脑袋,仿佛僵硬的机器人。这是因为我在绑定摄像机之后,它的角度和位置是固定的,我要想转动摄像机,就需要实时地改变摄像机的角度。通过鼠标的X、Y坐标来获取用户的输入,这与我们以往的游戏体验是一致的。 为了能够处理X、Y坐标的输入信息,并改变摄像机的角度,我需要创建一个JavaScript脚本文件Mouse Look,将它附加到Main Camera1上。 做完这一步,摄像机漫游的功能就做完了。

  24. 系统实施-程序编写 2.碰撞检测。Unity3D内置五种包围盒,即Box,Sphere,Capsule,Mesh,Wheel包围盒。所以直接在需要碰撞检测的模型,比如墙壁、楼体、门等加上碰撞检测器。

  25. 系统实施-程序编写 3.门的交互控制。为了实现门的打开,本质上来说就是要控制门要绕着Z轴旋转九十度。因此我创建了一个JavaScript脚本文件名为Door Control,并将之附加到门的门把上,这样与现实似乎一致。在这个文件里我检测鼠标点击事件,当点击门把时,门旋转九十度,结果就达到了开门的目的。

  26. 系统实施-程序编写 4.音乐的控制。为了实现背景音乐的关闭,我专门做了一个音响模型SoundBox,然后创建了一个脚本文件名为Sound Control,并将Sound Control脚本组件附加到Sound Box上。最后别忘了随便在某处添加一个Audio Listener。

  27. 总结 项目成果: • 基于Unity3D的室内漫游仿真系统一套。 • 学习并实践了Unity3D开发知识,积累了初步的研究能力。 存在的主要问题: • 由于项目的复杂、技术的水平限制,我的项目并没有达到我心中完美的模样,有些功能还没有开发出来。 • 别墅模型的精度还不是很高,贴图也绘制得不是特别像,尤其是贴图绘制好之后,要放大模型就会发现贴图变模糊了。 • 对Unity3D的学习还不足够,只实现了大概的功能,并没有完善到细节,程序的架构设计还存在不合理的地方。

  28. 致谢 学士学位论文到此就结束了,我向辛勤指导我的导师王安志表示衷心的感谢!王老师严谨的治学态度、宽阔的视野、渊博的知识和毁人不倦的师德对我影响深远。    四年的学习生涯,短暂而又漫长,我在这里学到了梦寐以求的知识和做人的道理,还有做事的态度,领悟了如何独立思考,领悟了很多人生的哲学。这四年我没有虚度,些许的遗憾才是不完美的完美。    我的父母用辛勤的汗水供我上大学,让我有了更高的平台看世界,也是因为爱着他们,我努力学习拿成绩回报他们。    感谢计科系的各位老师、各位领导对我的认可和帮助。    感谢我的母校四川文理学院,这四年的生活将会是我一生难忘的记忆。

  29. 感谢您的关注

More Related