




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机图形学大作业Doo-Sabin细分曲面生成程序说明文档软1303 侯岷君 201392413软1313 黄佳辉 201392340一、 程序总体框架本程序主要在Windows MFC框架下实现了在导入的简单几何体外表面上Doo-Sabin细分曲面的生成, 利用OpenGL完成Doo-Sabin细分曲面的生成过程。图1 程序流程图二、 主要功能模块划分程序中主要头文件和源文件如下头文件功能doosabin.h定义点、线、面MyDlgOpenGLDlg.hMFC对话框的初始化和各种控件的使用OpenGL.hDoo-Sabin细分曲面具体实现主要功能函数如下函数名(均为OpenGL类函数)功能MySetPixelFormat(HDC hdc)像素格式初始化readObj(const char *filename)从外部*.obj文件读取初始模型initialzeHalfEdge()初始化处理所有面的边集和点集,为细分做准备dooSabin()曲面细分算法init()初始化实心模型的光照和纹理reshape(int w, int h)实心模型的视角设定display1_red()实现空心线框模型,红色,可设置线粗细或虚实display1_blue()实现空心线框模型,蓝色,可设置线粗细或虚实display1_green()实现空心线框模型,绿色,可设置线粗细或虚实display2()实现实心模型idle()实现五次循环细分Draw(int i,int j,int k)将以上函数结合起来,绘制OpenGL窗体,动画实现曲面细分三、操作方法3.1 *.obj格式模型文件导入OBJ是一种3D模型文件格式。由Alias|Wavefront公司为3D建模和动画软件Advanced Visualizer开发的一种标准,适合用于3D软件模型之间的互导,也可以通过Maya读写。OBJ文件是一种文本文件,可以直接用写字板打开进行查看和编辑修改。基于它的格式简单与体积小巧,本程序采用OBJ格式作为支持的外部导入模型的格式。程序支持导入简单的OBJ格式三维几何体模型,如各种棱柱、棱锥、棱台以及它们的组合体。导入的OBJ文件不能过大,且文件中应最多只包含点坐标(v开头)、面的顶点索引(f开头)、注释(#开头)等三种信息。坐标及索引数据应为纯数字,不含/等标识。下面是一个可以导入的OBJ文件示例:图2 可导入的cube.obj导入OBJ文件后,通过文件流读取每行内容,v开头的行表示一个点的x y z坐标,f开头的行表示一个面的顶点索引,如“f 1 3 4 2”表示该面的四个顶点依次是前面的第一个点、第三个点、第四个点和第二个点,#开头的行表示注释,舍弃不用。读取v开头的行存入点坐标vector中,读取f开头的行存入面的顶点索引vector中。3.2 绘图参数的初始化用户可以选择使用顶点+线框模型与实体带光照模型两种样式之一来显示细分曲面后的几何模型。在init()函数中对实体模型显示下模型的光照与材质进行了设置。在reshape()函数中对场景的观察视角进行了设置。函数display()中设置了空心线框模型的线宽、线颜色、连接点大小、连接点颜色。3.3 Doo-Sabin代码实现原理:为了方便计算,将几何体解构为点、面与“半边”的组合:半边点面一个面图3 模型解构面类型由结构体Face描述,点类型由结构体Vertex描述(Point类型描述了点的坐标),半边类型由结构体HafEdge描述。Doo-Sabin算法具体规则:图4 Doo-Sabin算法规则将几何体按图3解构之后,每个面都是独立的个体。每条边都有面和点与其相对应,通过HalfEdge结构体中的next与pair指针可轻松遍历某个面的所有边或者所有点。虽然点与边被多次重复存储,消耗空间较多,但为判断与计算提供了方便。关于算法的关键部分initialzeHalfEdge()函数和dooSabin()函数的执行细节,代码中给出了详细注释。四、效果实现程序可以以动画效果显示Doo-Sabin细分曲面算法在导入的模型外表面上每次运行的效果,用户可以清晰地观察到模型表面变为曲面的过程。有线框(可设置线型、线宽、线与顶点的颜色)与实体模型(带光照效果)两种显示模式。线框颜色有红、蓝、绿三种。可设置细分次数。最大支持5次细分。程序自带三棱锥、十面体和正十二面体三种初始模型,同时支持导入各种简单obj模型(但需要手动导(#) )。可以通过MFC主界面的按钮来控制不同三维体的不同模型种类和颜色。五、测试截图下面以十面体的截屏来体现5次分形过程和不同模型(实心型和线型):主界面正十面体初始(第一次细分)红色线框模型第二次细分蓝色线框模型第三次细分绿色线框模型第四次细分实心模型第五次细分实心模型以下是三棱锥和十二面体的一些测试截图十二面体红色线框十二面体实心三棱锥绿色线框模型三棱锥红色线框模型六、组员分工情况成员侯岷君黄佳辉班级软1303班软1313班学号201392413201392340联系电话1884083675518840832974分工确立程序总体框架建立所需类MFC框架编写建立基于MFC的OpenGL框架OpenGL绘制说明文档撰写明确分工明确所需类的功能算法资料查找Doo-Sabin 算法实现七、写在最后终于把大作业做完了,然而功能并不十分完善,还有许多地方需要我们去改进,比如如何基于MFC完成OpenGL的绘图,如何更好更有效地使用MFC控件等等。期末考试时间紧迫,最后也并没有达到我们满意的预期效果,只有实践起来才知道会比预想要难,希望后续能继续去完善。但在这个过程中,通过不断上网和去图书馆查资料,我们收获了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 营销咨询方案(3篇)
- 木质素复合材料生态友好性评估
- 药抗生素使用课件
- 市场对绿色包装接受度分析报告
- 建筑方案设计与总图审批
- 2025版司法局《财产保全反担保申请书》(空白模板)
- 高徽浆灌浆施工方案
- 药品经营监督检查课件
- 中式建筑方案设计图
- 惠农区网络推广营销方案
- 2024年司法协理员招聘考试题库及答案
- DB61-T 5061-2023 民用建筑有线电视系统工程技术规程
- 质量保障方案文案(3篇)
- 产科分娩风险管理制度
- DB61T-建设项目使用草地现状调查技术规范
- 安徽省房屋建筑和市政基础设施工程施工应用BIM技术招标投标评标办法实施导则(2025版)
- 急诊仪器设备管理制度
- T/CCOA 62-2023大豆油生产技术规范
- (高清版)DG∕TJ 08-207-2008 房屋修缮工程技术规程
- 江苏省普通高中生物课程标准教学要求(修订稿)
- 国家智慧中小学教育平台应用培训
评论
0/150
提交评论