基于Unity3D的三维虚拟电脑组装实验系统开发毕业设计含源文件_第1页
基于Unity3D的三维虚拟电脑组装实验系统开发毕业设计含源文件_第2页
基于Unity3D的三维虚拟电脑组装实验系统开发毕业设计含源文件_第3页
基于Unity3D的三维虚拟电脑组装实验系统开发毕业设计含源文件_第4页
基于Unity3D的三维虚拟电脑组装实验系统开发毕业设计含源文件_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

0(此文档为 word 格式,下载后您可任意编辑修改!)基于 Unity3D 三维电脑组装实验系统的实现 【摘要】实验教学不仅能够培养学生的动手能力,而且还能起到巩固课本上理论知识的作用。但是由于我们国家人口基数庞大,教育资源有限,实验器材紧缺,不能满足广大在校学生或者社会成人求学需求,因而成为教学和学习中最难以付诸实践的薄弱环节。随着虚拟现实技术的出现,实验教学有了新的思路。Unity3D 引擎对开发仿真性非常高、交互性非常好的虚拟实验环境具有很大的帮助。本文在对虚拟实验室的研究现状进行充分调研的基础上,借助 Unity3D 引擎和 3DS Max 三维建模软件,搭建了一个逼真且操作方便、具有交互功能的组装计算机硬件的虚拟实验操作平台,对组装计算机实验进行了模拟,实现了实验过程以及部分实验现象的模拟。系统的主要功能是让用户采用虚拟仪器完成组装过程,从而达到学会组装计算机的目的。 【关键词】 虚拟实验;Unity3D;计算机组装;1.引言1.1 研究背景及意义早在十六世纪,实验就被运用于教育教学。实验是指根据科学研究的目的,尽可能排除外界因素的影响的同时突出主要实验因素,并且利用一些专门的仪器设备而人为地改变、控制或者模拟研究对象,使某一些事物(或过程)发生或再现。实验的目的在于通过学习者亲自动手参与实验,从而培养学习者的观察能力、分析能力和实践能力。研究表明,人的动作记忆效率远远高于语言文字的记忆效率,所以通过动手参与的学习比单纯看书要更有效率,实验教学通过让学习者了解事物的本质,培养学习者的研究能力、创新能力,加1强学习者对知识的运用和实践,因此成为教育教学中一个不可分割的部分。最开始的实验教学都是真实实验,学习者在真实的实验环境下操作实验设备来完成实验目的。但是随着人口数量的增加,知识研究领域的扩展,真实实验暴露出了许多缺陷,比如许多实验器材价格昂贵,实验资源无法满足广大学习者的需求,实验存在安全隐患,真实场景带来的实验误差等等。虚拟实验的概念也就应运而生了。虚拟实验的概念最早由美国弗吉尼亚大学的威廉沃尔夫(William Walf)于 1989 年提出,它是在虚拟现实技术的基础上产生和发展起来的,是对真实实验尽心模拟或再现的一种实验模式。它的主要组成部分都是通过计算机虚拟而成的,包括实验室环境,实验室仪器以及实验资源。在虚拟实验中,学习者不受时空的限制,可以随时随地的进入虚拟实验系统,通过键盘或者鼠标、数据手套等交互设备与虚拟实验系统中的虚拟仪器进行交互,完成与真实实验一样的各种实验操作过程。Unity3D 作为一款专业的商业游戏引擎,早在 2010 年就进入了我国,由于其友好的操作界面和强大的性能,在国内积攒了众多的开发者。其官网上得 AssetStore 也给广大开发者提供了数量众多,类目琳琅的插件,可以大大的缩短开发者的开发周期。近年来,Unity3D 为虚拟现实提供了完整的解决方案,其强大的物理引擎,基于 DirectX 和 OpenGL的高度优化渲染管道,还有可编辑的 Shader 着色器,让模拟真实多变的生活环境变成现实。因此我选择 Unity3D 来开发这样一个虚拟电脑组装实验的系统,为学习者提供一个自由、真实的实验平台,利用本系统进行实验教学,让学习者认识计算机硬件,掌握组装电脑的一些基本技能。1.2 研究内容本文主要在于借助 Unity3D 引擎将虚拟现实技术引入虚拟实验中,探索新的虚拟实验的教学模式。具体研究内容包括以真实实验在教育教学中的重要作用和协作学习对学习者能力的培养作为立足点,将虚拟现实与虚拟实验结合起来;利用 Unity3D 实现虚拟计算机硬件与实验者交互,突破实时交互的一些难点;完成整个系统架构设计,并且编写代码实现整个系统功能。2.虚拟实验器材的制作2.1 3DS Max 模型创建2.1.1 多边形建模技术多边形建模技术是三维建模技术中比较常见的一种建模方式。现实世界中的很多物体都可以看成是由基本的几何体进行变形和细分得来的。多边形建模就是基于简单的长方体、圆柱体、球和其它一些几何体,运用添加线,点来进行细分,面挤出,边挤出等三维建模2手法来完成模型的创建。多边形建模技术的优点在于它能很快的把目标模型的大体轮廓勾勒出来,对于精度要求比较低的模型来讲,甚至可可以经过简单的几次变形就可以达到想要的效果。因此对于较为规则的家具或者家用电器来讲,使用多边形建模可以极大地提高工作效率。计算机组装实验所用到的计算机的主板、内存条、显卡、电源以及机箱显示器等主要零部件都是比较规则的几何体,主板上看似比较复杂的各种电阻和插针,仔细看其实都是一些简单的圆柱体。下面图 1、图 2、图 3 是用 3DS Max 多边形建模方法制作的计算机部件模型。图 1 CPU 制冷风扇3图 2 主板图 3 液晶显示器2.2 模型 UV 拆分和材质贴图4UV 的是贴图坐标的简称,它定义了一张二维图片将以何种方式贴到三维对象的表面之上。在 3DS Max 中通过加 UVW Map 修改器可以为一些常用模型选择贴图方式,比如平面映射、柱面映射、球面映射、立方体映射等。但是当遇到比较复杂的模型时,就不能依赖这种方式了,需要手动来为模型拆解 UV。UV 拆分有几个原则:拆分出来的 UV 碎块要尽量少,这要贴图贴上的接缝就会更少,便于处理;需要将拉伸降低到最小,UV 反映的是图片上的每一个像素点到模型表面上每一个点的对应关系,如果 UV 出现拉伸,就会出现模型的表面一些区域承载过多的图像信息,另一些区域承载的图像信息却太少,贴图就得不到正确的显示;还要避免贴图坐标的重叠。贴图坐标重叠将直接导致重叠的贴图部分分配不到正确的图像信息;最后还要尽可能有效使用纹理空间。由于在建模的过程中,经常需要将一个模型拆分成很多部分来创建,最终将各个部分整合成一个完整的模型。而模型在最终的材质表现上,各个不同的部分可能需要不同的贴图或者材质。这在计算机的硬件上体现的尤为明显,比如一块显示器的显示屏幕和底座的材质是明显不一样的,而在显示器的边框上可能还有生产厂商的 Logo 和按钮。因此,很多时候需要用到多维子对象(MultiSub-Object)材质。只要在建模的时候,给每个子对象分配好材质 ID,就可以将子材质赋予给指定的模型子部件。下面以内存条为例:首先在面级别下选中内存条上所有的芯片,在右侧的修改器栏里找到多边形材质 ID 组,设置材质 ID 号为 2,如图 4:图 4 为内存芯片指定材质 ID5然后用同样的方法选中内存条的侧边,为它指定材质 ID 号为 1,如图 5:图 5 为内存条侧面指定材质 ID用这种方法给内存的其它部分也指定 ID 后,就可以进入材质编辑器,创建一个多维子对象材质,因为总共为内存条指定了 5 个材质 ID,所以需要创建一个包含 5 个子对象的多维子对象材质,每个子对象材质材质可以单独编辑,漫反射颜色可以纯色也可以贴图,环境光和高光反射根据具体情况进行设置,如图 6 所示。由于 Unity3D 引擎也是支持多维子对象材质的,所以在 3DS Max 中做的这些工作都不会是徒劳的。6图 6 多维子对象材质设置将用到的贴图保存在一个文件夹里,在导入 U3D 引擎的时候需要重新进行指定。准备工作做完之后就可以导入 U3D 引擎了。2.3 资源导入 Unity3D 引擎将三维软件制作的模型导入 Unity3D 引擎时需要注意一些问题。首先是 X 轴向偏转。3DS Max 模型导入引擎后将自动有一个绕 X 轴 270 度的偏转,在Unity 中旋转模型的时候,Y 轴的参照方向永远朝上,而 X 和 Z 轴则以模型的自身局部坐标为准,所以当模型旋转 270 度后,Z 轴正好与 Y 轴重合。解决这个问题需要将模型文件导出成为.3ds 类型的文件再导入 Unity。其次是材质问题。模型文件导入 Unity 后,Unity 只会自动生成材质球,但是材质的贴图需要手动导入 Unity 工程然后进行指定。如果模型具有法线贴图或者光照贴图,还需要选择正确的着色器(Shader)才能达到想要的效果。最后是缩放因子。三维模型的单位需要在前期建模的时候就设置并统一,否则模型出来的大小会不匹配。Unity 中的 1 单位是 fbx 文件中 1 单位的 100 倍,因此如果 Unity 中 1 单位定义为 1 米的话,那么在 3DS Max 中制作模型的时候,单位就应该设置为 1 厘米。缩放7因子在导入模型时也可以手动设置,如果是以 fbx 格式的文件导入的模型,可以将模型的缩放因子设置为 0.01。将外部资源导入 Unity 有三种方式。 第一种方式是存入工程文件夹。创建工程以后,在磁盘上会有一个工程文件夹,找到工程名下的 Asset 文件夹,将需要的模型资源、贴图资源复制粘贴到这里即可。为了工程结构的简洁明了以及方便查找资源,可以分别为模型和贴图创建自己的文件夹。第二中方式是在直接拖入到 Unity 中。在外部文件夹中选中需要导入的资源,直接拖拽进 Unity 的 Project 窗口中即可。第三种方式主要是用来导入.unitypackage 类型资源。Unitypackage 是 Unity 打包文件生成的一种格式。在 Unity 的顶部菜单栏找到 AssetImport PackageCustom Package,在本地磁盘找到需要导入的 unitypackage 文件点击确定就行了,如图 7 所示。图 7 导入 unitypackage 文件 图 8 模型导入设置模型导入 U3D 后需要设置一些参数,正确设置这些参数,模型才能更好的被程序使用。选中导入的模型,在监视器窗口会出现如图 8 的菜单。其中有几个主要参数需要进行设置:Scale Factor前面提到的缩放因子,这里我根据实际模型的匹配需要将它设置为0.004。Mesh Compression面片压缩。优化模型的面数从而优化最终程序的性能。ReadWrite Enabled勾选将使得导入的资源可以在引擎内被读写。8Generate Colliders生成碰撞器。勾选将会生成匹配模型的碰撞器。其他的参数因为在这个系统中无需用到,所以按照默认的参数设置就可以了。3.Unity3D 引擎研究3.1 引擎介绍Unity3D 是一个用于创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的综合型的创作工具,开发者是 Unity Technologies,目前最新的稳定版本是 2013 年12 月发布的 4.3.1。2005 年 6 月 Unity 第一个版本 1.0.1 发布,标志着 Unity 的诞生。Unity 是一个跨多平台的游戏引擎,利用交互的图形化开发环境作为编辑器提供给开发者,可运行在 Windows 和 Mac OS X 下,可发布应用到 Windows、Mac OS X、Android、iOS、Web 等平台。Unity 拥有以下主要特性:层级式的综合开发环境、视觉化编辑,详细的属性编辑器和动态游戏预览。跨平台支持。可以开发 Windows、Mac OS X、iOS、Android、Blakberry、Xbox、Windows Phone 等平台的应用程序。自动资源导入。项目中的资源会被自动导入,并根据资源的改动自动更新。基于 Direc3D(Windows) 、OpenGL(Mac、Windows)的图形引擎,并且有自己的API(Wii) 。支持 Bump mapping、Reflection mapping、Parallax mapping、Screen Space Ambient Occlusion,动态阴影使用的是 Shader Map 技术,并支持 Render-to-Texture 和全屏 Post Processing 效果。Shader 编写使用 ShaderLab 语言,同时支持自有工作流中的编程方式或 CG、GLSL 语言。内置对 Nvdia 的 PhysX physics engine 支持。游戏脚本是基于 Mono 的 Mono 脚本,开发者可以使用 JavaScript、C#或 Boo 语言编写脚本。音效系统基于 OpenAL 程序库,可以播放 Ogg Vorbis 压缩音效,视频采用 Theora 编码。93.2 事件函数、脚本执行顺序和生命周期Unity 中的脚本不像常规程序在一个循环中的执行直到任务完成,而是通过调用一些事先声明好的函数,断断续续的将控制权传给一个脚本。当一个函数执行完毕后,控制权便又交回给 Unity。这些函数就是事件函数。下面按照脚本的执行顺序介绍一些常用的 Unity 事件函数。Awake()。当前控制脚本实例被装载的时候调用。一般用于初始化整个实例时使用。Start()。当前控制脚本第一次执行 Update 之前调用。Update()。最常用的事件函数,每帧都执行一次。FixedUpdate()。每固定帧绘制时执行一次,与 Update 不同的是 FixedUpdate 是渲染帧执行,当渲染效率地下时,Fixed

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论