版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE12基于unity3d虚拟校园漫游系统设计目录TOC\o"1-3"\h\u4975第一章绪论 419531.1研究背景 4273161.2研究意义 513613第二章相关技术介绍 5255742.1三维模型制作软件3dsmax 516622.2三维游戏编辑软件Unity3D 6181422.3C#脚本 7122752.4技术总结 819973第三章虚拟校园漫游系统总体设计 982053.1系统的需求分析与设计目标 9155283.1.1需求分析 9103513.1.2设计目标 9295073.2系统设计流程 10121573.3系统的总体结构及规划 1138643.4系统实现的软硬件环境 11133424.1信息的收集与处理 12142024.2校园中单个实体的场景设计 1237004.2.1地形及地面的设计 13199024.2.2学校大门的设计 14554.2.3天空的设计 1523514.2.4建筑物的设计 16130813.篮球场 19187844.2.4树木的设计 19272524.3虚拟校园的整体拼合 2010063第五章虚拟校园场景的实现 2133705.1基于unity3D的第一视角漫游校园 21176385.2基于Kinect体感交互漫游校园 28215265.3系统的发布 3023315.4系统的测试与优化 302913总结 34第一章绪论1.1研究背景随着信息科技与现代计算机的飞速发展,虚拟增强现实摄影技术已经是20世纪一项必不可缺的全新一代实用技术。虚拟人和现实的基本视觉实现技术方法也就是通过利用计算机技术模拟的各种虚拟人和现实视觉环境应用来实现给虚拟人世界带来沉浸式的一门视觉技术。简单来说,就是把每个人们完全带到了一个计算机虚拟世界中,把手机虚拟和增强现实完美结合在一起来,让每个人们完全沉浸在其中。虚拟三维现实世界是通过产生一个虚拟三维空间的一种虚拟现实世界,利用虚拟电脑技术模拟了现实的三维世界。使用手机虚拟连接现实的同时人们都可以直接感受到人的视觉,听觉和手的触觉。让更多人真的能够身临其境,可以观察虚拟现实世界的事物。随着近些年各大高校的技术发展,教育环境和教学质量得到不断地提升,同时,高校间的竞争也在宣传力度和宣传方式上有所体现。而在20世纪科技的时代,计算机知识的专业普及,人们对计算机虚拟服务的要求也越来越高。而这种虚拟现实校园信息系统技术正是这种虚拟增强现实的重要应用,它可以帮助各大高校体现校园的魅力。虚拟教学校园管理系统成功实现了对虚拟教学校园环境和虚拟校园整体景观的自动虚拟化和自动数字化,可以有效帮助那些想要深入了解高校的学生人们身临其境,对加强学校的文化宣传、环境管理规划、教学资源利用管理和促进学校经济发展等都起到了非常重要的促进作用。通过虚拟校园系统,可以进入学校官网了解学校全貌,方便省事。还可以通过电脑进行学校的近距离观察,让学生,家长,老师实时地了解校园的教学和生活状态。总的来说,对高校的宣传等各方面起到了非常大的作用。1.2研究意义虚拟现实校园信息系统主要是对学校教学活动环境和学生校园的一种移动数字化技术体现,使那些想要随时了解整个学校的学生人们不仅能够在移动手机或者电脑等移动电子设备上随时了解整个学校校园全貌,身临其境地自由漫游于整个虚拟现实校园当中,在加强学校的教育宣传、环境管理规划、教学资源综合管理和引导学校未来发展等许多功能方面也都发挥了非常重要的引导作用。通过网络虚拟进入校园管理系统,想要了解学校的人们可以进入高校官网,用虚拟校园系统浏览学校全貌,置身于校园之中,用电子设备实时了解校园的教学和生活状态,即方便又快捷。通过三维虚拟现实校园信息系统,新生在学校入学前就已经可以直接了解我们学校的全面整体布局,熟悉各学校职能部门及各学校建筑物的具体位置空间分布,能够更快的直接融入感受到虚拟校园生活;通过三维大学虚拟现实校园,高考即将结束的在校学生及其在校家长们都可以通过这个网络,对我们学校情况进行更全面的直接了解,这对于我们学校的体育宣传工作起了很大的促进作用,同时也有效树立了我们学校的良好形象,这也就是为广大普通用户量身搭建了一个直接了解虚拟校园的一个实际应用平台;通过三维大学虚拟现实校园,不仅仅是可以大大提高我们学校体育教学、科研、后勤保障等教学管理工作的综合效率,还同时可将其信息发布到您的网络上、手机上,向国内外广大人民群众展示一下学校基本概况、校园美丽风光、科研成果、机构本部设置、院系和学生专业本部设置、历史沿革、教学设施与科研成果、国内外国际合作项目交流等;三维大学虚拟现实校园系统有着广泛的实际应用发展前景和广泛推广应用价值。由此可见,虚拟现实技术在教育行业更具有突出的推广作用。第二章相关技术介绍2.1三维模型制作软件3dsmax3dstudiomax应用软件,常见的简称为3dmax或3dsmax,是由于在discreet公司开发后被doautodesk公司收购合并的基于整个dosax操作系统的3dstudio的一系列应用软件。该软件在高层建筑结构建模设计方面同样具有强大的设计功能,因此它也是目前国内使用最为广泛的3d构筑建模设计软件。3dsmax电脑有着非常好的性价比、功能强大、价格低等诸多优点,对电脑硬件的配置要求并不高,一般十几个人一台电脑就已经可以轻松运行这些基本操作。3dsmax的建模过程较简单也非常有趣,对于新手来说很容易。没有繁杂的教学命令,可以轻松让广大初学者快速地寻找到自己学习的一种乐趣,很好地有效培养了广大初学者的学习自信心;随着社交网络的快速发展,许多年轻人们已经开始在社交网络上进行学习,所以3dmaxn该软件的免费网络教程也数不胜数,要想学习简单的操作,那是很容易的。如:51硅谷动力、51自学互联网、21世纪移动互联网及51火星机器人等一系列的企业案例分析教程,同时,3dsmax软件相关的企业网络学习论坛也给网络学习者和其他使用者之间带来了极大的便利,提供了相互交流或者沟通的一个桥梁;最主要的优点是3dsmax转换软件本身兼容性强,可以顺利转换成其他的格式文件,与其他软件可以进行相互配合转换使用;像在此论文中,采用了3dmax导出fbx文件,在导入到unity当中,非常便捷。利用3dsmax软件做出来的模型或是动画等效果非常逼真,这也是我想采用这类软件的原因。2.2三维游戏编辑软件Unity3D虚拟校园漫游系统的软件开发技术是目前虚拟漫游校园系统的开发核心,选择合适的开发平台是至关重要的。经过对基于converse3d和基于unity3d的数据分析进行比较,最终可以确定这是使用基于unity3d三维虚拟游戏处理引擎设计开发出的虚拟现实校园漫游系统。unity3d游戏是由腾讯Unitytechnologies公司自主开发的一个可以让玩家用户能轻松快速创建播放诸如三维网络视频全景漫游、建筑全景可视化、实时全景三维动画等多种类型网络互动游戏内容的多媒体平台的专业综合型网络游戏软件开发工具,具有直观的网络游戏文件编辑操作环境,是一款全面功能整合的大型专业网络游戏开发引擎。unity3did是一款利用交互的在线图形化图像开发软件环境来作为首要运行方式的开发软件,其图像编辑器可以运行在旧的windows下,可同时发布在线漫游图像效果至新的windows、mac、iphone和phandroid等开发平台。unity3d也许你可以直接使用插件unitywebplayer这个插件可用来快速发布你在网页上的漫游浏览效果,支持mac和windows的两种网页漫游浏览。采用了java的javascripts、c#和java的java等不同语言版本编写过的一个脚本语言。由于目前漫游unity3d主要作为一款新的移动游戏软件效果引擎,已经为很多漫游用户在目前现有的软硬件设计架构以及软件基础之上自行设计搭建了一层基于移动游戏效果组合的软件架构,所以在需要进行设计制作3d各种类型漫游移动游戏软件效果时,只要您仅仅需要在目前现有各种unity3d移动游戏软件的整体设计框架基础之上,根据自己将要求来进行设计制作的各种类型漫游移动游戏软件效果中的功能软件类型,再自行设计搭建一层一个完全可以合理的充分发挥容纳各种移动漫游游戏效果软件功能的游戏组合软件框架下的架构软件即可。在实际网站使用这些含有unity3d相关搜索引擎软件的操作过程中,用户网站可能还会需要详细介绍理解网站使用这些unity3d所可能需要网站提供的一些搜索软件库并内置关于搜索软件关键词的基本概念。譬如说,在unity3d等设计软件中,所有的运动漫游图中物体都应该可以看作是一个对象gameobject,即它可以是用于漫游中的物体运动效果的一个实现过程对象。unity3d我们可以通过使用不同的同样漫游游戏组件识别方式使用来分别同时区分不同的两个同样漫游组件行为游戏对象,只要你仅仅需要给不同的两个同样漫游组件行为游戏对象分别同时赋予不同的两个漫游游戏组件,就已经完全可以同时做到让已经同样漫游过的游戏对象同样能够同时具备不同的两个漫游游戏特性,从而也就可以做到让已经同时漫游过的游戏对象同样能够同时拥有一个完全属于自己的不同漫游游戏行为。换言之,漫游组件对象只是它相当于一个漫游容器,用于同时存储所有的漫游组件,这些组件可以让漫游对象相互区分。例如,当我们创建一个漫游脚本,然后把这个漫游脚本对象赋予一个新的漫游脚本对象,那么这个漫游脚本就可以成为这个新的漫游脚本对象的一个动态组件,脚本中的你可以实时体现很多出不同的脚本属性,同时在整个运行脚本过程当中你也可以看到动态实时地将这个漫游脚本对象的使用行为和漫游状态数据进行实时改变。2.3C#脚本C#语言是微软公司2005年发布的一种由现代c和新的c++衍生发展出来的面向对象的高级编程应用语言、运行于.netframework和.NETCore(完全支持开源,跨平台)之上的高级应用程序系统设计应用语言。并且确定于在微软中国职业游戏开发者高峰论坛上首次登台公开亮相。c#算法是微软公司高级研究员AndersHejlsberg的最新研究成果。c#语言看起来与它的java语言有着惊人的相似;它似乎包括了一些诸如单一代码继承、接口、与它的java几乎同样的脚本语法和将它编译成一个中间代码之后再运行的整个过程。但是它的c#与dejavas也有着明显的不同,它只是借鉴了一个重要特点,与它的com(网络组件库和对象管理模型)通常是直接相互集成的,而且它通常是微软公司.netwindows也是网络管理框架的一个主角。c#语言是由英语c和新的c++衍生发展出来的一种安全的、稳定的、简单的、优雅的面向对象编程设计语言。它在完全继承所有c和c或c++强大结构功能的基础同时它也去掉了一些它们的复杂性和特性(其中例如没有多重宏以及不一定允许宏对多重宏的继承)。c#综合了.nvb简单的编程软件开发可视性优化编程代码可以操作和提高使用c++的各种高性能软件运行量和工作效率,以其强大的操作能力、优雅的软件编程方言语法学和设计工作风格、创新的软件编程应用语言组件应用模式特性和便捷的编程软件开发面向用户化的组件开发模式及对编程的专业技术支持早已发展成为.net用于软件开发的企业用户入门首选软件编程应用语言。c#编程语言汇编是面向对象的一种新型编程设计应用语言。它不仅可以用于使得一个专业应用程序员完全并且可以快速地独立开发编写各种基于a和java和j的应用开发工作平台的无线电子计算应用程序,开发平台上还提供了一系列的应用开发工具和应用软件可以服务于该应用程序来达到最大化的不同程度地可以帮助企业开发和和管理利用基于电子计算与其他无线通讯相关技术的新领域。c#编程语言发展使得许多c和c或c++程序员不仅因为可以高效的自行设计开发一个应用程序,且因为他们能可靠的自行调用由c/c++编写的本地化和单机原生程序编程调用函数,而绝不会也不会严重损失其他各种c/c++语言本身原有的强大的程序开发支持功能。因为这种编程语言结构继承性的存在关系,c#与其他许多c/c++语言一样具有极大的编程语言结构相似性,熟悉这种类似其他编程语言的应用程序员和开发者往往认为可以很快的将其重点转向如何使用新的c#。2.4技术总结此章节介绍了创建虚拟校园系统中用到的相关技术,分别是3dmax软件技术,unity3d技术和c#脚本技术。本系统通过3dmax进行简单建模,获取3dmax的fbx格式模型。虚拟校园系统总体是模型的拼接和漫游,运用了unity3d技术的三维视角漫游,建筑可视化,既方便全景查看又能全景观的漫游。Unity3d的可以发布多种平台,可以更有利更方便的虚拟校园漫游。漫游体现的是视觉的生动化,本系统运用了unity的脚本编写,用c#技术写出第一人称控制的脚本,让想了解学校的同学老师家长在各个平台,随时随地的观看校园内部特色。
第三章虚拟校园漫游系统总体设计3.1系统的需求分析与设计目标3.1.1需求分析虚拟现实校园数学漫游虚拟系统:它是一个基于现实大学校园的虚拟环境,它本身是一个用3d自动建模与组合unity3d自动组建数学模型以及完善的数学虚拟环境空间,用户通过直接创建第一视角虚拟模型再直接添加第一视角模型脚本来对其进行虚拟漫游,从任意一个角度对虚拟环境空间中的每个虚拟数学对象模型进行自动观察,从而使人产生身临其境的奇妙感觉,漫游其中。本系统旨在开发江西理工大学的虚拟校园模型及漫游,第一步从3dMax中提取模型、第二步用unity3d软件拼装校园、第三步实现虚拟校园漫游。首先根据整个校园环境需要选取几个典型校园场景一并进行三维建模,然后将其转入unity3d中,写一个漫游速度脚本即可以完成对三维校园场景进行漫游速度控制的脚本设计。最后为虚拟系统本身增加各种交互体验功能,进一步提高了对虚拟实境系统的真实性和感觉。具体软件实现操作过程介绍如下:前期进行需求分析,观察校园环境,确定要建模多少个建筑物,在测量距离确定校园大小的规模,模拟出建筑物大概位置与大概高度,收集照片信息,在3dmax里找出尽量相对应的模型进行拼接。用3dmax软件导出Fbx格式。基于实景建立场景模型,用Unity软件进行细节完善,具有特点的建筑了解之后用该软件尽量实现真实感效果。用c#脚本实现第一人称漫游校园,近距离观察校园。3.1.2设计目标虚拟校园漫游系统是一个模拟真实校园的系统,应该给人们体现出表现出虚拟环境中的地面分布的花草树木、学校操场、食堂,教学楼等对象的三维模型,实现外观,天空,景色,全景的逼真效果。使参考者能在搭建unity3d的虚拟校园的中漫游,了解学校本身环境,适应提前进入学校的生活。系统应实现如下目标:1.虚拟校园漫游软件系统的用户界面设计应该尽可能的保持简单化,能让即使不同年龄层次的网络用户都完全可以对系统软件进行日常操作。2.构建天空效果,达到第一人称能感觉到天空变换的效果,不管从近到远都能观察天空。3.虚拟校园漫游系统应按现实校园的实景环境建立虚拟校园的各个实际景观,充分体现和完美突出我们虚拟现实生活环境中的各种虚拟大学校园内部各种自然环境景观。4.为了让参观者在虚拟校园世界里观察的对象更有真实效果,系统应该能够表达物体表面的纹理细节,即要进行详细的纹理影射,并且后续完善个个物体的特点,为这些物体增加不可或缺的细节,让参观者更能记住,更能感觉到校园的氛围。5.为了使虚拟物体具有立体感,虚拟物体应具有逼真的材质、明暗效应,这里可以用3dmax进行真实的建模,让用户能够体验到校园的真实性。6.系统本身应该完全具备良好的信息漫游浏览功能,使手机用户完全可以从任意一个角度和任何方向随时对整个校园的人文景观信息进行漫游浏览。用c#脚本编写第一人称,给予人物的走路速度,跑步速度,跳跃速度。并让主摄像头跟踪人物,控制鼠标进行转向。7.系统应提供各个事物的碰撞检测,不会让人物进行穿透。8.虚拟校园的建造需要不断更新数据,移动建筑,让校园更完善为了能够使整个虚拟现实校园系统能够充分适应不断发展变化的教学要求,系统中的应用还具备自动删除、添加虚拟建筑物的多种功能。9.系统应具有较好的可移植性和可扩展性。10.一些复杂的建筑可能要需要大量时间进行构造,并且需要它的完整性,这里可以用类似3d模型进行拼接,让整体效果看起来更完善。3.2系统设计流程虚拟现实校园漫游系统的整体设计理念应该是力求真实,所以对虚拟校园的进行实地考察体验是很非常有必要的。通过校园实地考察,分析有关校园所有建筑的主体构造,收集有关校园所有建筑的结构图片等等信息,确定校园建筑物的比例,做出建筑草图等以方便建筑模型的设计构建。处理从中收集获取到的网络信息,做出网络整体规划,构建三维立体模型,整合各个应用场景与模型,最终设计形成完整的虚拟现实校园漫游服务系统。具体的软件实现工作流程主框图显示如下图所示。 开始开始收集数据及图片等信息整理信息,做出草图构建部分场景与模型虚拟校园场景整体拼合完成虚拟校园漫游系统的建立结束 总体设计的流程图3.3系统的总体结构及规划将前期计划收集的场景数据进行整理之后,对整个商业场景里的数据模型按照一定的数据逻辑结构规则再来进行综合组织,采用层次结构的数据形式再来进行数据模型的综合组织,有利于场景模型的数据构建、场景的模型合并以及后期场景结构优化等等的维护和运营管理。层次结构就是按照一个特殊物体的不同性质类别怎么可以对它进行一种层次上的划分,同一物体类别的一个物体可以分别作为一个不同物体中的集合,而在每一个不同物体中的集合里又可以再分别进行层次细分,本系统江西理工大学校园整个学校教学活动场景以一个蓝色的大天空下的盒子建筑作为主要教学背景,可以由各种物体建筑物、道路、草地、树木等各种物体集合组成,而这些物体建筑物又可以细分为各个系的教学楼、宿舍、图书馆等,如本框中的下图所示。这样我们才能为你组织一个好的数据库,结构清楚、层次明确。校园场景校园场景建筑物地面天空其余绿化操场教学楼图书馆宿舍楼……校门……道路树木图10系统的总体结构图3.4系统实现的软硬件环境开发本系统的硬件环境为:处理器:AMDRyzen54500UwithRadeonGraphics内存:16GB双通道显卡:CPU集成显卡开发本系统的软件环境为:操作系统:Windows10家庭中文版,64-bit开发工具:UNITY3D-Edit,Notepad++运行软件:3dmaxunity3d第四章虚拟校园场景设计4.1信息的收集与处理本文分析使用的原始立体数据主要包括有学校办公楼、教学楼、图书馆、宿舍楼、操场、亭子等各类建筑的立体平面图和在学校获取的立体照片等基础信息。为了有效加强虚拟空间校园真实的准确数据性和有效进行虚拟空间的正确管理分析,以下几点是该虚拟真实校园漫游系统用的数据分析:通过网上百度电子地图(简称百度电子地图)可以测量虚拟学校内主要对象和与实体的地理距离,然后最终确定主要对象实体在整个虚拟现实校园环境中的地理位置。先把这个主体比如校园正门大小等的数据进行测量整理出来,再通过地图拼接完成其他的,再根据对于各教学对象这个实体的在整个虚拟大学校园环境中的所在位置,先给它确定一个新的原点,如虚拟学校的校园正门,然后通过百度电子地图(也比如有的百度二维地图)上的原点测距定位功能,测量出各对象中的实体进入到这个原点的一定距离。 2.对于部分大型建筑物的楼层高度,从总体的平面图和数据收集后得到的测量数据中不能看出获取的实际情况,自行计算测量可得出其中一层的建筑高度,然后根据每个楼层高度数据的计算可得出总的高度。此外你还可以直接利用一些虚拟化的测量软件(例如google和谷歌虚拟地球)等来进行各种辅助性的测量。3.对于这些纹理上的数据主要还是采用自己相机拍摄的处理方式。由于照片受风景拍摄时的气候天气及拍摄周围环境的因素影响,拍出的风景照片通常不能直接配合使用,需要在照片亮度、色调上都要做出相应调校。另一方面,拍照者在取景时,可能常常会遇到受照片拍摄角度上的限制、行人或路边树木照片掺杂等多种因素的直接影响,照片常常拍摄需要及时进行图像修复、剪裁等后期曝光处理。4.2校园中单个实体的场景设计整体效果图4.2.1地形及地面的设计地形模型在虚拟环境中应用分量很大,它对虚拟漫游的状态真实性和虚拟系统正常运行的状态实时性都具有重要作用影响。地形立体对象校园模型理论是设计虚拟地物校园教学模型系统的理论基础,是设计布置虚拟地物地形对象校园模型的重要依据。地形动态对象三维动态模型的基础建立建设是企业开发大型虚拟现实校园必不可少的一个重要关键环节,对其它大型虚拟校园系统同样如此。对于一个平面上的地形,可以通过使用unity3d的plane节点,调节一个地形高度长宽高低的数据,并对其进行地形贴图。对于不同地形纹理的大学地形如例如校园绿地等可创建3dobject等先创建一个地形,再对其进行地形贴图,可将其叠加在整个大学校园内的地面上。像一些小的丘陵、山脉等都是起伏不平的自然地形,也可以创建地形。但我们大学基本都是平地,所以在此不需用地形突起。在这里,为了让地面看起来更生动形象,我选择了用到3dmax模型里面的仿真路面进行拼接。下图是江西理工大学地面设计层次图地面地面草坪道路地面设计层次结构 地面设计运行效果图4.2.2学校大门的设计根据学校大门实景图,发现学校大门是对称的,那么我们就可以拼凑一半,剩下一般直接复制粘贴过来,左半边是一个个长方形和类似长方形的曲面,我们可以在模型库里找到曲面模型和栅栏模型导入,再根据cube或者3d建模实现拼装(3d建模更为真实)。最后进行贴图,让大门效果更真实,下图为简易大门模型。学校大门实景图 学校大门效果图 4.2.3天空的设计为了大大增加三维校园虚拟场景校园真实场景内部背景的视觉真实感,可以在三维校园虚拟场景内部增加具有蓝天白云梦幻效果的虚拟天空。根据不同用户所实际需要的真实使用程度,可以考虑采用以下多种设计方法组合来进行实现:导入Unity3D天空盒通过UNITY3D的Window窗口AssetStore里的资源包进行Unity3D天空盒的导入,点击商店通过Unity官方资源,找到天空盒资源包,在Unity里打开,导入资源包,再通过拖拽的方式进行天空盒的创建。制作天空效果可以通过我们运用一个矩形化的天空盒这种制作方法能帮你制作一个矩形化的天空,所谓矩形化的天空盒就是用一个个矩形的长条用方盒子包起来把它作为一种展示矩形天空的一种视觉远景或者天空贴图的一种视觉载体。首先用户需要直接生成一个盒子体积必须足够大的立体矩形模型立方体,通过在这个矩形立方体中的矩形模型盒子的5个不同面上分别直接贴上五个可以直接表现不同高空天气现象模拟图像效果的。不同的立体矩形盒子天空天气图像及其纹理可以直接达到逼真的高空天气模拟矩形天气图像效果。Background节点中,有两个域值控制天空的颜色,分别是skyColor和skyAngle。skyColor域指定立体空间背景天空的颜色,该域值由一系列红、绿、蓝颜色组合而成。skyAngle域指定空间背景上需要着色的位置的天空角。UNITY3D浏览器就是在这些空间角所指位置进行着色的。第一个天空颜色着色于天空背景的正上方,第二个天空颜色着色于第一个天空角所指定的位置,第三个天空颜色着色于第二个天空角所指定的位置,以此类推。这样使天空角之间的颜色慢慢过渡,这就形成了颜色梯度,使得天空看起来更为真实。4.2.4建筑物的设计1.建筑物几何模型的建立建筑物是三维虚拟中和现实世界中的主要建筑景观,在众多虚拟现实校园建筑系统中,三维虚拟建筑物的景观表示和立体建模设计是最为重要的设计内容。由于高层建筑物结构数目众多,为了较好地准确实现对高层楼群的搭建的构筑建模设计任务,可以根据实际设计情况重新确定其建筑设计基本原则:由于本操作系统中所虚拟的校园是一个实际已经存在的虚拟校园,为了能够取得较真实的虚拟效果,现实存在的校园建筑在虚拟环境中尽量都要进行模拟建模。(2)根据校内现有建筑的整体外观与建筑结构对校内建筑模型进行设计分类,确定新的构造设计模型,对那些外观和建筑结构相同的校内建筑也应采用同一个构造设计模型。(3)对于较复杂的系统模型也可采用新方法拆分,使之更加简单化,然后再对其进行二次建模。目前对大型建筑物的整体建模一般都是采用一种整体建模法,即首先画一个圆形立方体或一个长方体,然后再对物体表面纹理进行各种纹理上的映射,构造一个建筑物整体模型。2.建筑物的纹理映射建筑物本身并非不是一个空白的大面积平面,一般的大型高层建筑物上几乎都会特别设一些玻璃窗户,贴有各式各样的彩色玻璃瓷砖。目前对于一个大型建筑物窗口及其内部窗户的各种整体窗口建模一般都主要是通过采用多种典型线段绘图方法应用来直接进行窗口构造,及描绘出窗口的大部分概念和结构框架,然后对其窗户进行整体背景图的渲染。由于校内的立体模型建筑物特别多,如果你临时需要一一对其内部进行立体化的建模,会不仅需要我们花费大量的空间计算力和时间,而且严重的会影响了系统的正常工作运行以及处理速度。所以,在本整体设计处理系统中与其对应于整个房屋内部墙体及其表面的任何一个窗户和其他装饰物的花纹都应该可以直接采用类似整体纹理映射建模互相映射的整体设计处理方法对其整体进行类似纹理映射建模。其基本实现操作方法主要原理是:将校内每个带有教学楼的建筑各个主体结构和平面的教学建筑主体纹理抽象图像模型数据分别实时进行随机映射采集、加工、转换成一个建筑纹理图像数据库并映射到制图所符合要求的教学建筑纹理图像格式,之后在教学建筑主体画面纹理图像数据绘制的整个操作过程中,分别对每个教学建筑面分别随机进行一次建筑纹理图像数据随机映射。图书馆周围场景环境设计由立体图书馆场景设计和建筑布局立体图书馆以及周围环境场景设计环节组成,创建逼真的实景虚拟混合现实三维立体教学场景。采用了以模块化,组件化作为设计指导思想,层次清晰、结构合理的unity3d大型图书馆应用场景环境设计。图书馆主体建筑应用场景图的设计层次结构方式如表中图所示。图书馆建筑场景设计图书馆建筑场景设计周边环境图书馆楼梯底座建筑主体楼体附件绿化草坪树木设计道路设计图书馆建筑设计层次结构图书馆场景建设主要用到了以下的UNITY3D节点:(1)shape整体造型中的节点。该节点通常是一切具有几何立体造型的父节点。该类的节点通常包含具有两个子类的节点,分别为一个appearance(立体外观)的子节点与geometry(结合几何立体造型)的子节点。(2)appearance节点。该目标节点可以用来明确定义一个物体的基本外观及其属性,通常为:shape为该节点的子目标节点。appearance三个节点主要指定物体几何学和物体外观造型的基本外观感和视觉效果,包含了material(物体外观纹理材料)三个节点、texture(物体纹理外观印象)三个节点和texturetransform(外观纹理印象坐标角度变换)三个节点。通过设定material的区域,可以正确设定一个材料的一种颜色,该材料颜色为单一的材料颜色。通过进入texture等区域,可以对各种几何立体造型效果进行自动贴图,使几何造型更为逼真。而对于texturetransform的区域,则可以通过定义视频贴图的显示方式,比例等,已经能达到更好的视频贴图显示效果。(3)Cube该节点的作用也就是生成一个立方体。通过调整该节点的size(尺寸)域的域值,可以直接改变一个立方体的长、宽、高。(4)Cylinder节点,该节点的作用是生成圆柱体。Cylinder节点的主要属性有height(高度)、radius(半径)以及是否包含顶面(top)、侧面(side)和底面(bottom)等。(5)IndexedFaceSet节点,该节点是一个三维立体几何造型节点,表示一个由一组矩形顶点构成而建成的一系列的由平面图和多边形顶点形成的3d立体几何造型。(6)Billboard节点,该节点对象可以在一个世界局部坐标系之下自动创建一个新的局部世界坐标系,选定一个旋转轴后,这个节点下的子节点所连接构成的一个虚拟对象的一个正面图像会永远自动地垂直面对所有观众。通过该坐标节点位于axisOfRotation的区域,可以精确设定节点绕哪一个标准坐标系的轴进行旋转。(7)Group节点。该节点管理系统软件可以直接被应用来自动设计编组各种新的大型几何结构整体及其造型,并将其全部组合起来作为一个各种新的几何整体来使几何将该造型通过节点系统来对其进行自动看待。把group这个基于节点中所有的节点包含全部整个基于节点群的空间结构视为一个新的节点空间整体,当作一个完整的基于节点整体空间结构的建造型管理体系并用来对其进行正确对待。如果一个用户可以利用一个grdef(一个重新被定义的自命名系统节点)为一个新的group这个命名节点文件进行系统命名,则那么用户仍然可通过反复使用一个gruse(一个反复重用的自定义命名节点)在相同的系统命名节点文件中重复使用这一节点,从而大大程度增强系统应用程序对于系统命名设计的一种更高可靠和持续性的重用性和系统操作上的灵活性。(8)Transform节点。该节点可以对几何造型进行平移、旋转、缩放。通过translation(方位)域值、rotation(旋转)域值、scale(规模)域值,可以达到改变造型位置、大小的目的。将上述构建的对象有机地结合起来,就构建出图书馆了,其他各类建筑物的其他构建构筑方法与中央图书馆东北馆的其他构建构筑方法大致相同,此处不再一一进行累述。现在还将展示其余几个标志性大型建筑物的整体运行情况效果图。1.学校一食堂,二食堂2.女生宿舍楼3.篮球场4.2.4树木的设计时刻保持二维纹理树林图像的法线矢量指向观察者,就可以形成非常真实的三维景观,从不同的角度观察均可获得树木的较为完整的图像。在UNITY3D中,Billboard节点提供了这一功能。通过设定Billboard中axisOfRotation域,可以规定树木的旋转轴。树木效果图树木效果图4.3虚拟校园的整体拼合由于整个模拟校园教学场景过程中的各个物体也都是通过其在相对基准位置上的关系相互组织组合起来的,因此我们需要通过确定某一个物体是否作为相对基准和它的参照位置来帮助确定其它几个物体的相对位置。本学校漫游系统以各级学校校正门位置作为主要参考设置标准。拼合法的方法描述如下:1.根据总体的平面图,利用一个称为box的节点参数来创建作为一所学院的一个整体的占地表,更改其它的参数,使得它的面积大小和整个学校的占地总面积相同。2.以江西理工大学学校正门建筑墙的正门外墙为按照点和参考点,通过使用百度学校电子地图(即网上学校电子地图)直接可以测量其他一个学校正门建筑墙的距离与正门参照点和参考点的一定长度距离,根据一定长度比例,用一个称为transformm的直线节点的绘图方法来直接改变这个学校建筑实体墙的中心位置。3.使用了linline两个内联网络节点,将已经创建好的各实体节点整合后放到现实校园中一个确定的节点位置上,最终可以完成整个虚拟现实校园的一个整体校园建设。拼合时,单独建立一个UNITY3D文件,用于拼合各实体。在本系统中,以school.Unity3D作为主程序的入口。第五章虚拟校园场景的实现5.1基于unity3D的第一视角漫游校园要想在unity3d游戏引擎系统中实现漫游校园的效果,需要定义一个人物视角,让摄像头跟在人物视角,用键盘鼠标控制它的行走跳跃与旋转,这便达到了漫游虚拟校园的效果。接下来是创建第一视角漫游校园的过程。将其人物视角命名为第一人称漫游,方便查看漫游信息,在inspector面板上添加人物重力rigidbody组件,以及碰撞器Collider的组件(可以在脚本里添加属性)添加Newscript脚本将其命名为第一人称漫游控制器英文版。编写脚本:添加组件[RequireComponent(typeof(Rigidbody))][RequireComponent(typeof(CapsuleCollider))]publicclassRigidbodyFirstPersonController:MonoBehaviour{publicclassMovementSettings{publicfloatForwardSpeed=8.0f;publicfloatBackwardSpeed=4.0f;publicfloatStrafeSpeed=4.0f;publicfloatRunMultiplier=2.0f; publicKeyCodeRunKey=KeyCode.LeftShift;publicfloatJumpForce=30f;publicAnimationCurveSlopeCurveModifier=newAnimationCurve(newKeyframe(-90.0f,1.0f),newKeyframe(0.0f,1.0f),newKeyframe(90.0f,0.0f));[HideInInspector]publicfloatCurrentTargetSpeed=8f;publicvoidUpdateDesiredTargetSpeed(Vector2input){ if(input==Vector2.zero)return; if(input.x>0||input.x<0) { CurrentTargetSpeed=StrafeSpeed; } if(input.y<0) { CurrentTargetSpeed=BackwardSpeed; } if(input.y>0) { CurrentTargetSpeed=ForwardSpeed; }#if!MOBILE_INPUT if(Input.GetKey(RunKey)) { CurrentTargetSpeed*=RunMultiplier; m_Running=true; } else { m_Running=false; }#endif}#if!MOBILE_INPUTpublicboolRunning{get{returnm_Running;}}#endif}publicCameracam;publicMovementSettingsmovementSettings=newMovementSettings();publicMouseLookmouseLook=newMouseLook();publicAdvancedSettingsadvancedSettings=newAdvancedSettings();privateRigidbodym_RigidBody;//刚体privateCapsuleColliderm_Capsule;//碰撞器privatefloatm_YRotation;privateVector3m_GroundContactNormal;privateboolm_Jump,m_PreviouslyGrounded,m_Jumping,m_IsGrounded;publicVector3Velocity{get{returnm_RigidBody.velocity;}}publicboolGrounded{get{returnm_IsGrounded;}}publicboolJumping{get{returnm_Jumping;}}publicboolRunning{get{ returnmovementSettings.Running; }}privatevoidStart(){m_RigidBody=GetComponent<Rigidbody>();m_Capsule=GetComponent<CapsuleCollider>();mouseLook.Init(transform,cam.transform);}privatevoidUpdate(){RotateView();if(CrossPlatformInputManager.GetButtonDown("Jump")&&!m_Jump){m_Jump=true;}}privatevoidFixedUpdate(){GroundCheck();Vector2input=GetInput();if((Mathf.Abs(input.x)>float.Epsilon||Mathf.Abs(input.y)>float.Epsilon)&&(advancedSettings.airControl||m_IsGrounded)){Vector3desiredMove=cam.transform.forward*input.y+cam.transform.right*input.x;desiredMove=Vector3.ProjectOnPlane(desiredMove,m_GroundContactNormal).normalized;desiredMove.x=desiredMove.x*movementSettings.CurrentTargetSpeed;desiredMove.z=desiredMove.z*movementSettings.CurrentTargetSpeed;desiredMove.y=desiredMove.y*movementSettings.CurrentTargetSpeed;if(m_RigidBody.velocity.sqrMagnitude<(movementSettings.CurrentTargetSpeed*movementSettings.CurrentTargetSpeed)){m_RigidBody.AddForce(desiredMove*SlopeMultiplier(),ForceMode.Impulse);}}if(m_IsGrounded){m_RigidBody.drag=5f;if(m_Jump){m_RigidBody.drag=0f;m_RigidBody.velocity=newVector3(m_RigidBody.velocity.x,0f,m_RigidBody.velocity.z);m_RigidBody.AddForce(newVector3(0f,movementSettings.JumpForce,0f),ForceMode.Impulse);m_Jumping=true;}if(!m_Jumping&&Mathf.Abs(input.x)<float.Epsilon&&Mathf.Abs(input.y)<float.Epsilon&&m_RigidBody.velocity.magnitude<1f){m_RigidBody.Sleep();}}else{m_RigidBody.drag=0f;if(m_PreviouslyGrounded&&!m_Jumping){StickToGroundHelper();}}m_Jump=false;}privatefloatSlopeMultiplier(){floatangle=Vector3.Angle(m_GroundContactNormal,Vector3.up);returnmovementSettings.SlopeCurveModifier.Evaluate(angle);}privatevoidStickToGroundHelper(){RaycastHithitInfo;if(Physics.SphereCast(transform.position,m_Capsule.radius*(1.0f-advancedSettings.shellOffset),Vector3.down,outhitInfo,((m_Capsule.height/2f)-m_Capsule.radius)+advancedSettings.stickToGroundHelperDistance,Physics.AllLayers,QueryTriggerInteraction.Ignore)){if(Mathf.Abs(Vector3.Angle(hitInfo.normal,Vector3.up))<85f){m_RigidBody.velocity=Vector3.ProjectOnPlane(m_RigidBody.velocity,hitInfo.normal);}}}privateVector2GetInput(){Vector2input=newVector2{x=CrossPlatformInputManager.GetAxis("Horizontal"),y=CrossPlatformInputManager.GetAxis("Vertical")}; movementSettings.UpdateDesiredTargetSpeed(input);returninput;}privatevoidRotateView(){//avoidsthemouselookingifthegameiseffectivelypausedif(Mathf.Abs(Time.timeScale)<float.Epsilon)return;//gettherotationbeforeit'schangedfloatoldYRotation=transform.eulerAngles.y;mouseLook.LookRotation(transform,cam.transform);if(m_IsGrounded||advancedSettings.airControl){//RotatetherigidbodyvelocitytomatchthenewdirectionthatthecharacterislookingQuaternionvelRotation=Quaternion.AngleAxis(transform.eulerAngles.y-oldYRotation,Vector3.up);m_RigidBody.velocity=velRotation*m_RigidBody.velocity;}}///spherecastdownjustbeyondthebottomofthecapsuletoseeifthecapsuleiscollidingroundthebottomprivatevoidGroundCheck(){m_PreviouslyGrounded=m_IsGrounded;RaycastHithitInfo;if(Physics.SphereCast(transform.position,m_Capsule.radius*(1.0f-advancedSettings.shellOffset),Vector3.down,outhitInfo,((m_Capsule.height/2f)-m_Capsule.radius)+advancedSettings.groundCheckDistance,Physics.AllLayers,QueryTriggerInteraction.Ignore)){m_IsGrounded=true;m_GroundContactNormal=hitInfo.normal;}else{m_IsGrounded=false;m_GroundContactNormal=Vector3.up;}if(!m_PreviouslyGrounded&&m_IsGrounded&&m_Jumping){m_Jumping=false;}}}5.2基于Kinect体感交互漫游校园在德国的欧洲克隆国际游戏展及多个国外著名电子游戏展和动漫展上,很多国内游戏开发公司纷纷提出了新的一种体感模拟游戏开发支持,随着网络时代的不断发展,游戏业的不断进步,体感模拟游戏逐渐发展成为国内游戏开发市场的一种主流。在此前的基础上,将kinect等等引入应用到这款虚拟现实校园漫游系统的的开发中,会给虚拟漫游者玩家带来更加真实的游戏感受。虚拟现实校园网络漫游操作系统的两个难点操作是关键kinect与重点unity3d这是游戏操作引擎的完美结合。目前使用kinect与opunity3dk相结合的开发方式主要有三种:或者使用微软的格式kinectsdk1.0版本的软件开发工具软件包;或者使用zigfu的版本开发工具软件包;或者使用自由开源的openni。使用kinectsdk的运动开发工具资源包等来进行运动开发,是为了能够更好的帮助进行人类运动学习的分析。目前网上的一个kinectsdkw的开发包版本是1.0版本的,主要版本是一个sdkbetaor版本的,而我们现在采用的版本是一个kinectforwindows1.6版本的,并且是不能直接安装使用,必须是需要经过做适当性的修改之后才能直接使用。sdk由于版本的不同,因此不需要同时进行的版本修改,主要内容是包括更改版本kinectsensor.cs和更改kinectinterop.cs两个文件目录中的所有内容。首先从一个网络平台下载一个kinectwrapperpackageforunity3d的一个封装软件包,将其直接导入到一个虚拟现实校园开发项目中。随后,项目中自然地就会出现包括一些必要的开发脚本和一些关于场景化的例子。脚本中的文件主要功能是被存放在一个名为"Kinect"的一个文件夹中。文件夹中已经完全包含了它并包括基于如下的一个带有脚本名的格式文件:kinectmodelcontrollerv2、kinectpointcontrolle、displaydepth、displaycolor、kinectrecorder、kinectsensor、deviceoremulator、skeletonwrapper。其中,KinectModelControllerV2脚本文件用于控制虚拟人模型骨骼绑定的脚本,通过相应的骨骼匹配,就能够将Kinect捕捉到的人体骨骼位置等信息与Kinect中的虚拟人相映射;KinectPointController脚本文件也用来绑定骨骼,它是把圆点的位置与Kinect捕捉到的人体骨骼位置相匹配,用了20个圆点组成了人体主要的骨架;DisplayDepth脚本文件用于对深度图像的设置和控制显示;DisplayColor脚本文件是用来控制彩色图像的设置和显示;KinectRecorder脚本文件是在Kinect缺失时用来录制人体运动信息;KinectSensor是Kinect的主驱动对象,用于驱动Kinect硬件;DeviceOrEmulator是列举设备;SkeletonWrapper是骨骼包,用于提供相关的骨骼信息。导入的一个视频文件中将可能会直接包含一个视频文件名:kinectexample,是一个可以直接用于进行视频文件演示的。这个大型应用开发案例在其中的一个场景将向您详细演示如何用一个大的骨骼驱动系统模型去进行操作控制一只驱动每个用户的3d一个骨骼系统模型,以及如何用各个中枢神经单元关节的一点一个骨骼系统去操作控制一个驱动用户小鼠的骨骼模型(就是说比如一个大的球形)。除了一个物体样本文件模型中的物体kinectexample,导入的一个物体模型文件还允许可以同时包含两个已经事先预制好的单个物体:kinect_prefab和一个物体kinectpointman[39]。kinect_prefab这里是个空间和节点的工作对象,里面通常包含一些节点脚本,这些节点脚本通常是用来驱动一个kinectp的所有最必须的,也就说是最重要的,一般人都可以直接进行使用;kinectpointman这里演示了一个kinectpointcontrollerab是如何进行工作的。可以将一个预置控制对象设为kinect_prefab,放在一个hierarchy控制面板的左侧任意一个位置。也许你可以根据每个项目所有必需软件可以选择使用诸如kinectpointcontroller或使用kinectmodelcontrollerv2脚本。kinect_prefab里面还有许多应用参数列表可以供你进行仔细设置,如果一个设计者真的想要能让自己的应用程序运行有效地更好的话,可以仔细进行研究。在我的kinectsensor这个组件中,kinectcenter为这是一个体感投影设备在3d不同场景中的所对应的具体位置,sensorheight为这是一个体感投影设备设置距离3d不同场景中距离地面的具体高度,lookat是这是一个体感投影设备在3d不同场景环境中的具体朝向,smoothing、correction、prediction,这是一个用于手动设置平滑投影效果的具体参数。其它可以导入的图像文件则为一些立体贴图及图形模型。使用新的新在zigfu开发软件应用工具过程中的软件包包也可以直接进行多种软件开发,zigfu开发软件应用工具过程中的软件包包也可以直接简称zdk,即使用新的zigfudevelopmentkit,这个包可能来说是较为简单的一种kinect基于新的跨平台行业开发平台的一种软件开发使用方式,能够把所有新的kinect和j及j和j或html5应用程序、unity3d、flash和j或j和j和javascript等等可以进行多种不同体感式的软件开发,同时它也能够直接支持openni与opt,kinectsdk。不过此软件应用版本开发包的应用工具包多部分为基本免费的非商业软件版的应用版本开发包,有一个基本免费的带有用户版本体验号的软件应用版本,但在软件下载之后生成的应用文件下载时候却有可能会多了个原本没有软件版本验证号的软件水印。openni,这是一个基于开源的技术框架,主要目的是基于提供了一些基于硬件系统底层中的api以及基于人体视觉输入的一套技术规范,用于用户实现自动连接不同电子设备之间的各种接口。openni的软件官方网站上已经提供了怎样正确使用opunity3d软件开发的一个范例表和模块。在设计openni上,首先我们需要自己实现一个符合openni的接口模块,这些接口模块通过直接使用openni的每个接口,进行自我的接口实现,然后为自己顶层的每个应用程序实现提供接口调用。本文在开发操作系统中主要开发工作就是采用第一种软件开发方法,即使用微软的KinectSDK1.0最新开发版本的虚拟软件开发操作系统工具包,想要同时分别完成基于人的kinect的虚拟体感交互接入,需要同时分别完成三项主要开发工作:unity3d虚拟体感交互接入基于人的kinect的虚拟体感接入驱动,实现了对基于unity3d中基于人的kinect体感接入调用方法的自动交互调用;在基于虚拟人的场景校园虚拟体感交互漫游中实现虚拟校园体感交互而在虚拟体感漫游中的场景驱动栏目中,实现了对基于kinect的场景虚拟校园体感与自动漫游与该场景虚拟人体感骨骼交互进行虚拟人体体感骨骼交互自动匹配;同时它还实现了对基于kinect虚拟体感人与漫游场景动作物的体感识别,驱动虚拟人的校园体感交互漫游。5.3系统的发布Unity3D作为一款优秀的网络游戏发布引擎,不仅功能强大,同时,可以针对不同的操作系统或者平台,进行组合发布。本次的项目主要就是针对于三种平台。pc端平台、web和安卓手机平台分别进行三个虚拟现实校园系统的整体发布。首先我们需要对个别的场景数据进行排序build,点击一个file/buildsetting然后打开一个buildsetting场景对话框,分别将场景建立各自的场景数据保存并进行排序。在选择platform平台对话框中需要选择一个相应的软件平台,首先需要选中pc平台,点击Build按钮进行设置软件位置平台名称之后即可对平台程序内容进行自动发布。5.4系统的测试与优化软件安全测试的最终目标,就是为了能够更快、更早地将一个软件开发产
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年内分泌科老年糖尿病精细化护理查房
- 2026 年血液科粒细胞缺乏患者保护性护理课件
- 2026年产科妊娠期糖尿病联合护理查房
- 2018 液压挖掘机 技术条件
- 土建专业试题及精准答案
- 一建水利考试经典试题及答案
- 2026年度重庆市农业技术人员职称考试专业知识历年真题整-理提分卷
- 2026年保育员同工同酬考试试题及答案解析
- 2026最-新六年级下数学小升初拔尖测试卷西师版完整版含答案
- 2026年高职单招现代农业技术解析试卷
- 2026年出入境辅警理论考试试卷(含答案)
- 2026江苏徐州市市级机关印刷厂有限公司招聘工作人员2人笔试题库附答案详解(基础题)
- 2025年教师选调教育综合知识真题及答案
- 2025-2030年智能农业灌溉系统行业跨境出海战略分析研究报告
- 第一轮-【黄磷企业检查表】-检查表
- 电动汽车动力性能计算表
- 乔木支撑专项施工方案(3篇)
- 数字化解决方案设计师职业资格认定考试复习题库(附答案)
- 商务数据分析师知识考试复习题库(附答案)
- 2026中国电子签名法律效力与行业发展报告
- 脑梗塞中医护理要点与技巧
评论
0/150
提交评论