虚拟现实技术-实习报告

虚拟现实技术-实习报告
虚拟现实技术-实习报告

虚拟现实技术小组实习报告

学院遥感信息工程学院

班级XXX班

组员

汤XX 王XX 郑XX

指导教师XXX

日期20XX.11.XX

(一)小组实习报告

一、实习目的

1、了解和熟悉了3ds max、unity 3D等虚拟现实设计建模及开发软件各自的功能和操作。

2、了解并掌握利用c++进行虚拟现实漫游系统开发的基本算法和理念。

3、加深对课本所学的理论知识的理解和掌握,掌握虚拟现实技术的基本概念、原理、分类、特性等,学会利用一些常用的虚拟现实设计软件进行虚拟现实系统的开发设计。

二、实习内容

设计并实现了古代小镇五侠镇虚拟现实的漫游系统。本次实习我们小组在3DS MAX里进行三维场景创建、修改导出为FBX模型之后,导入unity3D再通过使用unity3D 进行三维漫游系统设计与开发,最后导出exe文件。

三、实习实现方案

对于此次虚拟现实漫游系统设计,我们组考虑以古代小镇为背景场景设计建模漫游系统对象,所建立的漫游系统将包括小镇房屋、地形、河流、喷泉、天气变化等基本对象,使用unity3D添加河流、光照、喷泉等特效;使用脚本编辑完成天气的变化;每个房屋和树木进行碰撞体添加之后完成碰撞检测功能;通过添加粒子系统完成了落叶等效果。

3.1 3dsmax简介

3dsmax是美国Autodesk公司旗下优秀的电脑三维动画、模型和渲染软件,全称:3D Studio MAX。该软件早期名为3DS,是应用在dos下的三维软件,之后随着PC机的高速发展,Autodesk公司于1993年开始研发基于PC 下的三维软件,终于在1996年3D Studio MAX V1.0问世,图形化的操作界面,使应用更为方便。3D Studio MAX从V4.0开始简写成3dsmax,随后历经V1.2,2.5,3.0,4.0,5.0(未细分).....Autodesk坚持不懈的努力不断更新更高级的版本,逐步完善了灯光、材质渲染,模型和动画制作。广泛应用于三维动画、影视制作、建筑设计等各种静态、动态场景的模拟制作。

3.2 Unity 3D简介

Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游

戏开发工具,是一个全面整合的专业游戏引擎。Unity类似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的图型化开发环境为首要方式的软件。其编辑器运行在Windows 和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhone、WebGL(需要HTML5)、Windows phone 8和Android平台。也可以利用Unity web player插件发布网页游戏,支持Mac和Windows的网页浏览。它的网页播放器也被Mac 所支持。

四、实习步骤

4.1步骤流程图

图 1 五侠镇实现技术流程

4.2 操作步骤

4.2.1 基础地形构建

按照设计方案,该区域地形的总体目标效果为:远处一角为高低起伏的山峰及较低的丘陵,中部大范围为平原,一条河流贯穿平原中央。

因为整个基础地形是虚构想象的,因此并不需要实地的地物与相关数据以供小组成员参考。在本次实习中,小组成员利用通过Unity软件自带的地形设置(Terrain)功能,通过Hierarchy面板中的目标高度绘制,平滑高度两个地形绘制工具,通过设置笔刷类型,大小等完成了地形起伏的绘制,最终绘出包含高山,丘陵,平原,河道四类地物的地形图。接着利用纹理绘制工具,根据地形特点给相应地形进行贴图,最终构建出有四种贴图的完整地形。

图二纹理绘制工具界面

最终得到的地形效果示意图如下:

图三地形效果

4.2.2 建筑物模型搭建

搜集符合预期主题的合适的建筑模型,依照目标设计与地形的特点,利用3ds max 软件将建筑物模型大体分为两个部分,分别组合在一起,为小镇中央的河流预留出空间。同时调整各个建筑物之间的大小比例,使其符合现实特点。最终形成一个完整的武侠小镇。部分建筑物与整体模型如下。

(图)

之后根据小镇的范围,在其中进行材质贴图处理,将地面,墙壁等修改成不同的石头材质,符合古风武侠小镇的风格。小镇模型搭建完成后导出3ds max并导入Unity中,与之前所做的地形进行组合,形成了隐匿于山脚平原的小镇效果。

(图)

4.2.3 人物模型及一三人称漫游的实现

我们首先利用3ds max搭建人物模型,并将成品结果导入Unity,但是导入的人物模型因为缺少骨骼和相关的动作导致人物四肢无法运动,第三人称下人物移动类似僵尸。因此我们选择了在Asset Store上进行了筛选,最后选择了一个日本动漫男性角色形象Taichi的人物模型作为我们相关的人物外表。该人物模型拥有完整的骨骼系统和部分动作动画,是一个十分完整的模型。人物模型如下:

图四选用人物模型

在选择,导入人物模型后。我们开始进行一三人称场景漫游的实现。首先在人物模型里设置两个camera,分别控制第一人称与第三人称的视角。前者放置于人物眼部位置,而后者放置于人物身后。

图五两台Camera的位置

之后导入Unity中自带的Standard Assets 包,在其中寻找第一第三人称控制组件,并将相关组件加入到人物模型中,其中包括刚体,碰撞器,第一第三人称控制器等,而对于两台Camera根据功能不同分别导入不同的组件。

对于第一人称的实现,需要在人物模型中导入第三人称控制器,刚体和碰撞器,第一人称控制器,并且在Camera中设置Head Bob组件,进行相关设置后实现在第一人称的控制下人物仍然可以进行奔跑,跳跃等动画而不是在第一人称控制的情况下毫无动作。

对于第三人称的实现,需要在人物模型中取消第一人称组件,并且取消Camera 中的Head Bob组件。进行相关设置后可以实现第三人称视角下的场景漫游。

(两个图,一个是第一人称漫游景象,一个是第三人称漫游景象)

最后,编写相关程序,通过打开关闭两台Camera,实现了第一人称视角和第三人称视角的自由切换。

(能找到切换效果的图更好,找不到就用下面的这张代码图)

4.2.4 动态天气效果实现

本次实现的动态天气效果分为两部分进行完成:动态天空和动态天气。

动态天空的实现利用Unity软件简单实用的skybox进行,将三种不同状态下的skybox进行混合操作,通过混合的程度调整天空最终呈现的状态。以下为操作利用的三种skybox的原始效果。

(图)

动态天气部分,主要实现了四种天气的状态,分别为:晴、阴、雾、雪。选择了不同天气下的一些独有气象特征,利用Unity软件的粒子系统进行完成。四种天气的特征选择为:

晴——天空漂浮这一层薄薄的白云

阴——天空布满较厚的一层灰黑色云

雾——地面附近笼罩一层接近白色的肉眼可见雾气

雪——天空持续落下朵朵雪花

(图)

最终通过编写程序实现不同天气的随机切换以及相应天空的同时转换。

4.2.5 细节效果装饰

针对场景中的不同地区,分别进行了树木、花草、喷泉、落叶等细节效果装饰,使得整个小镇环境更加优美真实,符合武侠小镇的风格。

对于场景中的树木、花草,我们利用相关材质贴图进行实现。

对于场景中的喷泉,我们在Asset Store中下载了Fluvio插件,利用插件中丰

富的选项设置来对喷泉喷口类型,水珠材质颜色,水珠大小频率等进行设计,并且与场景中的喷泉口建筑对接,实现了喷泉口喷泉的效果。最终设计的结果如下:

这个图当然要换一个啦,换成场景中的图把

对于场景中的落叶,我们利用粒子系统进行实现,在Unity粒子系统中设置粒子区域的大小,频率并将材质改为落叶材质,最终实现了在河流两旁的树木落叶的特效。

(图)

对于场景中的河流,我们利用Unity自带的Standard Assets 包,在其中寻找水面材质,并且对水面区域的高度,范围,材质等进行了设置,将其置于河道和喷泉水潭中。最终实现了水面特效,在场景中水面反射天空光照出现波光粼粼的效果。

(图)

4.2.6 碰撞检测

为了让最终成果显得更为具体真实,不会出现如人物穿墙而过之类的错误场景,对构建的小镇建筑模型、地面、树木等各种再真实环境中会阻挡人物的物体,根据各自的形状等特点进行了不同效果的碰撞检测,而对于花草等物体,不对实现碰撞检测,使得最终效果更加真实。

4.2.7 成果输出

在Unity中选择Build,并在相关界面中进行输出类型等设置,最后选择将成品输出在win系统中,生成.exe文件。

(二)个人实习内容和实习收获(或实习建议)

马子君:本人在本次实习中完成了以下两个任务:

1.3ds Max模型的收集和集成

通过在3ds Max中集成各个模型再将模型导出为FBX格式的文件添加至unity 3D的场景素材文件夹中,而由于地形设置是有起伏的,需要对每个模型赋予不同的高程,是一个比较繁琐的工作,通过在unity 3D中根据地形调整模型的高程;在模型调整过程中由于房屋面片是分开的,有些模型难以调整,会出现房屋面片分离的情况,这也是本人在今后模型修改之中需要改进的地方。

2.房屋模型的碰撞检测

对于每个房屋需要实现碰撞检测功能,该功能是通过unity3D中的collider 实现,对于不同房屋模型的形状添加不同的碰撞体,如box类capsule类,对于复杂的模型一般采用mesh类碰撞体,对于碰撞体的设置需要每个模型都有自身格网才能添加mesh碰撞体,加入碰撞体之后就完成了每个房屋的碰撞检测功能。个人感想:

Unity 3d是一个功能强大的游戏制作软件,在本次实习中本人接触到的功能十分有限,如果想实现强大的功能不仅需要对unity的功能有系统性的了解,同时需要通过代码的编写实现更多的功能,希望能有更多的机会了解unity3D,同时增强代码的编写能力完成更强大的功能。

汤舒畅:本人在本次实习中完成了一下内容:

1.基础地形的构建

通过Unity自带的地形制作工具进行地形的绘制和贴图,最后完成了四类不同地形的地貌和纹理的绘制

2.人物模型的筛选导入与一三人称漫游的实现

选择相关人物模型并且通过Unity自带的资源包,以及相关相机转换代码的编写,实现了单独的一,三人称漫游以及一三人称漫游的自由转换

3.落叶,水面,喷泉相关特效的实现

在Unity自带的Standard Asset包中寻找河流材质,经过材质,形状,大小的设置后在河道和喷泉水池中放置了水面特效。

在Unity中利用Asset Store中下载Fluvio插件,通过材质,形状,喷泉口类型等相关参数的调节实现喷泉效果,并将其放置与喷泉建筑中。

在Unity中利用粒子系统设置了落叶特效的材质,特效范围等参数,最终在河道两旁的树中实现了落叶特效。

4. 现场答辩展示

个人感想:本次实习,我们更多的是自己利用Unity自带的功能来实现相关的功能,如一三人称漫游等,但是自己主动编程的内容很少,对于我个人而言仅仅只有一三人称自由切换部分。从目前的效果来看,Unity是一个很强大的游戏引擎,

但是如果我们要更加详尽的研究Unity,实现更多的功能,就必须要编写代码才能实现了。对于该软件,我们现在只是开了一个头

此外,我认为一个好汉三个帮,我们遇到不会的情况下一定要及时的请教老师和有相关经验的同学,这样可以减少我们很多不必要的精力,将更多的内容用于创意设计和具体内容的实现上。

在第一人称漫游中,用我们在使用模型的时候出现了一些问题,导致人物模型无法移动,经过了对代码的仔细研究才发现问题出现在人物比例上,最后通过调节人物模型才解决了该问题。从中我发现了各种控件实际上是已经编写完成的代码的可视化结果,对于自带的功能我们仍然有很多需要学习的地方。

相关主题
相关文档
最新文档