unity3d毕业设计游戏

2024-04-15

unity3d毕业设计游戏(精选8篇)

unity3d毕业设计游戏 篇1

一、游戏策划简介(游戏类型、游戏主题、游戏故事简要概述)

1、游戏类型:

个人冒险类游戏

2、游戏主题:

救出Alice的妹妹

3、游戏故事简要:

Alice的妹妹被困在了房子里,Alice请求冒险家帮她把妹妹救出来,冒险家在岛上收集够了足够的能源终于打开房门救出了妹妹。

二、游戏交互方式(玩法、如何操作、游戏规则)

1、玩法

玩家要控制冒险家在岛上的各个地方收集能源,与NPC对话可以获得提示,收集够四个能源之后打开房门救出妹妹赢得胜利。

2、如何操作

WASD控制冒险家上下左右移动,空格键跳跃,X键可以搬动石块。

3、游戏规则

1、必须收集四个能源块才能打开房门。

2、必须在靶场得到400分才能得到能源块。

3、必须搬走石块才能得到能源块。

4、玩家的活动范围不能超出小岛之外。

5、必须救出妹妹才能赢得胜利

三、游戏工程环境(unity版本、外置插件说明、外部资源包)

1、unity版本

Windows版本:Unity3d 5.5.0f3

2、外置插件说明

3、外部资源包

1、背景音乐: Pure World

2、游戏界面上的图片

3、神殿的FBX资源包,石门的资源包,房间以及人物模型的资源包

四、游戏场景管理(场景关系)

1、场景关系

1、游戏开始界面的场景

2、游戏玩法介绍的场景

3、游戏游玩的场景

4、关系:游戏开始界面可以进入游戏玩法介绍的场景和游戏过程的场景,游戏胜利之后自动跳转到游戏开始界面的场景

五、功能模块:(实现过程描述)GUI 玩家(摄像机)控制 敌人的生成、敌人的控制……

1、主要的Gui: 人物对话的gui:人物对话时显示背景图片和对话内容,背景图片和对话内容的添加通过代码添加,创建两个public变量,然后从角色位置向NPC发射一条经过鼠标位置的射线,如果击中NPC 则进入到对话状态,显示对话内容和背景图片。

具体代码如下:

效果图:

2打靶处gui的实现:打靶处的GUI是通过人物接触到垫子的触发器出现的,当人物站在垫子触发器的范围之内可以射击靶子,建立三个public变量,分别存放准星,得分以及分数的GUI,然后判断人物是否接触到垫子,如果接触到则显示GUI并且可以发射小球,小球是提前存放的预置对象。具体代码如下: 能源的gui:能源的GUI需要使用动态材质,因为人物每收集一个电池GUI都要发生改变,这段代码放在人物身上,提前设置好需要改变的数量以及GUI图片,再捡到电池的时候依次显示。关键代码如下:

4游戏开始的GUI界面:游戏开始界面的GUI显示是先创建了一个空对象,在空对象上添加了GUItext组件,然后写代码,把图片转换成GUI再拖到代码上。、玩家:

Unity自带的第一人称视角

3、摄像机:

一共2个摄像机,一个主摄像机,一个第一人称的摄像机,玩的时候是以第一人称为主。npc:

Alice:委托玩家任务的NPC,请求玩家救出被困在房子里的妹妹

Amy:被困在房子里的Alice的妹妹,当玩家接触到Amy时则判断游戏胜利。Bob:给予玩家提示的NPC,告诉玩家哪里可以得到能源。背景音乐:

在主摄像机上添加

这俩个组件。添加背景音乐

文件。

六、总结(在制作过程出现的问题、学习心得)

1、出现的问题:

1、和Bob说话时,改变鼠标样式之后改变不回来。

2、模型导入时出现的一些贴图丢失。

3、导出时鼠标样式错误,因为之前用的是GUI格式的,改变成Cursor格式后解决了这个问题。

4、还有许多小问题经过努力得以解决。

2、学习心得

以下是对自己在学习unity中所领悟到的新知识的一些体会:

关于摄影机控制,如果场景中有多架摄影机,那么如何确定第一打开时间所显示的摄影机,就需要设置Camera属性中的Depth数值,数值越大的摄影机越优先显示。

加载游戏关卡, 即 切换游戏场景Sence Application.LoadLevel(“GameSence”);销毁游戏对象

Destroy(this.gameObject);

unity3d毕业设计游戏 篇2

1 Unity3D引擎介绍

Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。原本是一个针对Mac、Windows和Linux的游戏开发套件,后来发展到能够在iPhone和Wii上部署,或者在Web和Android系统上部署。Unity使用了Mono作为脚本引擎的虚拟机,并以C#或者一种类似JavaScript的语言为脚本语言。

Unity有着简单的界面、友好的开发环境及对当前流行游戏平台的支持,它对于初学者或是那些希望使用一个简单、高效并且友好的游戏引擎来创建游戏的人来说是完美的。Unity可部署在Mac OS或Windows操作系统中,在这2个操作系统中,除了客户端操作习惯与界面有些差异以外,引擎自身的功能没有任何区别。

Unity引擎官方的下载地址为http://unity3d.com/unity/download/。目前,Unity官方的最新版本为Unity 3.5.5,还在不断地升级中。Unity的下载与安装比较简单,只要根据步骤操作就可以顺利完成这个过程。

2 游戏设计

游戏基本设计从游戏操作性、可玩性、视觉效果等方面考虑。游戏采用Unity3D引擎开发,主要编程语言为C#语言,使用C#是因为其完整支持面向对象,能够减少许多编程工作量。

这款游戏的基本思路是玩家通过派遣士兵前去占领据点,通过最后攻打下敌方基地,获得胜利。如果己方基地被占,则游戏失败。基本概念设计包括以下几个方面。

2.1 地图说明

玩家开始只拥有一个据点,敌方同样拥有一个据点,同时地图上还分布有一些无人占领的据点。其中,己方据点为蓝色,敌方据点为红色,无人占领据点为黑色,各个据点之间还有相连接的道路。

2.2 据点说明

据点控制是游戏的主要操作,据点会随时间推移产生金钱,因此据点越多,金钱数量越多。因此玩家一开始的任务就是尽可能多地抢占据点。据点上方还有一个数值,表示当前据点内的部队数量,己方据点的数值用蓝色表示,敌方用红色表示,无人占领者为黑色。

2.3 部队说明

部队主要有数量和攻击力等属性,其中数量会标注在部队上方。部队在游戏中主要进行战斗,玩剑可以通过据点派遣部队。

2.4 派遣说明

通过选择己方据点来派遣部队到相邻的据点,若该据点是敌方据点,则进行攻击,否则进行兵力调派。

2.5 战斗说明

战斗过程为模拟方式,根据双方的兵力、攻击力、血量等数值,在后台通过一系列运算得出伤害和扣血,但兵员数量减到零,部队即解散。

2.6 AI控制

游戏中地方为电脑AI,主要是通过对电脑占领附近的据点进行检测,选择出最具战略意义的据点进攻,电脑会主动屯兵,判断敌我实力后谨慎出兵,不会盲目出兵。

在这款游戏中,玩家所要做的就是对士兵的调遣、指派及士兵的生产。因为据点数量影响金钱收益,所以要尽可能多地占领据点。

3 游戏流程设计

游戏流程如图1所示。进入游戏后,首先进入开始界面,在开始界面有开始按钮和帮助按钮,帮助界面中主要有一些游戏内容的说明。点击开始按钮即可进入关卡选择界面,从关卡选择画面可以选择关卡,之后进入游戏。

程序流程控制如下:

使用Unity3D引擎中带有的游戏流程控制类,即MonoBehaviour类,Unity中用户对游戏对象的操作被分割成若干个单一行为。每个单一行为都作为一个MonoBehaviour类来封装。再生成每个MonoBehaviour类的实例,并作为组件嵌入游戏对象。然后按照一定的顺序(从下到上)调用每个对象的重载方法来实现游戏对象的全部行为。

这个类中包含了Unity3D的许多方法,常用到的主要有以下方法:①UpdateO。当MonoBehaviour启用时,其Update在每一帧被调用。②Awake。当一个脚本实例被载入时,Awake被调用。③Start。Start仅在Update函数第一次被调用前调用。④OnGUI。渲染和处理GUI事件时调用。

除此之外,还有鼠标事件的调用,碰撞器及触发器的方法等。

4游戏主要类实现及运行效果

4.1 据点类实现

据点在游戏中有着非常重要的作用,因为游戏中的操作几乎都围绕据点进行。

游戏给据点设定了玩家占领、无人占领、敌人占领3种状态。在不同状态下,玩家能够进行不同的操作。通过使用枚举类型定义出3个状态:

通过在3个类型的切换达到对据点的不同控制。

据点主要有生产金钱和选择的功能。

玩家可以控制处于玩家占领状态的据点。通过点击据点,会出现征兵指令,同时其相邻据点会被标亮,这表示这些据点可以被指派。点击这些被标亮的据点后,即可向其派出军队,若被派遣的据点也是玩家占领状态,则会执行运输选项,否则执行攻击选项。

点击的方法使用的是NGUI插件中的OnClick方法,通过设置布尔类型全局变量isjdchoise,当有据点被选中时该值为真,否则为假。点击据点时,检测是否有据点选中,同时该据点是否为玩家占领状态。若符合条件则执行ShowCreatePlane函数,该函数显示征兵按钮,并能标亮周围据点;若是有据点被选中,则检测该据点是否为标亮据点,通过设置布尔类型ischoise,当该值为真则为标亮据点,否则反之。若为标亮据点,则执行PassiveClickHandle函数,该函数执行派遣命令。

4.2 部队类实现

在游戏中,部队扮演了重要的角色,主要执行寻路命令和战斗命令。寻路则是在选定出击目标后,从出击点到目标点的移动。游戏中的战斗主要分为部队与据点间的战斗和部队与部队间的战斗。

寻路方式使用的是Unity3D自带的NavMesh Agent组件,给部队添加该组件,只需要在脚本中动态指定目的地就可以自动寻路并前往相应位置。

GetComponent().destination;该变量为目的地,设置好该值后开始自动寻路。

this.GetComponent().Stop(true);暂停自动寻路,当执行战斗指令时调用。

this.GetComponent().Resume();恢复自动寻路,战斗结束调用。

战斗命令通过使用OnTriggerEnter()方法触发,当有可攻击目标进入攻击范围会触发OnTriggerEnter函数,对目标进行一定检测后执行相应的攻击事件。

4.3 AI类实现

AI类主要实现选择合适的目标进攻。这主要通过对每个据点进行一定条件的检测来确定最佳攻击目标,即给每个据点设置一个进攻值后,再检测其附近据点的占领情况,综合后得出一个值。因为据点数量影响经济,所以无人占领的据点进攻值会比较高。当计算好所有据点的进攻值后,将其由高到低排序并遍历这些据点,直到据点周围有电脑占领的据点,再将该据点设为进攻据点,同时将该电脑占领的据点设为士兵派遣的主要据点。之后,每隔一段时间检测是否达成出兵条件(出兵条件设置为派遣据点的士兵数大于目标据点的士兵数),若达成则出兵,否则就造兵,直到符合条件。

4.4 游戏在安卓平台上的运行效果(如图2、图3所示)

5 结语

unity3d毕业设计游戏 篇3

关键词:游戏;建模;Unity3D

中图分类号:G434 文献标志码:A 文章编号:1673-8454(2016)08-0068-04

一、引言

学生是有个性差异的,课堂教学无法满足每个学生的学习需求,但通过教育游戏却可以实现因材施教。教育游戏可将游戏任务按照难易程度划分等级,使每个学生可以根据自己的学习情况选择适合的等级,制定自己的学习进度,自主学习能力也得到了提升[1]。此外,教育游戏还具有很强的挑战性、互动性和趣味性,可以激发学生强烈的求知欲和学习动机[2]。学生利用教育游戏进行学习,不仅可以巩固已学的知识,拓展知识面,还能提高想象力。教育游戏还有助于培养学生正确的人生观和价值观。

文章利用3ds Max建立三维游戏场景和道具,以Unity3D为开发环境,JavaScript为开发语言设计并实现了一个中学概率学习游戏。让学生体验游戏刺激的同时,可以通过回答问题来学习、巩固概率知识,使学习不再枯燥,让学生快乐学习,爱上学习,提高学习效率。

二、游戏开发流程

首先,根据学习目标设计学习内容和游戏流程,接着利用3ds Max建立模型、为模型赋予材质;然后将文件导入Unity3D中进行游戏的开发,内容包括碰撞检测、动画设置、添加特效、布置灯光、添加音乐、人机交互设置六大部分;最后进行优化系统,导出为可执行文件。游戏的开发流程如图1所示。

三、游戏设计与实现

1.设计思想

此游戏属于密室解谜类游戏,游戏场景的部分结构图如图2所示。整个密室由一个个小密室组合而成。当玩家进入游戏后,玩家就会位于如图2所示的位置,玩家想要离开密室,必须打开门。当玩家向门走去的时候,就会触发一个触发器,弹出一道数学概率问题。第一个问题是相当简单的,凡是学过中学概率的都可以解决,所以当第一个问题回答错误时,会弹出失败场景,并提示玩家要先去学习中学数学概率的内容,再来玩这个游戏。当第一个问题回答正确,密室的门会自动打开,玩家可以经过走廊进入第二个密室。从第二个密室开始,每道关口除了有一个正门外还有一个侧门。当玩家走向第二个密室主门时,会弹出第二个问题,这个问题比第一个问题略难。当这个问题回答正确,主门会自动打开;如果回答错误,侧道的门会打开,侧道也会有一些关于概率的问题,这些问题是主门问题的分解问题,帮助玩家理解主门的问题。游戏的时间限制为25分钟,单个问题没有时间限制,这种设置给了玩家相对自由的空间。整个游戏场景共有6个主道以及6个侧道,直到玩家开启最后一个密室的门,游戏会结束,并弹出胜利的场景。

2.建模

(1)建模前的相关设置

为了使3ds Max制作的模型与现实世界相符合,需要对3ds Max进行必要的单位设置。将“系统单位”和“显示单位”都设置为厘米。通过这样的设置,也可以将模型导入Unity3D中,这样进行后期游戏开发时更容易操作[3]。

(2)密室场景建模

密室建模采用“多边形建模”的方法。密室分大厅和走廊两个部分。整个密室由若干个大厅和走廊组成,密室大厅的统一规格是:高600cm,长1200cm,宽800cm,密室走廊的统一规格为长400cm,宽1000cm,高400cm。

①密室墙体建模

密室大厅的原型是一个高600cm、长1200cm、宽800cm的长方体,点击工具栏的“创建”面板,选择“标准基本体”中的“长方体”并将其命名为“box1”,设置其长、宽、高分别为1200cm、800cm、600cm。然后将box1转换成“可编辑多边形”,选择“多边形”子集中的“翻转”选项,将box1的法线方向进行反转,使大厅的内墙可见。

密室走廊的原型是一个长400cm、宽1000cm、高400cm的长方体,建立的步骤与密室大厅完全相同。建立后将其命名为“box2”。

②门的建模

要用门将大厅和走廊隔离开来。很多做法可以实现这个目的,笔者用的是“超级布尔”。将box1和box2按如图3的方式进行摆放。选择box1,在3ds Max的“复合对象”面板下选择“超级布尔”。选择“参数”中的“差集”和“盖印”,选择“拾取布尔对象”中的“开始拾取”,点击box2,就会得到一个门的轮廓,效果如图4所示。门的轮廓已经完成,接下来就需要制作门了。门的原型是一个长400cm、高400cm、宽20cm的长方体,按照box1的建立步骤创建一个长400cm、高400cm、宽20cm的长方体,将其命名为“door”。将“door”摆放到box1和box2的交界处。

接着通过上述方法完成其他大厅及走廊的创建,并将大厅和走廊用门隔绝开来,然后选择box1,选择“修改”面板下的“附加”命令,将其他大厅和走廊与box1组合在一起,就完成了整个密室的建模。最终效果如图5所示。

(3)道具建模

虽然游戏场景建立好了,但当玩家位于游戏场景中时会感觉略显空旷,而且为了给密室营造一种诡异、紧张的氛围,需要建立一些火盆摆放在主门的两边。火盆的制作主要分为火盆和支架两个部分。

①火盆的制作

点击工具栏的“创建”选项,选择“标准基本体”中的“圆柱体”,并将其命名为“fire”。将fire的半径设为40cm,高度设为20cm,边数设为8并转化成可编辑多边形。选择fire上边的面,将其放大并选择“插入”选项,给上边的面插入一个新的面。选择新面,选择使用“挤出”,将新面向下拉,然后选择“切割”命令,对新面的对顶点进行切割,共需要切割四次,中间会形成一个新的点。进入“点”子集,使用“选择并移动”命令,将该点微微拉起。这样就完成了火盆的制作。

②支架的制作

支架的做法相对简单,同box1的建立方法一样,建立一个长20cm、宽20cm、高180cm的长方体,并将“高度分段”设为2,将其命名为“support”。将新建的长方体转换为可编辑多边形,进入“点”子集,选择“选择并移动”命令,将support的中间四个点向下拉,将底面的四个点向外拉,支架的模型就建立完成了。为了节约电脑资源,可以将看不见的底面删除。按照这种方法,再建立3个support,并按照图6所示将四个支架与火盆组合在一起。至此,火盆的模型就完成了。

3.贴图的制作

搜集贴图,通过PS加以修改。将修改好的贴图导入3ds Max赋给游戏场景中的内墙和游戏道具。打开3ds Max工具栏的“材质编辑器”,将贴图赋予空白的材质球,选择“将材质指定给选定对象”选项,即可进行模型的贴图。

4.模型的导入

将建立好的游戏场景及其贴图放在Unity3D游戏的资源文件夹下。当把游戏场景拉入Unity3D的开发界面中时,会发现游戏场景上的贴图不见了。这时,只需要在游戏场景的文件里找到那几个材质球,将其重新赋予场景中的对象,就完成了游戏场景和道具的导入。

5.游戏各模块的实现

(1)灯光系统

由于Unity3D无法识别3ds Max的灯光,所以需要在Unity3D建立灯光系统。本设计的灯光只用到“点光源”,使用这种光源,是为了模仿火光。

在网格层次面板选择“创建”按钮,创建一个点光源,将其重命名为“firelight”,在firelight的检视面板里修改相关属性。将firelight的“范围”属性设为15,“强度”属性设为6,颜色调整为与火光相同的颜色。

(2)动画

游戏中有门自动打开的动画。选择工具栏的“窗口”选项中的“动画”,在弹出的对话框中,点击红色按钮开始创建动画,并先将要创建的动画进行保存。在0:00的位置添加关键帧,将时间轴移动到2:00的位置,将游戏场景中的门向下拉,并添加关键帧。这样一个门的开门动画就做好了。按照以上做法,给每个门创建开门动画。

(3)特效

本设计的特效是“火”,该特效是用粒子系统制作而成的。在网格层次面板选择“创建”按钮,创建一个粒子系统,将其重命名为“fire”。在fire的检视面板里修改相关属性。粒子系统相关属性修改完后,就要为火焰贴上材质,使其更加真实。在工程面板里创建一个材质,将其命名为“firepicture”。在其检视面板里将“渲染”设置为“FX”,这样当把火焰的贴图赋给“fire”时,可以去掉贴图黑色的部分。然后把“firepicture”赋给粒子动画,这样本设计的特效就制作完成了。

(4)人机交互

本设计使用的是Unity3D自带的人物,点击工具栏的“资源”选项,选择导入“Character Controller”,就完成了游戏人物的导入。将导入的人物拖入到游戏场景里,就可以用W、S、A、D控制人物上下左右移动。

(5)音乐

系统需添加三种声效。 首先需要为整个游戏添加背景音乐,选择主相机,在工具栏上点击“组件”选项,在“Audio”选项下面选择“Audio Source”选项,将导入的背景音乐拖给主相机,在检视面板里点击“循环”选项,这样背景音乐就会循环播放,第一种声效添加完毕。其次,为了营造紧张的氛围,需要给游戏人物添加心跳声,与添加背景音乐的方法一样,操作完毕之后,在游戏里就可以听到人物的心跳声。最后,需要为门添加开门声,但这个需要用代码实现。按照前面的方法添加完音效后,需要给门添加如下代码:

If(doorIsOpen==true)

{Door.audio.PlayOneShot(doorOpenSound);}

这样,所有的音效就全部添加完成了。

(6)碰撞与触发

为了避免人物穿墙而过等非自然现象的出现,需要给游戏添加碰撞。为了让人接近门的时候可以自动弹出概率题目,需要添加触发器。

①人与建筑物的碰撞

点击游戏场景的墙体,点击工具栏的“组件”按钮,选择“物理”面板下的Mesh碰撞器。这样游戏人物就可以站在游戏场景里,而不会掉下去。

②人与门的碰撞

同给墙体添加碰撞体的步骤一样,给门添加一Box碰撞器,使人物避免穿过门到达另一个密室。

③人与火盆的碰撞

给火盆添加Box碰撞器,步骤同上,使人物避免穿过火盆架。

④触发器

为了实现人走近门时自动弹出题目,需要在门的前面放一个空物体,给空物体添加Box碰撞,在空物体的检视面板里将“IS Trigger”打上对勾。弹出题目的相关代码如下:

function OnGUI()

{if(WindowSwitch==true)

{GUI.skin=im;

GUI.BeginGroup(menuAreaNormalized);

windowRect=GUI.Window(0, windowRect,WindowContain,“题目”);

GUI.EndGroup();}}

function WindowContain(windowID:int)

{ GUI.Label(Rect(0,30,300,300),“5本书分给甲乙丙三个人,按一个人一本,另两个人各两本,有多少种不同的分法。”);

If(GUI.Button(Rect(0,180,80,60),“120”))

{WindowSwitch=false;Destroy(this.gameObject);}

If(GUI.Button(Rect(220,180,80,60),“30”))

{WindowSwitch=false;Destroy(this.gameObject);}

If(GUI.Button(Rect(0,240,80,60),“90”))

{box3.flag2=1;Destroy(this.gameObject);}

If(GUI.Button(Rect(220,240,80,60),“60”))

{WindowSwitch=false;Destroy(this.gameObject);}

GUI.DragWindow();

}

四、游戏的优化与发布

1.游戏优化

游戏场景中含有大量的点灯光,会对游戏的性能产生较大的影响。使用光照贴图技术,将光线效果渲染成贴图可以节约大量的电脑资源[4]。方法为:点击工具栏的“窗体”按钮,选择“光照贴图”选项,点击“烘焙”对当前游戏场景进行烘焙。

2.发布

在工具栏的“编辑”面板下,选择“工程设置”面板下的“玩家”选项,对游戏的图标和名称进行设置。点击“文件”面板下的“工程设置”选项,从工程面板里将游戏的几个场景文件拖入到“工程设置”的窗口里。点击“建立”按钮,就会生成一个可执行文件,这样就完成了游戏的发布。游戏胜利时的场景如图7所示,答题时的场景如图8所示。

五、结束语

文章设计并实现了一个中学数学概率的教育游戏,帮助学生在娱乐中进行学习,让学生轻松学习、爱上学习、快乐学习。系统基本实现了需求分析中的要求,但由于时间仓促,系统的功能还可以在后续研究中进一步完善,如:可以在游戏中添加一些障碍物或机关,以增加游戏的趣味性;可以在游戏场景进行切换时添加一些过度动画,使游戏更加美观。

参考文献:

[1]冯威.数学游戏与高中数学教育研究[D].大连:辽宁师范大学,2012.

[2]王倩,赵玉清.教育游戏在小学数学教学中的应用探析[J].软件导刊,2013,12(3):3-8.

[3]Li Wang. Researching of the three-dimensional virtual simulation campus scenes construction technology[J].The Open Cybernetics & Systemic Journal,2015(Volume9):1056-1057.

[4]Li Wang.Construction of the three-dimensional virtual campus scenes Problems and Solutions[J].The Open Cybernetics & Systemic Journal,2015(Volume9):1132-1133.

[5]宣雨松.Unity3D游戏开发[M].北京:人民邮电出版社,2012:91-13.

[6]谢亮.数学教育游戏与数学教学[D].广州:广州大学,2008.

unity3d毕业设计游戏 篇4

好多unity3d的爱好者,可以把游戏导出为linux的版本,让unity3d游戏在ubuntu下跑起来...

1、打开自己的unity3d游戏项目,File--BuildSettings...

2、文件导出为32位或者64位的,根据自己的ubuntu的版本决定,点击左边的“PC,Mac&Linux...”,右边的target platforn选择linux,architecture选择x86_64(因为我的ubuntu是64位的),完成后点击下面的“build”,

3、打开你要保存的文件夹,填写文件名,然后点击下面的“保存”。

4、进入ubuntu把unity3d导出的linux版本游戏项目复制到linux的用户目录下,例如我这里是用户目录的“unity游戏”文件夹下面,然后给文件权限。

$sudo chmod 777 unity游戏

5、双击打开unity3d游戏,点击“确定”,然后就进入游戏了。

Unity3D网络通信 篇5

课程教学目标:

知识目标:

一、弱联网(hppt)

1、建立服务器

2、PHP的基本语法

3、WWW的基本应用

4、MySql的基本应用

5、上传和下载分数

6、AssetBundle资源的打包,加载和卸载

7、AssetBundle对内存的影响

二、局域网(NetWork)

1、NetWorkView组件

2、Unity局域网常用回调方法

3、Unity局域网常用API

4、局域网实现角色同步

5、局域网实现CS游戏

能力目标:

一、排行榜

二、CS

主要教材:

《Unity手机游戏开发3D/2D》、《Unity4.x从入门到精通》

教学内容及考核要求:

第一单元:网络游戏与单机游戏的区别 内容:

1、网络和单机游戏对比。

2、网络游戏的特点。

3、介绍网络的几种实现方式。

4、介绍本月实现的案例。考核内容:

掌握网络游戏的概念

第二单元:建立服务器(安装apache、MySql和PHP)内容:

1、安装apache服务器,掌握apache服务器程序的主要功能。

2、掌握如何解决apache不能启动的问题,学会使用控制台程序进行调试。

3、安装MySql数据库,掌握MySql数据库程序的主要功能。

4、学会使用控制台进行MySql数据库的数据查看。

5、安装PHP,掌握如何对PHP的配置文件进行相应的更改。

6、掌握如何在网页中显示相应的PHP文件。考核内容:

搭建HTTP服务器

第三单元:PHP的基本语法 内容:

1、掌握PHP调试工具的使用。

2、PHP语言的输出方法。

3、PHP的变量。

4、PHP语言的注释方式。

5、变量的类型转换

6、PHP中的常量

7、PHP中的运算符

8、PHP中的表达式 考核内容:

对PHP基本语法有一定的认识

第四单元:WWW基本应用 内容:

1、掌握Unity的WWW主要支持的GET和POST数据传输方式。

2、掌握基本类型的上传和下载。

3、掌握上传和下载图片。

4、掌握下载声音文件。考核内容:

掌握unity与web服务器的简单交互

第五单元:MySql的基本使用 内容:

1、掌握workbench的使用方式

2、了解PHP与数据库交互的基本语法(链接数据库,查询,删除,增加新项,修改项)目标:

能够使用PHP与MySql进行通信 项目:

PHP与MySql通信的简单示例(上传和下载分数排行榜的前半部分)考核要求:

掌握PHP与MySql数据库的通信

第六单元:上传和下载分数 内容:

1、json格式的数据解析

1.1 json语法格式

1.2 json解析

2、GUI常用方法

2.1 label 2.2 图片

2.3滚动面板

2.4滑动条

2.5输入框

目标:

对unity与web交互的知识点进行练习项目:

上传和下载分数的案例 考核要求:

全面掌握unity与web服务器的交互

第七单元:Assetbundle

(一)内容:

1、掌握Assetbundle文件的工作原理

2、Assetbundle文件的三种创建方式。

3、掌握如何创建Assetbundle之间的依赖 目标:

掌握Assetbundle文件的基本使用方式 项目:

创建Assetbundle文件的基本示例,可以使用编辑器菜单进行打包 考核要求:

能够独立的完成Assetbundle文件的生成第八单元:Assetbundle

(二)内容:

1、掌握Assetbundle的几种加载方式

2、掌握如何从Assetbundle文件中加载asset文件

3、掌握如何从场景Assetbundle文件中加载asset文件

4、掌握Assetbundle的卸载

5、了解下载和加载Assetbundle时对内存的影响

6、了解WWW、Assetbundle以及Asset的关系 目标:

对Assetbundle有更深入的了解 项目:

加载和卸载Assetbundle文件的简单示例,加载关卡文件 考核要求:

能够独立完成Assetbundle文件的加载和卸载

第九单元:Assetbundle

(三)内容:

1、搭建关卡

2、配置相应的json关卡文件

3、解析json

4、读取配置

5、加载资源

6、生成关卡 目标:

对Assetbundle有更深入的了解 项目:

加载和卸载Assetbundle文件的简单示例,加载关卡文件 考核要求:

能够独立完成Assetbundle文件的加载和卸载

第十单元:Unity局域网技术

(一)内容:

1、了解基于Unity的网络解决方案

2、掌握network View(网络试图)组件的主要功能

3、掌握unity中网络相关的常用回调方法 目标:

对unity的局域网技术有一个初步的认识 项目:

测试unity中网络相关回调方法的示例 考核要求:

初步了解unity局域网

第十一单元:Unity局域网技术

(二)内容:

1、对unity局域网技术进行练习目标:

掌握unity局域网的数据同步:RPC技术 项目:

控制角色移动,能够实现方法同步

考核要求:

能够独立实现局域网的功能

第十二——十五单元: 内容:

1、利用unity局域网功能,实现一款第一人称联网射击游戏 目标:

使学生对unity的局域网功能有更深的认识 项目:

第一人称射击游戏 考核要求:

能够独立实现局域网的功能

第十六——十九单元: 内容:

1、使用NGUI实现射击游戏的UI 目标:

使学生对unity的局域网功能有更深的认识 项目:

第一人称射击游戏 考核要求:

unity3d毕业设计游戏 篇6

【摘要】Unity3D游戏开发引擎作为制作游戏的主流应用软件,近年在教育领域也得到较广泛的应用。在教学过程中使用Unity3D游戏引擎制作的学习资源,不仅丰富了教学形式,教学方法也得到了更好的体现,同时也可以达到寓教于乐的效果。Unity3D在教育中的应用研究,可以从Unity3D在成人教育中的应用、Unity3D在教育模型展示中的应用以及Unity3D在教育游戏中的应用三个方面分析研究。

【关键词】Unity3D 教育 应用 游戏 模型

一、绪论

在现代教育中,创新人才的培养模式不应局限于传统课堂的讲授模式,参与式学习、讨论式学习以及探究式学习等学习模式被不断提出,那么如何将学生带入到此类学习情境中是一个值得深思的问题,提供给学生的学习资源就是其中的一个切入点。在传统课程模式的推动下,运用多媒体教学资源可以激发学生的学习兴趣和课堂的主动参与性,提高独自思考与探索问题的个人能力。

同时,随着IOS、Android等系统的移动终端的广泛使用,各类移动终端的移动学习资源被大面积开发。基于Unity3D制作出来的教学游戏交互资源可以跨平台发布到手机、IPAD等移动终端,使学生可以不受时空时间限制进行学习,成为Unity3D从同类软件中脱颖而出的重要原因之一。

二、Unity3D技术

Unity3D简介:Unity3D技术相对其他游戏制作软件是一种相对较新的技术,它既是一款游戏引擎,也是游戏制作工具。Unity3D是由丹麦Unity公司开发的游戏开发工具,具体的特性包含整合的编辑器、跨平台发布、地形编辑、着色器、脚本、网络、物理、版本控制等特性。Unity3D在教学中应用具有以下优势:

(1)MonoDevelop是Unity3D中主要的开发平台,同时包含了多种编程语言,例如C,C++,Boo,JavaScript等,其中JavaScript语言最为入门。开发者可以根据自己的实际情况进行选择。对于无开发游戏经验的教育者也可以使用简单的编程语言参与到教育游戏开发的过程中。

(2)Unity3D相对于其他的同类制作游戏软件支持更大的场景制作,制作出的场景也较为逼真,虚拟与现实的完美结合可以提供给学生更强的代入感。

(3)Unity3D另外一种较为强大的功能是可以支持跨平台设计,在当前的游戏引擎中是唯一可以提供所有平台植入能力的游戏开发软件;同时,可以将开发出的游戏发布到手机等移动终端,作为移动学习资源供学生利用闲散的时间学习,也可以为成人学习者提供终身学习的目的。移动学习将终身学习的理念从技术上进行了充分展现,使学习者得以在生活、工作甚至消遣之余,于开放的状态中体验移动计算技术带来的随时随地学习的全新感受。

三、Unity3D在教育游?蛑械挠τ?

(一)教学设计

基于Unity3D游戏引擎制作的教育游戏,既然需要用在教育过程中,那么必须需要遵循教育的相关教学理论以及教学设计相关原则。教学设计的目的是设计教学过程,使教学过程更完善,学生在结合Unity3D教育游戏学习的过程中学习效率更高、学习效果更好,以达到预设的教学目标。教育游戏面对的对象可以是各个领域、各个行业,不同类型的教育游戏有不同的教学内容和教学目标,以针对小学英语教学设计的教育游戏为例。基于Unity3D游戏引擎设计的游戏也是一个小型的学习环境,所以在设计的过程中首先要进行学习者分析、教学目标的制定、设计教学过程,其次需要在一定的理论的指导下,根据一定的教育游戏的设计原则进行教育游戏的框架设计,最后阶段是进行开发与调试。

1.学习者分析

小学生接受新鲜事物的能力有限,并且每个学生的英语基础和学习习惯也有所不同,所以在呈现新的知识点时不宜直接进入深层次问题的探索,应该循序渐进、由简到难,给学生一个适应的过程。学习者可以根据自身的情况自主控制学习进度、学习方法以及学习时间,这与建构主义学习理论所倡导的“以学生为中心的”思想不谋而合。

2.教学目标的制定

基于Unity3D游戏引擎设计的教育游戏,必须要确定教学目标。可选择一些在传统课堂中不易理解的知识点作为教学内容,同时将大的学习内容拆分成小的知识点,每一部分的设计内容不宜过多,知识点应短小精悍,可以适应各个年龄段学习者的学习要求。

设计者还需要考虑到学生在运用基于Unity3D游戏引擎设计的学习资源后学习者可以达到哪些学习目标,可以从三维学习目标展开,语言技能、知识目标以及情感态度。在这一部分的设计过制定过程中教师可以参与其中,与游戏设计者共同完成目标的制定。

3.设计教学过程

在针对小学英语设计教育游戏时,可将教学内容的难易程度进行区分,学生可根据自身情况进行选择。作为学生学习的辅助课件,在使用Unity3D设计的教育游戏课件时,学生本身处于一种非正式的学习状态,教育游戏将学生完全带入到学习内容中显得尤为重要。这就需要在设计基于Unity3D游戏引擎的教育游戏时,环境的设计要符合学生的心理特征。

4.教育游戏框架设计

游戏框架设计是教育游戏最为关键的一个部分。框架的设计可以根据移动学习环境下教育游戏通用标准。分别包括以下几个方面,目标、规则、竞争、挑战、幻想以及娱乐。

unity3d毕业设计游戏 篇7

实时排名是竞速游戏中非常重要的一个模块, 可大大提高玩家的刺激感、成就感和持久兴趣。尽管实时排名在竞速游戏中的应用已非常普遍, 但迄今为止, 笔者仍未在国内文献中发现相关的文字描述和理论研究。

笔者在使用Unity3D开发一款竞速类游戏时, 需要在比赛过程中对玩家角色实时排名, 由于缺乏一个统一的标准对不同玩家角色的比赛情况进行实时的记录和比较, 而赛道的多样性和地形的复杂性进一步加深了这一标准的制定难度。因此, 该模块的制作一直成为制约项目开发进程的瓶颈。

一次偶然的机会, 笔者在观看某届奥运会百米飞人大赛时观察到, 沿着跑道边缘有一条专供摄像机运动的轨道。比赛过程中, 摄像机沿着轨道跟随跑在前端的运动员实时拍摄, 这对比赛排名的最终判定起到了关键作用。

推而广之, 如果能为比赛中的每一位运动员都配置一台实时跟随的摄像机, 所有的摄像机都沿着同一条轨道运行, 那么在不同跑道上的运动员的运动就可以映射为同一条轨道上对应的摄像机的运动。

同样, 在竞速游戏中, 如果能为每位玩家角色配置一个追踪对象, 同时制定一条沿着赛道的标准路径, 将游戏过程中所有玩家角色的运动全部映射到这条标准路径上, 那么就可望解决游戏中的实时排名问题。

当然, 为了实现这一设想, 还必须首先选定一款功能强大的游戏开发引擎作为开发工具, 然后选择合适的样条曲线来完成标准赛路径的制定, 同时选择合适的碰撞检测方法以实现玩家角色与追踪对象的前后位置判定, 最后通过能定量计算玩家比赛进度的数学模型来实现实时排名算法的最终设计。

一、游戏开发工具的简介

Unity3D是Unity Technologies公司开发的一套包含图形、声音、物理等功能的游戏引擎。它提供了强大的关卡编辑器, 支持大部分主流3D软件格式, 使用C# 或Java Script等高级语言实现脚本功能, 开发者无需了解底层复杂的技术, 就能够快速地开发具有高性能、高品质的游戏产品。

Unity3D最突出的特点是它的跨平台性[1,2,3,4], 它支持的平台包括PC、MAC、Linux、Web、i OS、Android、Xbox360、Play Station3等大部分主流游戏平台, 还可以将游戏直接导出为Flash格式放到网页上。开发者可以在PC平台开发测试后, 只做很少的改动, 即可将游戏移植到其他平台。

经过不断的完善, Unity3D已经成为一个成熟的游戏引擎, 不仅在游戏领域, 而且在教育、医疗、交通等领域的应用也越来越广泛[5,6,7,8]。

本游戏项目的开发正是基于这种当前最流行的Unity3D游戏引擎。它在本文中的应用主要分为三个模块:路径拟合、追踪对象与玩家角色前后相对位置判定和实时机制的设计。

二、基于Catmull_Rom样条曲线的路径拟合

样条曲线[9,10]是指给定一组控制点而得到一条曲线, 曲线大致形状由这些点予以控制, 一般可分为插值样条和逼近样条两种。插值样条通常用于数字化绘图或动画设计, 逼近样条一般用于构造物体表面。由于赛道的多样性和不规则性, 对拟合路径的限制很高, 因此该游戏最终选择插值类型的样条曲线。

同样由于游戏中赛道的多样性和不规则性, 考虑到二次曲线模型通常只能表示存在一个拐点的赛道, 而二次曲线在此方面存在很大的局限性, 因此该游戏采用了更为精确的三次曲线来描述赛道。笔者对三次Beta样条曲线、B样条曲线、Bezier曲线和Catmull_Rom样条曲线进行了比较, 结果表明Cat-mull_Rom曲线具有局部性, 并且通过所有控制点, 这在赛道拟合上具有一定的优势。因此本文选择插值类型的三次Cat-mull_Rom样条曲线[11,12,13]来拟合标准赛道路径。

2.1 Catmull_Rom样条曲线

Catmull_Rom样条函数是从三次曲线方程演变而来的。当已知两点P0、P1和这两点的切线斜率P′0、P′1, 即可确定一条通过这两点的三次曲线:

这两点的位置和斜率分别为:

由上式可得:

推广到一般情况, 对于N个点P0, P1, P2, …, PN-1, 只要给定每个点的切线斜率就可以确定一条经过所有点的曲线。由于某一点的斜率是未知的, 通常用其前后两点连线的斜率来近似代替, 所以该曲线的每个分段有四个控制点。设P为第i个分段上的点, 该段曲线的四个控制点分别命名为Pi-1、Pi、Pi+1、Pi+2, 则有:

由此可得Catmull_Rom样条函数:

该函数的模拟演示图如图1 所示:

2.2 Catmull_Rom样条曲线控制点

设P0, P1, P2, …, Pn为拟合路径的控制点, 其中P0, Pn为首尾控制点, 则一般有:

而其间的控制点P1到Pn-1为赛道上关键位置设置的路点。

考虑到玩家角色在游戏中的比赛圈数不止一圈, 为保持拟合路径在游戏全程的连贯性, 笔者将拟合路径设计为一条封闭的曲线。

由分析可知, Catmull_Rom样条曲线不通过首尾两个控制点, 因此P1和Pn-1是相同的。为保证在P1 (或Pn-1) 处曲线斜率的连续性, 需要对首尾控制点重新设置:

下图2 为拟合路径的模拟图:

三、基于实时碰撞检测的前后位置判别

碰撞检测用于判定一对或多对物体在给定时间域内的同一时刻是否占有相同区域。它是游戏、虚拟现实、机器人运动规划等领域一个不可回避的问题。

随着计算机硬件, 互联网技术的日趋成熟, 以及虚拟现实和动画仿真的快速发展, 人们对游戏的交互性和真实性提出的要求也越来越高, 碰撞检测作为其中最关键的技术之一, 其实时性[15,16,17]和真实性一度成为研究热点。经过二十多年不断研究, 已最终形成了一些比较通用和成熟的算法。主要分为三类:模型之间的碰撞检测、预测将要发生的碰撞和动态获取模型之间的距离。相应的, Unity3d的碰撞检测[18]方法也有三种:基本碰撞检测, 触发器碰撞检测和射线碰撞。

3.1 基于射线碰撞检测的选定和实现

基本碰撞检测要求碰撞对象之间必须发生真实的碰撞, 这种碰撞会影响玩家角色在游戏中的运动, 造成不真实感。

触发器碰撞检测因在实际情况中可能出现追踪对象与玩家角色碰撞击穿的现象, 造成漏检, 导致游戏不稳定。

因此, 本文选择了可有效克服以上两种碰撞检测算法缺点的射线碰撞检测算法。

根据射线碰撞检测的特点, 笔者在游戏设计中, 以玩家角色为起点, 每间隔固定时间, 沿着玩家角色运动的正反方向分别发射两条射线。如果向前的射线与追踪对象发生碰撞, 则判断追踪对象在玩家角色前面, 反之在玩家角色后面。射线碰撞既避免了基本碰撞检测造成的不真实感, 又避免了触发器碰撞检测造成的击穿问题, 同时降低了开发成本。

3.2 追踪对象的设置

由于射线碰撞检测也有自身的局限性, 只有当角色正对着追踪对象时射线才会与追踪对象发生碰撞, 因此该游戏使用平面来表示追踪对象。

为了提供足够的有效碰撞范围, 平面宽度略大于赛道最大宽度, 高度略高于角色的高度, 并且游戏过程中追踪对象始终垂直于标准路径。由于追踪对象是一个虚拟设置的游戏物体, 设置完成后应关闭追踪对象的渲染组件。如图3 为打开追踪对象的渲染组件的示意图:

碰撞类型设置为触发器碰撞, 以免造成玩家的不真实感, 同时给该对象设置单独的碰撞层, 以避免不必要的碰撞给检测造成的干扰。

四、实时排名机制的设计

在完成了标准路径的制定和追踪对象和玩家角色的前后位置的判别之后, 接下来就进入实时排名机制的具体设计和实现了。按照引言所述的设计思想, 笔者为每名玩家角色配置了一个沿标准路径运动的追踪对象, 通过追踪对象对玩家角色的实时追踪, 将玩家角色在赛道上的运动转换为追踪对象在标准路径上的运动, 并使用追踪对象已完成的圈数与当前圈数完成的百分比之和来表示玩家的比赛完成进度。

具体实现步骤包括:

4.1 追踪对象的运动控制

Catmull_Rom样条曲线是一种分段式连续平滑曲线[19], 并且每一分段都可独立计算。设点P为拟合路径上百分比为u的点, 则。由 (3) 式即可计算出P点的坐标。

设追踪对象已完成的比赛圈数为n, 初始值为0, 在游戏开始阶段, 追踪对象初始化为拟合路径上百分比为0 (即u=0) 的位置。游戏过程中, 每帧给u一个增量add, 并将追踪对象的坐标更新为当前u值所对应的拟合曲线上点的坐标。当u=1 时, 表明追踪对象跑完一圈, 此时n值加1, 并将u值重置为0。通过这种方式实现了对追踪对象运动轨迹的控制。通过调整add的值则可以实现对追踪对象运动速度的控制。

4.2追踪对象的实时追踪

设玩家角色在游戏中的最大速度为Vmax, 最小速度为Vmin, 同时为add设定两个可选值:high Speed和low Speed, 其中high-Speed >Vmax, low Speed<Vmin。游戏过程中实时检测玩家角色与追踪对象的前后相对位置, 当追踪点对象超越玩家角色时, add = low Speed;当追踪对象落后玩家角色时, add = high Speed。

由于游戏情况的复杂性以及不同场景的多样性, 导致Vmax和Vmin没有一个恒定的值, 因此high Speed和low Speed的数值需要在实际测试过程中反复调整, 以降低追踪对象与玩家角色之间的平均相对速度, 提高追踪对象实时追踪的精确度。

4.3 游戏进度的计算模型

通过追踪对象对玩家角色的实时追踪, 实现了从玩家角色在赛道上的运动到追踪对象在标准路径上的运动的实时映射。设游戏玩家数为k, 每名玩家角色已完成的圈数为N, 当前圈数完成的百分比为U, 比赛完成进度为P, 则:

这样, 通过每帧比较每位玩家角色的P值, 便可实时计算出每位玩家的比赛排名。

五、算法测试与分析

实时追踪模块的设计与玩家角色游戏进度的计算紧密相连, 该模块的实现直接关乎到实时排名的计算。其中, 最能反应该模块设计好坏的是玩家角色与追踪对象之间的实时距离, 因此, 笔者选择该指标作为定量检测算法性能的标准。

笔者将比赛中可能碰到的情况分为直道运动, 弯道运动, 加速运动, 碰到跑道边缘减速运动和碰到障碍物停止运动这五类, 并分别对处在这五类情况下的检测指标进行了测试。如图4为测试结果:

其中, 纵轴表示玩家与追踪对象之间的距离, 横轴表示时间。笔者对每种类型的情况分别进行了长达5 秒的测试, 每隔0.5 秒记录一次测试结果。

由上图可知, 在直道和弯道运动情况下, 玩家角色速度比较平稳, 玩家角色与追踪对象之间的距离波动不大, 一直稳定在一个较小的范围内。

在玩家角色加速运动或碰到跑道边缘减速的情况下, 玩家角色速度发生小幅度的变化, 刚开始追踪对象与玩家角色的距离出现较小的波动, 经过不到0.5 秒的调整, 它们的距离重新回到正常的波动范围。

当玩家角色碰到障碍物时, 玩家的速度突变为0, 此时玩家角色与追踪对象的距离出现较大波动, 接着追踪对象的速度降为零, 此时它与玩家角色的距离保持不变, 当玩家角色跳过障碍物后, 它们的距离迅速恢复到稳定波动范围内。

因此, 由前面分析可知, 该算法针对不同类型的赛道和地形都表现出了良好的稳定性和准确性。

结束语

unity3d毕业设计游戏 篇8

关键词:虚拟展示技术;耀州瓷;增强现实技术;纹理映射;Unity3D

1 背景分析

计算机以及互联网等技术的发展,已经使得我们对文化记录与传播的载体选择有了更多探索的空间。人们不断提高的文化需求与体验需求也对研究如何利用新的技术手段来承袭与展现历史文化提出了更高的要求。面向文化遗产的数字化展示技术就是其中十分重要的一个方面。

2 现状

传统的展示方式多数是将文物或标本等作为展示内容,通过一定的主题或排序方式进行分类和组合,以橱窗陈列附以说明为形式进行展现。这样的展示方式虽然具有真实、直观、准确和生动的特点,但给参观者的观看角度和观看距离等往往非常受限,多数展品无法提供给参观者全方位的信息。同时实物展示会受到时间与空间的制约,观者只能在特定的时间和地点参观特定数量的展品,信息量受到直接的影响。且将文物陈列于展馆当中会对文物有一定的损坏影响,不利于其保护。

这样的静态的、单一角度的呈现方式,缺乏互动性和趣味性,对许多参观者吸引力并不大,参观过程只是“走马观花”,造成参观效果和学习效果并不理想。加之其具有一定的时间与空间的局限性,不利于大范围和长久的文化传播。

3 增强现实技术

增强现实(Augmented Reality,简称AR),被称为21世纪最有前景的研究领域之一,它是把计算机生成的虚拟物体或其他信息合成到用户感知的真实世界中的一种技术。[1]AR技术是虚实结合、实时交互、三维注册增强现实系统,是利用附加的图形或文字信息,对周围真实世界的场景动态进行增强,[2]比虚拟现实(Virtual Reality,简称VR)技术有更大的优势。

4 基于Unity3D的耀州瓷虚拟展示技术研究与实现

在进行3D模型采样时需注意选取器型标准的实物进行3D模型建立,以保证其三维虚拟效果的准确度。

4.1 3D模型的建立

(1)产生3D对象。在3D MAX环境下通过提取特征线,反复比对修改特征线后,旋转得到曲面造型。

(2)导出3ds.文件。将文件命名为yaozhouci,然后使用“导出”命令,保存文件,文件类型选择3ds.导出完成。

4.2 提取纹理

将数码相机固定在三脚架上,由于瓷瓶的反光性,需要使用柔光箱进行拍摄。测量瓷瓶中心轴将耀州瓷瓶放置在旋转台中心,调整相对位置,使相机镜头与瓷瓶中轴平行。每次旋转5度,共72个角度。由于瓷瓶为球面,所拍摄照片有非常大的球面变形,而每张图片的中心部分垂直于相机基本没有形变,因此截取每张图片的中心部分进行拼接。又由于瓷瓶直径上下不同,将其分为上下6个部进行采集,即获得432张图案素材。

获取完成后在Photoshop进行拼接处理,调整位置及尺寸使得花纹连续,且首尾相接。拼接工作完成后需要进行进一步的调整处理,对比实物矫正颜色,调节亮度及饱和度等。

最终获得的瓷瓶花纹拼接效果如图所示。

4.3 确定识别标记

(1)制作二维识别图。将照片文件经过photoshop处理制作出可作为二维识别图的文件。

(2)生成识别图Unity包。将识别图上传至高通网站(https://developer.vuforia.com)后,下载其对应Unity包。

4.4 虚拟展示程序的实现

将三维模型、纹理贴图、识别图对应Unity包及安卓开发工具包导入Unity3D中。

删除main camera,搜索AR Camera并将其拖动到Hierarchy窗口中,将ImageTarget同样拖动进来,再将3D模型拖动至ImageTarget。对ImageTarget进行修改,将Data Set修改为识别图的Unity包(yaozhouci),ImageTarget选择二维识别图(_MG_290945)。

单击AR Camera,调整相机位置至3D模型正上方,并进入Data Set Load Behavior(Script)选项,勾选Load Data Set yaozhouci后再勾選Activate,即可完成运行程序后识别二维识别图自动加载对应3D模型的命令。

以Android为例,导出apk.文件,并进行测试。测试效果如图。

5 结语

对比实物与展示效果,可以发现Unity3D引擎能够高度还原展示信息。相比其他虚拟展示,通过Unity引入增强现实技术的展示效果还原度比较理想,给观者身临其境的感觉,具有更强的生动性和吸引力。

参考文献:

[1] 齐越,马红妹.增强现实:特点、关键技术和应用[J].小型微型计算机系统,2004,25(5):900-903.

[2] Azuma R.Survey of Augmented Reality[J]. Teleoperators and Virtual Environments,1997,6(4):355-385.

上一篇:最新助理工程师岗位竞聘演讲稿下一篇:2017-2018学年上学期七年级语文期末测试题