您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 基于MFC的三维场景系统设计报告
研究生课程考试成绩单(试卷封面)院系仪器科学与工程学院专业仪器科学与技术学生姓名学号课程名称面向对象的大型测控软件设计授课时间2012年9月至2012年12月周学时3学分2简要评语考核论题基于MFC的三维场景系统设计总评成绩(含平时成绩)备注任课教师签名:日期:注:1.以论文或大作业为考核方式的课程必须填此表,综合考试可不填。“简要评语”栏缺填无效。2.任课教师填写后与试卷一起送院系研究生秘书处。3.学位课总评成绩以百分制计分。基于MFC的三维场景系统设计报告1引言1.1编写目的随着现在生活节奏的加快,网络对人民的生活越来越重要。虚拟漫游技术是虚拟现实技术的重要分支,在建筑、旅游、游戏、航空航天、医学等多种行业发展很快。本文在MFC的框架的,设计一种三维的漫游坏境,对场景中的道具可以进行自主的选择功能,实现更好的个性化设计,给人营造一种更加真实和方便操作的虚拟的漫游环境。1.2背景1.3术语说明MFC微软基础类库,是一种应用程序框架OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库1.4参考资料OpenGL编程指南DaveShreiner编著人民邮电出版社OpenGL超级宝典RichardS.Wright编著人民邮电出版社三维游戏设计师宝典:学OpenGL编3D游戏唐明理编著四川出版集团C++程序设计吴乃陵编著高等教育出版社MFC深入浅出侯俊杰编著华中科技大学出版社2需求分析2.1功能需求该软件要求完成三维场景的的绘制,能够在虚拟的场景中进行漫游,以增强现实感;能够对场景的3DS模型进行查看及移动,实现个性的场景设计。本软件主要有如下功能:(1),三维场景显示功能:对要显示的3D模型在场景中进行显示,场景中应有天空盒、地面、树、文字和3DS模型;(2),场景漫游功能:实现视口变换,在虚拟环境中进行漫游,漫游时随地势的高度起伏变化,完全模拟人正常走路的情况;(3),场景中3DS模型的移动功能:可以任意移动你选中的模型,然后实现鼠标左键移动3D模型,实现个性场景布局;(4),场景中3DS模型的查看功能:选中某3DS模型,右击可以弹出菜单,选择查看3D示意图,可以用子窗口进行显示,并且可以用鼠标控制旋转。2.2性能需求(1),漫游环境的真实性:设计的三维漫游坏境应当源于现实生活的场景,漫游时应当流畅,体验性好。(2),时间特点:操作响应时间不能太长,方便用户的个性选择。(3),程序结构优化:用MFC进行开发,应实现程序结构的优化,更好体现C++面向对象的思想。2.3市场需求(1),可以用于3D游戏场景的布置,在游戏环境中可以漫游,以及游戏中道具的移动及查看;(2)可以用于实现场景的编辑,实现用户对各3DS模型的操作:移动,旋转,删除,复制,达到个性的2.4外部接口需求(1),硬件接口:笔记本电脑。(2),软件接口:运行于Windows操作系统之上,在MicrosoftVisualStudio坏境中进行开发的。(3),软件属性需求:正确性,要求所开发的软件要达到用户的需求,运行时基本无误;可靠性,一般条件下,不应该出现故障;效率,对用户的要求要有极快的响应;易使用性,要求能尽量为用户的使用提供方便;可维护性,当软件出错时可以尽快的进行修改;可移植性,要求本软件能在Windows系统上进行移植;互联性,要求提供数据的导入和导出接口,以易于同其他系统的连接。3系统设计3.1设计思路在MFC环境下设计,应用面向对象的思想更好的体现三维场景各部件的独立性和联系性。在主View类中搭建OpenGL框架,在主窗口中实现整个场景的绘制;用子View类继承于它,实现子窗口的创建显示;将要显示的每个部分各封装到一个类中,并且将他们作为场景类的成员,在场景类中实现他们各自的显示。3.2详细设计方案(1),用例图参与者:用户用例:三维场景显示、场景漫游、选中3DS模型及移动、子窗口查看3DS模型参与者只有用户,用户参与用例三维场景显示、场景漫游、选中3DS模型及移动、子窗口查看3DS模型。System用户三维场景显示场景漫游选中3DS模型及移动子窗口查看3DS模型includeextendextend(2),类图SkyBox类、Sand类、Tree类、Text类、M3ds类是OpenGLView类的成员对象,共同实现场景的汇制;SubView继承于OpenGLView类,它是OpenGLDlg类的成员对象,实现子窗口显示3DS模型;T3DModel是M3ds类的成员对象,;Picture类是SkyBox类、Sand类、Tree类的成员函数,实现各自位图纹理生成。OpenGLView类+m_skybox:SkyBox*+m_sand:Sand*+m_tree:Tree*+m_text:Text*+m_3ds:M3ds*+m_hRC:HGLRC+m_pDC:CDC*+hDC:HDC+Attribute1+RenderScene():void+DisplayScene():voidPicture+LoadBit():char*+loadtexture():void+loadpicture():AUX_RGBImageRec*+LoadT16():voidSand+g_terrain:float+g_index:Gluint+g_texcoord:float+m_picture1:Picture+Drawsand():BOOL+GetHeight(float,float):float+InitTerrain(float):void+Loadsand(void):boolTree+m_picture2:Picture*+m_sand1:Sand*+Loadtree():bool+CreateTree():void+ShowTree():voidText+test:CString+hFont,hFont0:HFONT+ShowText():voidSkyBox+a,wi,he,le:int+m_picture:Picture+CreateSkyBox():void+Loadskybox():boolM3ds+S3dsList:vectorT3DModel*+LBUTTONDOWN:bool+GET:bool+s3ds1,s3ds2,s3ds3:T3DModel+Init():void+ShowM3ds():void+Get3ds(int):bool+Move():voidT3DModel+pos_x,pos_y,pos_z:int+r,re,size:float+cn:char*+Set():void+Init(char*):void+load3dobj():void+show3ds():voidSubView+Height,Width:GLsizei+m_bDraw:BOOL+M3dsIndex:int+RenderScene():voidOpenGLDlg+m_subview:SubView*+m3dSIndex:int+OnInitDialog():bool成员对象成员对象成员对象成员对象继承成员对象成员对象成员对象成员对象成员对象3.3具体描述序号名称功能1OpenGLView类该类实现OpenGL框架的搭建及主窗口场景显示。属性:m_hRC;着色描述表m_pDC;设备描述表m_skybox;天空盒对象指针m_sand;地面对象指针m_tree;树对象指针m_3ds;3DS对象指针m_text;显示文字M3dsIndex;拾取对象序号操作:RenderScene();画图DisplayScene();漫游的接口函数2SubView类用于子窗口被选中3ds模型对象显示。属性:Height;客户区高Width;客户区宽m_bDraw;开始旋转的标志M3dsIndex;选中模型的序号操作:RenderScene();显示选中的ds模型3OpenGLDlg类用于对话框的建立及与SubView的关联显示。属性:m_subview;创建子窗口m3dSIndex;选中3ds模型序号操作:OnInitDialog();对话框处理4Picture类实现所有对象中位图纹理的处理。属性:无操作:LoadBit();调位图loadtexture();产生纹理loadpicture();载入文件LoadT16();16位色的贴图5Sand类用于地面地势的创建及显示。属性:fg_terrain;地域数组g_index;顶点数组g_texcoord;索引数组r;旋转角度texture1;定义纹理数组m_picture1;定义Picture对象指针操作:Drawsand();画地面GetHeight();取地面高度InitTerrain();建立地域数组Loadsand();贴图操作6Skybox类用于天空盒的建立及显示。属性:a,wi,he,le;天空盒对应的长宽高及高度调整值m_picture;定义贴图对象指针g_texture[5];定义纹理数组操作:CreateSkyBox();创建天空盒boolLoadskybox();载入天空盒纹理7M3ds类该类用于3ds容器建立、3ds模型的选中及显示。属性:s3ds1,s3ds2,s3ds3;建立个3ds对象S3dsList;存放ds的容器LBUTTONDOWN;判断鼠标左键是否按下GET;判断是否选中3ds模型操作:Init();对S3dsList容器进行初始化ShowM3ds();S3dsList容器中3ds的显示Get3ds();拾取一个3dsMove();3ds的移动8T3DModel类是一个完整3ds模型对象,实现单个模型的载入和显示。属性:pos_x,intpos_z,floatpos_y;3ds模型的XYZ坐标r;3ds模型旋转半径Re;3ds模型角度size;3ds模型比例大小cn;要载入的3ds模型文件操作:Set();设置3ds模型对象初始参数load3dobj();加载ds文件Init();初始化ds模型CleanUp();关闭文件,释放内存空间show3ds();显示ds模型9Text类该类用于文字的创建及显示。属性:hFont,hFont0;字体属性test;字符串操作:ShowText();显示文字10Tree类该类用于树的创建及显示。属性:m_sand1;定义Sand对象指针m_picture2;定义Picture对象指针操作:Loadtree();树的纹理CreateTree();创建树ShowTree0();显示树
本文标题:基于MFC的三维场景系统设计报告
链接地址:https://www.777doc.com/doc-2570864 .html