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

下载本文档

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

文档简介

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

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

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

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

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

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

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

8、备读取分析图像的帧速 在30帧以下,因此必须自建线程将摄像头及处理图像的流程别离,保证3D画面渲染时不受影响,以下是引擎各个模块划分及线程之间的包含关系:匚|黑框代表模块划分 蓝框代表线程归属模块划分及线程关系AR互动模块引擎根底模块MFC线程子线程键盘输入模块鼠标输入模块音效输出模块摄像头输入模块数据更新模块场景数据更新游戏角色及怪物数据更新GUI数据更新主线程摄像图片数据分析图像渲染模块场景渲染游戏角色及怪物渲染GUI渲染实际工程文件模块:j 用 Engine.lJ GU】界面管理模块 -用槪 肛i外部依皈项卜l_J近件口对象苣理檯块>_J港慝管理槿览:U游述场昱聊 o 源文件LJ

9、粒子?口資源琶理檯块 Lj琢入冢统模块戟眾妙3.2处理流程设计此流程图给出以上几个模块在程序里面的简要流程图:启动引擎加载资源摄像头捕获图像*帧速限制锁分析图像数据>更新输入数据更新模型数据更新场景数据更新GUI数据同步获取坐标数据F1r1渲染场景渲染角色与怪物模型渲染GUI界面退出引擎释放资源第四章详细设计4.1主要数据设计结构整个工程程序的模块细分如下列图,引擎的根本模块设计参照教材?Ope ngl游戏设计?,由于模块较多,根据第三章的工程总体模块图,以下将引擎几个主 要局部C+啖的,及算法设计列出引擎核心模块流程图类及关键函数/*!引擎核心类*/class CoreEnginepu

10、blic :BOOL Init( void );/初始化私有类,装入ini配置文件void SetProjection( intiFOVAngle, int iHeight); / 设置投射矩阵void Prepare( void);/渲染前的数据更新准备void Render( void );/ 3D渲染void SwapBuffer( void ):SwapBuffers(m_hDC); / 交换图像缓冲void Close( void );/关闭引擎private :BOOL InitObject( void );/游戏中得实例对象的初始化BOOL SetDCPixelFormat( v

11、oid );/设置ope ngl像素格式HDCm_hDC;/设备句柄HGLRCm_hRC;/渲染句柄HZFo nt*m_pF ont;/字体EGI nput*m_pln put;/输入管理,键盘鼠标EGTimer*m_pTimer;/高精度计时器EGCameracamera;/ 3D场景摄像机非usb摄像头EGMusicm_cMusic;/冃景曰乐Seen eMgr m_cSce neMgr;/场景管理GUIMgrm_cGUIMgr;/界面管理Messagem_cMessage;/消息处理Visio nMgrvisio nMgr;/视频处理;/*!游戏引擎中各个实例对象的初始化,读取各模块的i

12、ni配置初始化渲染窗口,输入法等*/BOOL CoreEngine:lnitObject(void )m_pTimer = newEGTimer;/ 计时器初始化m_pTimer-> In it();m_p In put= new EGI nput; / 输入法初始化m_pInput->lnit(SYS_HWND,(HINSTANCE)GetModuleHandle(NULL), true ,IS_USEKEYBOARD|IS_USE MOUSE);EGSound:lnitDirectSound(SYS_HWND); / 声音初始化EGMusic:I ni tMusic();m_c

13、Music.LoadMusic( "sound/title.mid" );m_cGUIMgr.LoadCurlni( "iniWcursor.ini", "normal");if (!m_cSceneMgr.lnit()return FALSE;m_cMessage.Clear();visio nMgr.i ni t();/AR视觉管理类初始化return TRUE;/*!渲染前各个模块的数据更新*/void CoreEngine:Prepare(void )m_pTimer->Update();m_pl nput->Up

14、date();SYS_MOAL->analyse(); /通过分析摄像头分析图像得到的卡片动作含义m_cMessage.Ru n();glPolygo nM ode(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场景,粒子效果及游戏模型渲染 /glE nable(GL_DEPTH_TEST);if (SceneMgr:GetSysSceneMgr()

15、->GetScene()=SCE_OPENAIR)camera.Update(); m_cSce neMgr.Re nder();/锁定帧速 /m_pTimer->LockFPS(LOCKFPS);/2D界面绘制 /glDisable(GL_DEPTH_TEST);m_cGUIMgr.Re nder();4.1.2 AR交互模块此管理模块负责摄像头及AR动作分析AR引擎的关键局部,此外其他模块管 理类设计类似,注:Mgr后缀的为模块中的管理类,一般包含当前模块的重要成 员对象类及关键函数/*AR交互管理类*/ class ARMgr public :void setCameraSt

16、ate(BOOL state) cameState = state; /*设置摄像头状态 */BOOL getCameraState() return cameState; /* 获取摄像头状态 */void init();/*根据配置初始化摄像头,并启动摄像头获取图像线程*/static ARMgr * GetSysARMgr() return m_pARMgr; /*返回当前 AF管理模块类的实例 */*返回摄像头图像捕捉类的实例 */VideoCapture * GetVideoCapture()/*返回摄像头图像分析类的实例 */MotionA nalysis * GetMotionA

17、 nalysis() private :BOOL cameState;static ARMgr * m_pARMgr;Moti onAn alysis * m_pMoti onAn alysis; VideoCapture * m_pVideoCapture; HANDLE visio nM grThread;static void runFun(ARMgr vm);return m_pVideoCapture;return m_pMotio nAn alysis;/图像分析类指针/图像捕捉类指针/图像捕捉及数据分析线程/运行线程的内部模块静态函数CanHera-hFont.hFpntEina

18、r>h generdl.h TniFile.h mathlJb.h striictdefhTirrter.h空| Font.cpp巴 FontErnarypp 也 lniFile.cpp 巳 mathlib.cpp巧 Timer.cpp D头文件4.1.3 各模块构成-q GUI界血昔理桓块 "N近件Anitnat&.h Button.h CheckBox,h Dialog.h Edith GUlMgr.h Li stView.h MapView.h ProgressBach Scroll Bar.h VidbnView.h Window.hJ 口舷件也 Animate

19、.cpp 空;Buttonxpp 也 CheckBox.cpp 也 Dialog.cpp 好 Edit.cpp 站 GUlMgrcpp 也 ListViewxpp Cj MapViewxpp 也 ProgressBarxpf 也 ScrollBar.cpp 也 VisionView.cpp 色| Window.中p亠无彙首淫擾埃同 Active Obj.h 屮*| Infc.hnj MonsternhiZ MontersMgr.hZ ObjectE Pl a nth间 PlantMgr.h同 Rolle.hn StaticObj.h 可 StaticObjMgrnh鼻二消息K理模块艺 Meag

20、e.cpp川 Message.h* 一員模块£ D住件n AVIScene,h M I Scene, h M OpenAirScene.h M RocrnSceneHh M SceneMgr,h n SkyBoXnh h*| Terrain.h N Water, hMD2FHe.h MS3DFile.h Textu rcnh二舷件四 Imagexpp 空j MD2Hlexpp 空MS3DFile.cpp 好 Texture.cpp/ 一粒子* 8头文件N BillBoardh 国 FjrebalLhM Particlenh ji Snownh 丿已源文件也 BiillBoard.cp

21、p 也 Fireball.cpp 巴 Particle.cpp 也 Snow.cpp/ N头文件M Ime.hM Input.h-二源文件巴 ImexppO Input.cpp/件n AVIPlayer.hM Musich_n sound.h丿B源文件也 AVI Pl ayer.cpp 也 Music,cpp 竺5 soundxpp“丄AR交互槿块j Uz头文件也 MotionAnalysia.h_rj 7ideoCapture.h.应 ARMgr.h单L2源代码冷 MotionAnalysisxpp cj Video C a pturexpp 巴 ARMgrxpp丿二头文件川 CoreEng

22、fne,hN GameApp.hN mainHh 血 resource,h 曲 stdAfXnh-D舷件CoreEngine.cpp 巴 GameAppxpp 色 mainxpp 巴 stdAbc-epp4.2关键与技术难点的实现(i)整体引擎根底框架设计游戏引擎是用于控制所有游戏功能的主程序,从计算碰撞、物理系统和物体 的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等等。在引擎设 计中要使代码具有可重用性,必须对各个模块进行合理细分,虽然网上有不少参 考学习资料,但是都是比拟零散,没有经过工程化组织,C+游戏引擎设计对于刚刚学习接触Opengl图像处理,刚刚从Java转向C+开发的

23、程序员也是不小的 挑战。(2) 3D渲染帧与摄像头采集帧同步在AR技术中摄像头设备是程序的关键所在,但是目前摄像头设备的帧速普 遍在30帧每秒以上,而引擎的一般渲染帧数在60以上。因此,如果直接将摄像 头的像素数据引入到引擎程序里面渲染, 在不同的GPU上运行程序,图像会出现 断裂或者闪烁问题一旦图像出现闪烁,说明分析及渲染时摄像头采集的图像帧 数据还未完整,此时对图像信息进行AR辨识检测,几乎是不可能得到结果的,因 此只有为图像识别处理局部的线程添加同步处理方能解决这个问题。3D渲染帧速稳定问题在初版的引擎中,由于线程使用不当导致渲染速度比拟慢,后来经过代码分 析后才知道原来是声音播放模块放

24、到主线程中,导致每帧渲染时间过长,帧速不 稳定在20到100帧之间,画面有时出现迟滞感,后来改用D3D音频库,增加线程后帧速提升到200多帧/秒,又出现人物,动画渲染移动过快等问题,最后改 进计时器加上锁帧函数,画面才稳定下来。/*锁定帧率实现代码*/float EGTimer:LockFPS( unsigned char targetFPS)if (targetFPS <= 0)targetFPS = 1;static LARGEN TEGER s_lastTime = m_pTimer->m_startTime;LARGE_INTEGER curre ntTime;QueryP

25、erforma nceCou nter(&curre ntTime);float fps = m_pTimer->GetFPS();/如果渲染速度过快,适当增加延时,确保渲染画面稳定在targetFPS帧左右while (fps > ( float )targetFPS)Sleep(1);QueryPerforma nceCou nter (&curre ntTime);Fps = ( float )m_pTimer->m_ticksPerSecond.QuadPart/(float )(currentTime.QuadPart-s_lastTime.QuadPart);/重置计时器s_lastTime = curre ntTime;return fps;(4) AR坐标解析在AR检测中,程序能

温馨提示

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

评论

0/150

提交评论