《基于unity3d平台的篮球游戏三维动漫设计与实现本科学位论文.doc》由会员分享,可在线阅读,更多相关《基于unity3d平台的篮球游戏三维动漫设计与实现本科学位论文.doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、河北工业大学2013届本科优秀毕业设计论文各专业完整优秀毕业论文设计图纸基于Unity3D平台的篮球游戏三维动漫设计与实现班级:软件092姓名:指导老师: 摘要:本系统的目标是基于Unity3D平台的篮球游戏,实现在3D篮球馆中模拟人物的投篮运动,并通过计分、计时系统记录玩家当时的得分和游戏时长,使用户从视觉、听觉上感受投篮运动。主要工作内容分为三维建模、调试动画和游戏的交互实现等。首先,在3DSMAX中按真实比例建立了包括地板、座椅、吊灯、液压篮球架等在内的篮球场馆的模型,按真实人体比例建立了人物模型,并在PhotoShop中为人物绘制了贴图。接着,在3DSMAX中为人物绑定了骨骼并调试了走
2、路、跑步、运球、投篮、扣篮等篮球运动动作。然后运用Adobe Soundbooth cs4剪辑编辑出拍球、篮球弹跳、篮球入网等声音。最后,将建立好的模型、调试好的动画、剪辑好的声音导入到Unity3D中,在Unity3D中建立菜单、游戏场景,通过编程实现对人物投篮的环境、动作、声音的模拟。为了给用户更好的听觉和视觉体验,本系统添加了背景音乐,并且在菜单中添加了粒子特效。关键词:虚拟现实 三维建模 骨骼动画 Unity3D 1 引言虚拟现实技术创造了一个包括三维模型、三维声音和三维人物等资源逼真的虚拟世界,满足了人们的需求,让人们实现了梦想,体验了现实和常规情况下不能完成的事情。时至今日,虚拟现
3、实技术在游戏领域的应用越来越多。从最初的文字MUD游戏,到二维游戏,再到网络三维游戏,逼真度和沉浸感正在一步步地提高。并且,随着显卡性能的优化、CPU运算速率的提高和计算机内存的扩展,三维游戏已经成为虚拟现实技术应用的重要方向之一。本系统的目的就是应用虚拟现实技术的研究成果,通过基于Unity3D平台来展现篮球运动员的投篮练习。并且计划发布到手机平台,方便用户在休闲娱乐时使用。2 游戏总体架构2.1游戏架构系统通过游戏场景来展现球馆和人物,包括模拟真实的碰撞和碰撞发出的声音。场景中的主要物体有篮球馆、人物、篮球、地面、篮球架及相机。系统架构如图1所示。通过分析系统功能,可将系统分为:特效、声音
4、、数据、碰撞、控制和运动逻辑等6个模块。其中各个模块功能如下:特效:为了给用户强烈的视觉冲击,在菜单中为篮球加入粒子特效。而在场景中,为模拟真实的运动,因此不添加特效。声音:系统的背景音乐,物体之间碰撞的音效和音量的大小。数据:用来存储用户设定的有关游戏中声音和人物属性的数据。控制:对人物运动的控制,比如人物的走路、跑步、投篮、捡球等;对相机的控制,使相机能够始终以人物为中心点运动。碰撞检测:主要是篮球与地面、篮球架、篮球框之间的碰撞。对于不同材质的物体碰撞之后产生的效果应该是不同的。运动逻辑:人物的运动状态转换,比如从运球走到急停跳投、从跑到走、从运动状态到停下来弯腰捡球。运动状态之间应该有
5、过渡动画。图1 系统架构2.2开发平台开发平台选用的是MonoDevelop+ 3DSMAX + Unity3D+NGUI+ Soundbooth。主要工作流程是在3DS MAX中创建场景模型和人物模型,调试骨骼动画,绑定骨骼,并将模型和动画导入Unity3D中;在Unity3D中应用了粒子系统、物理系统、碰撞检测、声音控制等技术,用户通过键盘控制,实现人物投篮运动的模拟。为便于游戏控制交互,用户界面使用了NGUI技术,运用Soundbooth对声效进行了处理。整体实现了模拟了人物投篮的环境、动作,以及对投篮的时间结果的统计。3 游戏模型及动画的设计 系统首先需要创建3D篮球场馆和人物的建模。
6、本系统在3DSMAX中建立人物场景及调整骨骼动画,在Unity3D中实现游戏的控制、碰撞处理和物体的渲染。具体关系如图2所示。图2模型及动画架构3.1模型的创建3DSMAX创建模型的种类有网格模型、多边形模型和面片模型。此外3DSMAX自带网格修改器、多边形修改器等,可完善创建模型的效果。网格建模是3DSMAX中较为常用的建模方式之一,这种建模方法更容易掌握,也更易于控制。通过对网格模型的5中层次对象Vertex(节点)、Edge(边)、Face(面)和Element(元素)的编辑而达到预想的效果。多边形建模是以网格建模为基础,并进行改进后的一种建模方法。与网格建模的不同之处是网格建模中的面次
7、对象定义为三角面,而多边形建模将面定义为Polygon(多边形)。模型创建之后,赋予不同的材质贴图,得到最终效果。篮球馆模型效果如图3所示,人物模型效果如图4所示。图3 篮球馆效果图4 人物模型效果3.2骨骼动画的添加和调整3.3.1骨骼绑定人物模型在绑定的时候要摆成“大”字型。模型应该尽量位于场景中心位置,腿向两侧分开,与肩部宽度近似。两个手臂伸向两侧,高度不应该超过肩部,手部应与腕关节平行,手掌掌心面向下,手指分开。选择骨骼,通过缩放骨骼大小和骨骼角度的调整,使得骨骼的各个部分与人物网格模型的各个部位对齐。人物的骨骼绑定是通过为人物模型添加骨骼绑定相关的修改器来完成的。绑定方法有两种:一种
8、是physique绑定,另一种是skin绑定。physique绑定只能添加biped骨骼,绑定骨骼之后可以进行变肌、加腱等修改,能非常逼真的模拟出人物的肌肉线条。skin可以添加任意的bone,绑定之后通过调整bone对点的权重值、添加角度变形器来使得人物的肌肉表现的更真实。人物运动模型需要添加篮球的bone,因此选用skin方式对骨骼进行绑定。3.3.2骨骼动画3DSMAX中的biped骨骼系统可以模拟两足或多足动物的骨骼系统,并且可以使用相关修改工具做局部形态调整,比如手指个数,骨节,尾巴等。biped骨骼系统设定好的动画数据可以单独保存为*.bip或*.STP等动作格式。创建动画和调试动
9、画的过程中,使用WorkBench可以方便的调整某帧动作的x、y、z位置和旋转角度。WorkBench还可以对位置曲线、旋转角度曲线进行平滑等操作,方便动画的编辑。3DSMAX提供Motion Flow Mode 和 Mixer Mode两种方式来编辑多个动作文件。Motion Flow Mode可以对多个动作文件进行顺序编辑、循环编辑、共享编辑、随机编辑。Mixer Mode可以将多个动作文件的不同动作单元,在同一时段内分别指定给同一骨骼的不同骨节上。本系统在调节动画是,首先将闲置动作、走路动作、跑步动作、走路运球动作、跑步运球动作、弯腰捡球动作、投篮动作、扣篮动作、背后运球动作、换手动作等
10、一一调好,之后,编辑到一起。然后使用Motion Flow Mode将所有动画编辑为一个文件。4 游戏在引擎中的实现4.1游戏引擎的简单介绍Untiy3D 4.0编辑器界面可以分为Scene、Game、Hierarchy、Project、Inspector、Console等几个部分,Scene(场景)可以在Unity3D的3D世界中摆放物体,Game是相机真正渲染得到的效果显示,Hierarchy中包含了在Scene中所有物体的名称显示和层级管理,Project显示Unity3D工程的文件层级结构,Inspector中显示物体的详细信息,Console中显示调试信息。4.1.1声音Unity3
11、D中播放声音的组件有AudioListener、AudioSource。被播放的声音文件叫做AudioClip。声音文件被导入到Unity3D中的时候会自动进行压缩、解压缩处理。导入时还可以对声音进行设置,例如压缩方式、压缩率、是否为3D音效。如果Audioclip是3D音效,那么它播放时候的声音大小与监听器的位置有关系。AudioListener是播放声音的监听器,如果没有AudioListener,即时播放了audio,也没有声音。AudioSource是音源,可以指定一个要播放的audioClip。用AudioSource来控制audio的播放、暂停、停止、音量、播放速度等。4.1.2粒
12、子特效Unity3D中将2D的贴图在3D世界中渲染出来来,可以实现例如烟雾、火焰、水流、爆炸等特效。粒子特效系统由三部分组件共同完成:Particle Emitter、Particle Animator、Particle Render。Particle Emitter组件实现了在球体内生成粒子,可以修改产生的缩放比例、速率等。Particle Animator组件可以控制粒子播放时的颜色变化、旋转速度的变化、喷射速度的变化、力的变化和粒子消失的延迟时间等。Particle Render组件实现了粒子在被渲染时的材质、大小、路径的渲染。4.2游戏资源处理4.2.1模型导入将3DSMAX导出的.F
13、BX模型导入到Unity3D的时候,可以设置模型导入的参数。如设置模型的比例、压缩、模型的UV展开图和材质的命名等。Unity3D中的游戏物体叫做GameObject,导入模型的每个物体都是一个GameObject。GameObject都有Transform,可以对它的Position、Rotation、Scale进行调整。4.2.2切割动画带动画的物体可以通过Unity3D自带的动画切割器将一个Animation分割成多个AnimationClip。根据动画所在的帧数,将各个单一的动画从整体中分割出来。4.2.3添加物体碰撞人物若想在球馆内走动而不掉到世界中去,必须对球馆地面添加碰撞。初始导
14、入的模型是不带碰撞的。在球馆中,需要添加碰撞的有地面、墙壁、篮球架、篮板、篮筐等。Unity3D中提供了多种多样的碰撞器,如box collider,sphere collider,capsule collider,wheel collider,mesh collider等。对于规则形状的物体,可添加相应的collider,通过调整collider的大小来匹配物体。对于形状不规则的物体,可以添加mesh collider,随物体的表面添加碰撞。4.2.4添加物理材质篮球在与地面碰撞、篮板碰撞的时候,由于其不同的物理材质而产生的碰撞效果是不同的。在Unity3D中可以创建物理材质,让物体拥有不同
15、的物理特性。Unity3D中物理材质的属性主要有动摩擦因素、静摩擦因素、弹性、摩擦力方式、弹力方式、力在方向上的设定等。根据实际情况,创建不同材质。4.3游戏菜单的设计及实现4.3.1菜单整体流程进入游戏之后,首先展示Splash(屏闪)界面,之后进入菜单选项。菜单结构如图5所示。图5菜单结构图4.3.2 Splash屏闪通常用来展示公司logo,或者制作团队的logo,通常只有几秒。一方面来给系统加载资源做准备,另一方面可以使得用户快速了解系统的特征。另外,Splash界面还可以为用户提供一个瞬间接收大量信息的缓冲。Splash在用户无意识的情况下提供给用户系统的整体信息,使获取对系统的第一
16、印象。而用户对系统的第一印象的好坏直接影响到了用户对系统的兴趣、依赖程度。本系统特色之一就是用3D世界来展示篮球运动员的投篮练习。Splash一开始以2D图像出现,再渐渐变成3D图像,使得用户眼前一亮,并且在最后将本系统的最大特色篮球弹跳显示出来,展示系统的整体特色。4.3.3菜单菜单的设计应当尽量简洁,少用文字,多用图片,让用户能够清楚的明白、找到每一个功能。为了避免菜单静态单一的出现,系统菜单选用了2D加3D的方式显示。2D菜单的制作运用了NGUI插件。NGUI插件用三维的方式渲染出二维平面的效果。NGUI提供了创建label、button、sprite等多种控件,方便的菜单的实现。菜单中
17、3D部分展示了player的各种动作。4.3.4设置功能在系统设置中可以改变背景音乐的音量和游戏中音效的的音量。4.4游戏场景的设计及实现游戏中除了物理碰撞之外,主要的部分为篮筐、篮球、声音,代码组件为篮球管理器、篮球、篮筐和声音等。在场景中的所有篮球都需要到篮球管理器中注册一下。当player处于无球状态是,篮球管理器负责为player找到离他最近的篮球。判断离player最近的球的方法是遍历注册表中的球的位置。篮球组件的主要作用是根据player的投篮方式、出手力度、角度来进行相应的位置改变。在这里,篮球组件用篮球初始的水平初速度和垂直初速度来更准确的表现出手力度。当前的投篮方式分为跳投、
18、上篮、扣篮、快速投篮四种方式。对于跳投、上篮、快速投篮,篮球都是在player出手后做瞄准篮筐的抛物线运行。抛物线的形成是由player出手的位置和篮筐的位置决定的,对于扣篮则出手时对篮球施加一个朝向目标的力。篮筐主要用来判断是否进球,并且通知UI得分的变化情况。篮筐本质是一个触发器,当篮球触发之后,来计算累计的分数,并通知UI当前的分数。当进球时要播放篮球进球是声音。4.5人物控制的实现整体设计结构,将人物状态分为none,idle,walk,run,shot,crouch,通过这几种状态的变化来控制人物当前应该做什么。人物在状态切换的时候,会有不同的过渡动画。所以对于每一种状态,都有对应此
19、种状态的不同动画播放。对于投篮,不同的投篮方式需要有不同的准备条件,扣篮需要在篮筐下才能进行,上篮需要距离篮筐有一定的距离。若不满足相应的条件,则需要自动调整。为了增加游戏的趣味性和互动性,玩家可以通过按投篮键的时间长短来控制投篮的力度和出手速度。若按键时间超过一定程度,投篮会自动运行。对于投篮方式的判断,当人物在不同的情况下按投篮键的时候,根据当前的运动速度、离篮筐的距离来判断应该用什么方式投篮。投篮方式与投篮条件:1)扣篮条件:速度:跑动速度距篮筐距离:小于3扣篮弹跳高度:大于1.52)上篮条件:速度:走动速度或者跑动速度距篮筐距离:58扣篮弹跳高度:无影响3)快速投篮条件:速度:走动速度
20、或者跑动速度距篮筐距离:无限制扣篮弹跳高度:无影响4)跳投条件:速度:无影响距篮筐距离:大于5扣篮弹跳高度:无影响根据上述投篮条件的分析,用一个int值的4个字节来记录当前状态,4位表示一个信息。每4位的顺序如表1所示。表1 int字节中每4位的顺序表765432107:跑动速度状态6:走动速度状态5:无速度4:距离小于33:距离582:距离大于81:距离大于三分线距离0:弹跳高度是否大于1.5所以,扣篮条件:0x10010001上篮条件:0x11001001快速投篮条件:0x11011111跳投条件:0x11101111根据优先级从高到底依次为扣篮、上篮、抛投、跳投来判断投篮方式。5 游戏实
21、现效果整个系统根据以上的设计结构、设计方法完成。首先是屏闪界面如图6所示,接着是菜单界面如图7所示。在菜单界面可以选择开始游戏、设置人物属性、设置系统属性和退出系统。点击“Start”开始游戏,进入游戏场景。游戏场景包括2D菜单、3D场景和人物。其中2D菜单中包括人物投篮的得分、人物投篮的力量条、游戏运行的时间。游戏场景效果如图1013所示。点击“PlayerSettings”,进入人物属性设置,可以修改人物的投篮能力、弹跳能力、力量和速度,如图8所示。点击“SystemSettings”,进入系统设置,可以设置系统的背景音乐音量和游戏中声音的音量。如图9所示。点击“Exit”,可以退出系统。
22、图6 splash效果图图7 菜单效果图图8 人物属性设置界面图9系统设置界面图10 扣篮图11 上篮图12 跳投图13快速投篮参考文献1白英伯编著.3dsmax专业动画教程 角色篇.高等教育出版社.2004.12宣雨凇编著.Unity3D游戏开发.人民邮电出版社.2012.6.13英萨默维尔著,程成等译.软件工程.机械工业出版社.2011.5.1 4孟祥旭主编.人机交互基础教程(第2版).清华大学出版社.2010.7.1 5vrp3d.虚拟现实的研究现状与研究方向 .中视典数字科技. 6孙家广编著.计算机图形学(第3版).清华大学出版社.1998.9.17刘畅主编.篮球教程.北京理工大学出版社.2011.7.18高嵬,刘树老编著.室内设计.东华大学出版社.2011.1.19程杰著.大话设计模式.清华大学出版社.2007.12.110Christer Ericson著,刘天慧译.实时碰撞检测算法技术.清华大学出版社.2010.6.114