唐亚辉,赵宏林,常迎春
(1.中国石油大学(北京)机械工程学院,北京 102249;2.河北工业大学计算机科学与技术学院,天津 300401)
时至今日,虚拟现实技术在游戏领域的应用越来越多。从最初的文字MUD 游戏,到二维游戏,再到网络三维游戏,逼真度和沉浸感正在一步步提高[1]。虚拟现实技术创造了一个包括三维模型、三维声音和三维人物等资源逼真的虚拟世界[2]。Oculus 在2012年的“电子娱乐博览会”上首次展出了搭载虚拟现实技术的Rift 头戴式显示器。随后索尼在美国游戏开发者大会上发布Project Morpheus。这些都标志着在游戏领域虚拟现实技术的飞速发展。
目前,国内还没有应用虚拟现实技术设计的投篮动漫游戏。本文基于虚拟现实理论,以Unity3D 为开发平台,通过3DS Max 进行三维建模,开发出一款全新的三维投篮游戏,为虚拟现实技术及Unity3D 和3DS Max 等软件的应用提供可靠的实例参考。
模拟篮球运动员投篮游戏中,需建立篮球馆场景和人物模型,实现用键盘控制人物在场景中做走、跑、跳和投篮等动作,并且添加音乐和特效处理。
系统通过游戏场景来展现球馆和人物,包括模拟真实的碰撞和碰撞发出的声音。场景中的主要物体有篮球馆、人物、篮球、地面、篮球架及相机。系统架构如图1 所示。
图1 系统架构图
通过分析系统功能,可将系统分为:特效、声音、数据、碰撞、控制和运动逻辑等6 个模块。
1)特效:为了给用户强烈的视觉冲击,在菜单中为篮球加入粒子特效[3-4]。
2)声音:系统的背景音乐,物体之间碰撞的音效和音量的大小。
3)数据:用来存储用户设定的有关游戏中声音和人物属性的数据。
4)控制:对人物运动的控制,比如走、跑步、投篮、捡球等;对相机的控制,使相机能够始终以人物为中心点运动。
5)碰撞检测[5]:主要是篮球与地面、篮球架、篮球框之间的碰撞。对于不同材质的物体碰撞之后产生的效果应该是不同的[6]。
6)运动逻辑:人物的运动状态转换,比如从运球走到急停跳投、从跑到走、从运动到捡球等。运动状态之间应该有过渡动画。
图2 模型及动画架构
实现3D 篮球游戏的关键是人物和3D 场景的建立。特别是人物骨骼动画的调试,它将直接影响到玩家的真实性体验。本系统在3DS Max 中建立人物场景及调整骨骼动画[7-8],在Unity3D 中实现游戏的控制、碰撞处理和物体的渲染[9]。具体关系如图2 所示。
3DS Max 创建模型的种类有网格模型、多边形模型和面片模型[10]。此外3DS Max 自带网格修改器、多边形修改器等,可完善创建模型的效果[11]。
2.1.1 球馆的创建
使用3DS Max 中wall 类型添加3DS Max 模型库中的Windows 模型和door 模型,效果如图3 所示。
图3 墙壁及门窗初始效果
篮球场地按国际篮联标准,长28 m,宽15 m,场地上的线的宽度为0.05 m[11]。液压篮球架模型的尺寸标准为,底座尺寸2.2 m ×1.2 m,臂展3.25 m,篮筐距地面3.05 m[12],效果如图4 所示。为了使得球馆整体更为真实,在场馆内添加了吊灯、椅子[13]。最终室内效果如图5 所示。
图4 篮球架效果图
图5 篮球馆效果图
2.1.2 人物的创建
人物的建模分为对头部的建模和身体的建模,两者都采用多边形建模方法。最终人物的整体模型效果如图6 所示。
图6 模型正视图
在模型处理后期,为模型添加平滑组,这样可以增加模型的光滑度。结果如图7 所示。之后将模型的UV 坐标图导出到Photoshop 软件中,作为绘制贴图的模板[14]。添加贴图之后的人物模型如图8 所示。
图7 平滑模型图
图8 人物正视图
2.1.3 材质贴图的使用
现实环境中的物体表面具有丰富的纹理效果,3DS Max 中也需为材质赋予某种图像,即贴图[15]。通过添加uvmaping 修改器给篮球模型添加了贴图。模型效果如图9 所示。
图9 带贴图的篮球
导出模型主要考虑3 个方面:坐标轴、比例和贴图。人物导出时需要勾选动画[16]。
当前人物模型与骨骼动画是分开的。人物的骨骼绑定是通过为人物模型添加骨骼绑定相关的修改器来完成的。作为3D 单人篮球系统,需要创建的动作有闲置动作、跑步运球动作、投篮动作、扣篮动作等。3DS Max 提供Motion Flow Mode 和Mixer Mode 两种方式来编辑多个动作文件。Motion Flow Mode 可以对多个动作文件进行顺序编辑、循环编辑、共享编辑、随机编辑。Mixer Mode 可以将多个动作文件的不同动作单元,在同一时段内分别指定给同一骨骼的不同骨节上。
进入游戏之后,首先展示Splash 界面,之后进入菜单选项。菜单结构如图10 所示。
图10 菜单结构图
1)菜单的介绍。
菜单的设计应当尽量简洁,让用户能够快速找到每一个功能。为了避免菜单静态单一的出现,系统菜单选用了2D 加3D 的方式显示。2D 菜单的制作运用了NGUI 插件。3D 部分展示了Player 的各种动作。菜单效果如图11 所示。
图11 菜单效果图
2)菜单的实现。
①相机:Unity 中的相机为用户展示了游戏世界。相机的投射方式有2 种,一种是Perspective,另一种是Orthographic。Perspective 方式相机投射成放射线型,用三维的方式展现游戏物体;Orthographic 方式相机以平面的方式展示游戏物体[17]。
②控制:给每个按钮添加控制组件来实现场景的切换。
游戏中除了物理碰撞之外,主要的部分为篮筐、篮球、player,代码组件为篮球管理器、篮球、篮筐、player 等。
篮球组件的主要作用是根据player 的投篮方式、出手力度和角度来进行相应的位置改变。当前的投篮方式分为跳投、上篮、快速投篮和扣篮4 种方式。由篮球的出手距离又可以将篮球分为2 分球和3 分球2 种类型,得分类型设置代码如图12 所示。
图12 篮球得分设置代码图
篮筐主要用来判断是否进球,并且通知UI 得分的变化情况。当进球时要播放篮球进球声音。篮筐触发代码如图13 所示。
图13 篮筐触发代码
player 组件是游戏的核心组件,通过将动画与位置移动的结合,用半自动的方式来执行游戏逻辑。player 状态分为none、idle、walk、run、shot 和crouch,通过这几种状态的变化控制人物当前的动作。
图14 为游戏运行时的整体效果图,玩家可以在自定的时间里通过跳投、上篮和扣篮得分,充分体验篮球运动的乐趣。
图14 游戏整体效果图
本文基于Unity3D 平台对三维篮球动漫进行了设计。通过3DS Max 创建篮球运动员和篮球场馆环境,综合了引擎的物理系统、粒子系统和声音系统等使该游戏得以实现。系统中使用NGUI 插件制作系统界面的显示功能来展现游戏的当前状态;使用Adobe Soundbooth CS4 处理篮球声音的剪辑,实现了对篮球运动员投篮练习的环境、动作的模拟;使用计分、计时系统,实现了对玩家当时的得分和游戏时长的记录,给用户带来视觉、听觉兼备的篮球运动体验。
[1]沈建虎,冯文博.论虚拟现实技术在三维游戏中的应用[J].中小企业管理与科技(下旬刊),2012(3):271-273.
[2]苏建明,张续红,胡庆夕.展望虚拟现实技术[J].计算机仿真,2004,21(1):18-21.
[3]董诚辰.基于GPU 的火焰特效技术研究[D].哈尔滨:哈尔滨工程大学,2012.
[4]华泽玺,王迎春,孙建顺.基于粒子系统的爆炸效果仿真研究[J].计算机科学,2012,39(4):278-281.
[5]范昭炜,万华根,高曙明.基于流的实时碰撞检测算法[J].软件学报,2004,15(10):1505-1514.
[6]Christer Ericson.实时碰撞检测算法技术[M].刘天慧译.北京:清华大学出版社,2010:1-13.
[7]白英伯.3DS Max 专业动画教程(角色篇)[M].北京:高等教育出版社,2004:2-18.
[8]翟旭峰,朱杰杰,潘志庚.3DS Max 建模及其在虚拟现实中的应用[J].计算机仿真,2004,21(4):94-97.
[9]宣雨凇.Unity3D 游戏开发[M].北京:人民邮电出版社,2012:210-233.
[10]张云苑.虚拟现实技术3DS Max 建模的应用[J].电脑知识与技术,2006(8):189-190.
[11]陈建华.基于3DS Max 的虚拟现实建模技术[J].漳州师范学院学报(自然科学版),2002,15(3):18-22.
[12]刘畅.篮球教程[M].北京:北京理工大学出版社,2011:112-165.
[13]高嵬,刘树老.室内设计[M].上海:东华大学出版社,2011:233-245.
[14]孙家广.计算机图形学(第3 版)[M].北京:清华大学出版社,1998.
[15]吴业红.基于3DS Max 材质与贴图技术的教学探讨[J].电脑知识与技术,2009,5(36):103,112.
[16]程杰.大话设计模式[M].北京:清华大学出版社,2007:5-65.
[17]张明明.基于Unity3D 虚拟校园漫游的研究与实现[D].昆明:云南大学,2014.