- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
三维点云数据格式转换技术的研究与实现
三维点云数据格式转换技术的研究与实现 导 师:杨会君 答辩人: 专 业: 主要内容 需求分析 研究内容 设计实现 结论 1 2 3 4 需求分析 a) 3D计算机图形学的崛起,3D模型越来越被人们所喜爱 b) D3D和OpenGL作为两个开发标准,对模型格式的支撑不尽相同 c) 转换模型格式使得其能在不同3D模型设计环境中使用已成研究趋向 研究内容 D3D对3DS格式模型支持良好,而OpenGL更擅长OBJ格式模型的绘制,本文以3DS和OBJ格式模型为例探讨三维点云数据格式转换技术的研究与实现: 解析3DS和OBJ文件结构和存储格式; 研究3DS和OBJ模型文件的读写过程; 设计3DS和OBJ文件的相互转换算法; 开发基于MFC简单界面实现人机交互。 3DS结构格式 16 进制方式打开如上图所示,数据是按照低位在前,高位在后的方式存储。 OBJ结构格式 OBJ文件没有显著的结构体特征: OBJ文本文件没有文件头(File Header),“#”号开头的为注释行,有时可能使用几行文件信息的注释作为文件的开头。 空格和空行可以随意加到文件中以增加文件的可读性。 有字的行都由关键字(Keyword)开头,关键字可以说明这一行是什么样的数据。 OBJ文件不包含面的颜色定义信息,不过可以引用材质库,材质库信息储存在一个后缀是“.mtl”的独立文件中,用关键字“mtllib”来引用。 文本格式的OBJ文件 3DS读取 由于3DS文件的块结构是固定的],并且综合嵌套特性,因此可以用递归方法来读取。 返回上一级的条件就是当前已经读入的块的字节数是否等于块的长度。 在块之间跳转时,从父块到子块可用多分支语句实现,然后根据子块的ID判断需要进入哪个子块分支。 在主块读入完毕后,整个3DS文件读入程序结束。 OBJ读取 3DS写入 3ds文件块长度计算方法 OBJ写入 OBJ模型文件时在写入时,按文本类型直接写入,不需要计算长度。同样以顶点写入为例,其伪码示例如下。 for(int j = 0; j numOfVerts; j++) { //以“v x y z”的格式写入顶点信息 fwrite((pBuff[j].flag), 1, sizeof(char), fp); //写入顶点关键字 fwrite((pBuff[j].x), 1, sizeof(float), fp); //写入每个顶点x坐标 fwrite((pBuff[j].y), 1, sizeof(float), fp); //写入每个顶点y坐标 fwrite((pBuff[j].z), 1, sizeof(float), fp); //写入每个顶点z坐标 fwrite((‘\n’), 1, sizeof(char), fp); //写入换行符 } 注意:命名要适当,最后注意要换行。 转换流程 图形界面 3DS-OBJ测试 - 3DS人头模型 OBJ人头模型 OBJ-3DS测试 - OBJ茶壶模型 3DS茶壶模型 结论 达到了研究的预期目标 不足和研究方向: a) 框架简单,不易深层拓展,可优化框架,以便更合理地组织信息; b) 转换格式有限,可添加更多转换功能以便转换格式文件; c) 界面粗糙,需进一步完善。 * 基本块(0X4D4D)所有块的根块,每个3DS文件的开头都是这样一个块; 3D编辑块(0X3D3D)存储了当前编辑场景的状况和当前窗口的配置数据 ; 材质块(0XAFFF)存储了使用于物体上的材质属性,包括材质的名称,颜色以及贴图等 ; 网格块(0X4100)存储了模型的顶点、顶点的纹理坐标以及面信息等; 材质块(0X4130)存储了当前物体上所赋予的材质信息; 关键帧块(0XB000)描述了关键帧数据。 字节FF AF 组成的整型数,表明AF 是高位字节,FF 是低位字节; 对于长整型数,如93 8E 06 00,表明8E 93 是低位字,而00 06 是高位字 * OBJ文本文件没有文件头(File Header),“#”号开头的为注释行,有时可能使用几行文件信息的注释作为文件的开头。 空格和空行可以随意加到文件中以增加文件的可读性。 有字的行都由关键字(Keyword)开头,关键字可以说明这一行是什么样的数据。 OBJ文件不包含面的颜色定义信息,不过可以引用材质库,材质库信息储存在一个后缀是“.mtl”的独立文件中,用关键字“mtllib”来引用。 * 通过ID号判断此块是否需要, 若此块的信息正是所需要的,则继续读此块接下来的字节, 否则,直接跳到下一个块,方法很简单, 由于每一个块都会读取它的ID号和块长度N(假设此块长度为N个字节,假设此时已经读了此块的6个字节),只需将读取文
您可能关注的文档
- 七年级年级--数据的收集与整理检测题.doc
- 七年级地理上册,第三章,降水的变化与分布课件 。。.pptx
- 七年级宇宙里有些什么?(实用版).ppt
- 七年级数学假期强化训练-每日一练 -.doc
- 七年级数学每日一题.docx
- 七年级第二学期(复习) 2.ppt
- 七年级美术《色彩三原色的认识》课件.ppt
- 七年级历史第3课 远古的传说.ppt
- 七年级语文上课内课外古诗复习.ppt
- 七年级语文上册《冰心诗四首》1课堂教学课件 苏教版.ppt
- 数据仓库:Redshift:Redshift与BI工具集成.docx
- 数据仓库:Redshift:数据仓库原理与设计.docx
- 数据仓库:Snowflake:数据仓库成本控制与Snowflake定价策略.docx
- 大数据基础:大数据概述:大数据处理框架MapReduce.docx
- 实时计算:GoogleDataflow服务架构解析.docx
- 分布式存储系统:HDFS与MapReduce集成教程.docx
- 实时计算:Azure Stream Analytics:数据流窗口与聚合操作.docx
- 实时计算:Kafka Streams:Kafka Streams架构与原理.docx
- 实时计算:Kafka Streams:Kafka Streams连接器开发与使用.docx
- 数据仓库:BigQuery:BigQuery数据分区与索引优化.docx
最近下载
- 2024-2025学年初中信息科技冀教版2024七年级全一册-冀教版2024教学设计合集.docx
- 重大危险源管控措施及方案.doc VIP
- 十三辙《韵辙表》——合辙押韵必备.pdf VIP
- 2024年凉山州越西县卫生健康局聘用村卫生室村医笔试真题.docx VIP
- 生产与运作分析第七版史蒂文·纳米亚斯习题答案第6章.docx VIP
- 数字逻辑与数字系统朱正东习题答案.pdf VIP
- 冀教版英语九年级上册课堂同步练习试题及答案(全册).pdf VIP
- 烟雾病讲解课件.ppt
- 生产与运作分析第七版史蒂文·纳米亚斯习题答案第5章.docx VIP
- 以病例分析为主导的营养诊疗示范题库答案-2025年华医网继续教育答案.docx VIP
文档评论(0)