参赛选题数字媒体技术类软件_第1页
参赛选题数字媒体技术类软件_第2页
参赛选题数字媒体技术类软件_第3页
参赛选题数字媒体技术类软件_第4页
参赛选题数字媒体技术类软件_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、参赛选题:数字媒体技术类软件AR互动引擎软件设计文档 作者: 范修盛 钟华庭 辛枫璘 2011年9月18日目录第一章引言31.1项目介绍31.2项目背景31.3 项目创新点31.4 文档出现术语解释3第二章需求分析42.1 功能需求42.1.1总体功能需求42.1.2 详细功能需求42.2 运行环境5第三章 总体设计63.1 项目总体结构63.2 处理流程设计7第四章 详细设计74.1 主要数据设计结构84.1.1引擎核心模块84.1.2 AR交互模块104.1.3 各模块构成114.2 关键与技术难点的实现12第五章 使用说明145.1安装与初始化145.2 软件主要功能使用说明14第一章

2、引言1.1 项目介绍本项目作为一个3D游戏引擎,注重的是在游戏的方法上的创新与进行游戏的易上手性和游戏外接设备的减少上;使用摄像头进行对自定义特征卡片的位置信息捕捉转换成3D游戏角色的同步动作,进而进行游戏。1.2 项目背景 项目研究课题在国外有类似的研究项目,目前已知的应用为某国外电商利用其来进行对要进行快递的物品先打印成卡片,在进行摄像头捕捉卡片图案后,在背景中生成商品的虚拟化,以让消费者对商品的大小有一个直观的感受;国内目前据我们已知可能有类似的项目存在,但正式的产品研究和实现还未出现。1.3 项目创新点该项目与目前已存在的体感游戏项目最大的不同是,程序不需要依赖高昂的外设,即可体验体感

3、游戏的乐趣。而与当前的AR项目相比,更加具有娱乐性,并且程序结构相比ARToolkit更加灵活,可以将引擎框架应用到除游戏以外应用程序领域。在游戏性方面,引擎将AR(现实增强)理念融入游戏当中,使其不仅仅在目前的一些商业中应用,如上文说到的电商使用其来使消费者了解商品的真实大小。1.4 文档出现术语解释AR:Augmented Reality,意指通过将虚拟的信息应用到真实世界,真实的环境和虚拟的物体实时地叠加到了同一个画面或空间同时存在。第二章 需求分析2.1 功能需求2.1.1总体功能需求游戏应用程序开发在不断的发展,无论是从技术上还是,游戏形式规则上都有许多突破和创新。受AR技术及3D游

4、戏引擎技术的启发,该项目将传统的3D引擎技术与AR技术结合,使引擎不仅要具备了一些3D游戏引擎功能,如:场景渲染、光影效果、动画、物理系统、碰撞检测、I/O等,还引入现实增强技术AR交互功能,改进游戏控制方式,实现带有体感游戏操控方式增强用户体验。本项目主要由3D基础引擎及AR交互处理两大模块构成。2.1.2 详细功能需求3D基础引擎 3D基础引擎是用于控制所有游戏功能的主程序,其功能包含渲染器、3D效果、载入角色模型、实现动画、物理模拟、粒子效果,还包括声音处理,接受响应玩家的键盘鼠标输入。(1)渲染器:实现场景,人物模型及GUI界面图像数据可视化,能够在屏幕上看到二维及三维的图像界面,并保

5、证图像界面不会出现闪烁,断层等显示问题。a.场景渲染:实现计算生成三维立体游戏场景,增强视觉效果,并可添加更多的游戏元素。 b.光照效果:实现不同的灯光顶点着色以及照明映射产生不同的照明效果,增强游戏真实感。 c.雾效果:让远处的世界淡出视野,仿佛体验真实的场景。 d.着色:能对场景进行着色,增强场景渲染效果逼真程度。 e.纹理:在不同的显示场景中使用不同的纹理进行渲染,使其有美化的效果。 f.阴影效果:增强纹理模糊,炮火烟雾效果,角色模型效果逼真,并生成物体相应的影子,使其看起来更加形象生动。(3)角色模型与动画:实现角色模型骨骼模型和骨骼动画生成,使游戏人物更具真实感。(4)物理模拟、粒子

6、效果:游戏中的模型进行物理动力学模拟和粒子爆炸渲染实现。(5)声音处理:读取声音文件,按照指定的音量播放声音文件,配合游戏进展增强游戏声感音控。(6)碰撞检测:实现游戏角色和静态场景的碰撞、和怪物、NPC的碰撞检测,使游戏进程具有一定的物理真实感觉。(7)I/O管理:接受和管理用户的各种游戏操作,包括在键盘操作和摄像头捕捉动作之间进行切换。AR交互处理 AR交互技术主要是通过摄像头捕捉图像,利用图像处理算法对图像信息进行特征分析获取目标卡片的模拟3D坐标数据信息,通过算法处理,使卡片跟游戏角色的动作(包括移动,技能释放)关联起来实现卡片操控交互。(1)摄像图像捕捉:实现摄像头捕捉图像数据,并提

7、供引擎使用。(2)特征图像识别:摄像头对捕捉到的图像进行数据扫描,可进行卡片特征检测识别。(3)动作数据检测:实现对检测到的卡片数据进行逻辑分析,可根据不用的坐标变化产生不同的动作数据。(4)卡片操控交互:实现检测分析到的动作数据与游戏角色动作关联,并可进行卡片操控游戏角色的体感交互。2.2 运行环境操作系统版本要求在Windows XP及更高版本;操作系统装有附件中的glut32.dll、DSVL.dll和artoolkit dll依赖组件;操作系统装有vs2010运行环境插件。 第三章 总体设计3.1 项目总体结构本项目的3D引擎框架主要采用了CPU高分辨率计时器的作为帧速控制,帧速锁定在

8、60帧/S,在运行线程设计方面,由于摄像头设备读取分析图像的帧速在30帧以下,因此必须自建线程将摄像头及处理图像的流程分离,保证3D画面渲染时不受影响,以下是引擎各个模块划分及线程之间的包含关系: 黑框代表模块划分 蓝框代表线程归属模块划分及线程关系引擎基础模块主线程数据更新模块场景数据更新游戏角色及怪物数据更新GUI数据更新MFC线程鼠标输入模块键盘输入模块音效输出模块AR互动模块子线程摄像头输入模块摄像图片数据分析同步图像渲染模块场景渲染游戏角色及怪物渲染染GUI渲染实际项目文件模块:3.2 处理流程设计此流程图给出以上几个模块在程序里面的简要流程图:摄像头捕获图像同步获取坐标数据分析图像

9、数据启动引擎加载资源帧速限制锁退出引擎释放资源更新输入数据渲染GUI界面渲染场景渲染角色与怪物模型更新GUI数据更新模型数据更新场景数据第四章 详细设计4.1 主要数据设计结构整个项目程序的模块细分如下图,引擎的基本模块设计参照教材Opengl游戏设计,由于模块较多,根据第三章的项目总体模块图,以下将引擎几个主要部分C+类的,及算法设计列出4.1.1引擎核心模块启动引擎(WinMain- CoreEngine.run)关闭引擎(CoreEngine.close)流程图渲染场景(CoreEngine.Render)更新数据(CoreEngine.Prepare)初始化数据(CoreEngine.

10、initObject)类及关键函数/*! 引擎核心类*/class CoreEnginepublic:BOOL Init(void);/初始化私有类,装入ini配置文件void SetProjection(int iFOVAngle,int iHeight);/ 设置投射矩阵void Prepare(void);/ 渲染前的数据更新准备void Render(void);/ 3D渲染void SwapBuffer(void):SwapBuffers(m_hDC);/ 交换图像缓冲void Close(void);/ 关闭引擎private:BOOL InitObject(void);/ 游戏中

11、得实例对象的初始化BOOL SetDCPixelFormat(void);/ 设置opengl像素格式HDCm_hDC;/ 设备句柄HGLRCm_hRC;/ 渲染句柄HZFont*m_pFont; / 字体EGInput*m_pInput;/ 输入管理,键盘鼠标EGTimer*m_pTimer;/ 高精度计时器EGCameracamera;/ 3D场景摄像机(非usb摄像头)EGMusicm_cMusic;/ 背景音乐SceneMgrm_cSceneMgr;/ 场景管理GUIMgrm_cGUIMgr;/ 界面管理Messagem_cMessage;/ 消息处理VisionMgrvisionMg

12、r; / 视频处理;/*! 游戏引擎中各个实例对象的初始化,读取各模块的ini配置初始化渲染窗口,输入法等 */BOOL CoreEngine:InitObject(void)m_pTimer = new EGTimer;/ 计时器初始化m_pTimer-Init();m_pInput=new EGInput; / 输入法初始化m_pInput-Init(SYS_HWND,(HINSTANCE)GetModuleHandle(NULL),true,IS_USEKEYBOARD|IS_USEMOUSE);EGSound:InitDirectSound(SYS_HWND); /声音初始化EGMus

13、ic:InitMusic();m_cMusic.LoadMusic(sound/title.mid);m_cGUIMgr.LoadCurIni(inicursor.ini,normal);if(!m_cSceneMgr.Init()return FALSE;m_cMessage.Clear();visionMgr.init();/AR视觉管理类初始化return TRUE;/*! 渲染前各个模块的数据更新 */void CoreEngine:Prepare(void)m_pTimer-Update();m_pInput-Update();SYS_MOAL-analyse();/通过分析摄像头分

14、析图像得到的卡片动作含义m_cMessage.Run();glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT);/*! 3D渲染 */void CoreEngine:Render(void)/3D场景,粒子效果及游戏模型渲染/glEnable(GL_DEPTH_TEST);if(SceneMgr:GetSysSceneMgr()-GetScene()=SCE_OPENAIR)camera.Update();m_cSceneM

15、gr.Render();/锁定帧速/m_pTimer-LockFPS(LOCKFPS);/2D界面绘制/glDisable(GL_DEPTH_TEST);m_cGUIMgr.Render();4.1.2 AR交互模块此管理模块负责摄像头及AR动作分析AR引擎的关键部分,此外其他模块管理类设计类似,注:Mgr后缀的为模块中的管理类,一般包含当前模块的重要成员对象.类及关键函数/*AR交互管理类*/class ARMgrpublic:void setCameraState(BOOL state)cameState = state; /* 设置摄像头状态*/BOOL getCameraState()

16、return cameState;/* 获取摄像头状态 */void init();/* 根据配置初始化摄像头,并启动摄像头获取图像线程 */static ARMgr * GetSysARMgr()return m_pARMgr; /* 返回当前AR管理模块类的实例 */* 返回摄像头图像捕捉类的实例 */VideoCapture * GetVideoCapture()return m_pVideoCapture;/* 返回摄像头图像分析类的实例 */MotionAnalysis * GetMotionAnalysis()return m_pMotionAnalysis;private:BOO

17、L cameState;static ARMgr * m_pARMgr;MotionAnalysis * m_pMotionAnalysis; / 图像分析类指针VideoCapture * m_pVideoCapture;/ 图像捕捉类指针HANDLE visionMgrThread;/图像捕捉及数据分析线程static void runFun(ARMgr vm);/运行线程的内部模块静态函数;4.1.3 各模块构成4.2 关键与技术难点的实现(1) 整体引擎基础框架设计游戏引擎是用于控制所有游戏功能的主程序,从计算碰撞、物理系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音

18、等等。在引擎设计中要使代码具有可重用性,必须对各个模块进行合理细分,虽然网上有不少参考学习资料,但是都是比较零散,没有经过工程化组织,c+游戏引擎设计对于刚刚学习接触Opengl图像处理,刚刚从Java转向C+开发的程序员也是不小的挑战。(2) 3D渲染帧与摄像头采集帧同步在AR技术中摄像头设备是程序的关键所在,但是目前摄像头设备的帧速普遍在30帧每秒以上,而引擎的一般渲染帧数在60以上。因此,如果直接将摄像头的像素数据引入到引擎程序里面渲染,在不同的GPU上运行程序,图像会出现断裂或者闪烁问题.一旦图像出现闪烁,说明分析及渲染时摄像头采集的图像帧数据还未完整,此时对图像信息进行AR辨识检测,

19、几乎是不可能得到结果的,因此只有为图像识别处理部分的线程添加同步处理方能解决这个问题。(3) 3D渲染帧速稳定问题在初版的引擎中,由于线程使用不当导致渲染速度比较慢,后来经过代码分析后才知道原来是声音播放模块放到主线程中,导致每帧渲染时间过长,帧速不稳定在20到100帧之间,画面有时出现迟滞感,后来改用D3D音频库,增加线程后帧速提升到200多帧/秒,又出现人物,动画渲染移动过快等问题,最后改进计时器加上锁帧函数,画面才稳定下来。/*锁定帧率实现代码 */float EGTimer:LockFPS(unsigned char targetFPS)if (targetFPS m_startTim

20、e;LARGE_INTEGER currentTime;QueryPerformanceCounter(¤tTime);float fps = m_pTimer-GetFPS();/ 如果渲染速度过快,适当增加延时,确保渲染画面稳定在targetFPS帧左右while (fps (float)targetFPS)Sleep(1);QueryPerformanceCounter(¤tTime);Fps = (float)m_pTimer-m_ticksPerSecond.QuadPart/(float)(currentTime.QuadPart-s_lastTime.QuadPart);/ 重置计时器s_lastTime = currentTime;return fps;(4) AR坐标解析在AR检测中,程序能获取到卡片的三维坐标数据信息,然而对于本项目引擎的需求来说还是远远不够的,只有对获取的卡片三维坐标信息进行合理分析,才能使其真正应用到引擎的输入设备上.项目一开始我们采用基于帧的数据分析,控制游戏将会变的很不稳定,不可靠,卡片向左,人物不一定跟着向左,有时是向右,有时向上,后来使

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论