计算机图形学实验几何物体的表示——三角网格的表示与显示.docx

计算机图形学实验几何物体的表示——三角网格的表示与显示.docx

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机图形学实验几何物体的表示——三角网格的表示与显示

实验四 几何物体的表示——三角网格的表示与显示 实验目的 熟悉三角网格的表示 熟悉三角网格的显示 熟悉纹理的显示 实验内容 设计三角网格的数据结构 解析Obj文件格式的三角网格 显示三角网格及纹理贴图 实验指导 存储三角网格数据的文件格式多种多样,常见的文件格式有: Wavefront OBJ (*.0bj) 3D Max (*.max, *.3ds) VRML (*.vrl) Inventor (*.iv) PLY (*.ply, *,ply2) 本实验主要以OBJ文件为例,了解其数据格式,建立三角网格在内存中的数据结构,从而将文件中的数据读取到内存,并最终显示出来。 OBJ文件格式 OBJ文件是Alias|Wavefront公司为他的一套基于工作站的3D建模和动画软件“Advanced Visualizer”开发的一种标准3D模型文件格式,很适合用于3D软件模型之间的数据交换。目前几乎所有知名的3D软件如3dsMax,LightWave,Maya都支持OBJ文件的读写。 OBJ文件是一种纯文本文件,可以直接用写字板打开进行查看和编辑修改。这种文件以纯文本的形式存储了模型的顶点、法线和纹理坐标和材质使用信息。OBJ的每一行,都有极其相似的格式,每行的格式如下: 前缀 参数1 参数2 参数3 …… 其中,前缀标识了这一行所存储的信息类型,参数则是具体的数据。OBJ文件的前缀可以有: 前缀说明v表示本行指定一个顶点 此前缀后跟着3个单精度浮点数,分别表示顶点的x,y,z坐标值vt表示本行指定一个纹理坐标 此前缀后跟着两个单精度浮点数,分别表示此纹理坐标的u,v值vn表示本行指定一个法线向量 此前缀后跟着3个单精度浮点数,分别表示顶点法向量x,y,z坐标值f表示本行指定一个表面(Face) 此前缀后面的数据见“面的格式说明”usemtl此前缀后只跟着一个参数。该参数指定了从此行之后到下一个以usemtl开头的行之间的所有表面所使用的材质名称。该材质可以在此OBJ文件所附属的MTL文件中找到具体信息。mtllib此前缀后只跟着一个参数,该参数指定了此OBJ文件所使用的材质库文件(*.mtl)的文件路径面的格式说明: 每个三角面片的数据由f开头,后面跟组成该三角面片的各顶点的顶点坐标索引,纹理坐标索引,顶点法向索引,其格式为: f 顶点坐标索引/纹理坐标索引/顶点法向索引 …… 其中纹理坐标索引和顶点法向索引可以为空,如果为空的索引位于末尾时,’/’也可以省略,例如: f? 1 2 3 这样的行表示以第1、2、3号顶点组成一个三角形,等同于1// 2// 3//。 f? 1/3 2/5 3/4 这样的行表示以第1、2、3号顶点组成一个三角形,其中第一个顶点的纹理坐标的索引值为3,第二个顶点的纹理坐标的索引值为5,第三个顶点的纹理坐标的索引值为4。 f? 1/3/4 2/5/6 3/4/2 这样的行表示以第1、2、3号顶点组成一个三角形,其中第一个顶点的纹理坐标的索引值为3,其法线的索引值是4;第二个顶点的纹理坐标的索引值为5,其法线的索引值是6;第三个顶点的纹理坐标的索引值为6,其法线的索引值是2。 f? 1//4 2//6 3//2 这样的行表示以第1、2、3号顶点组成一个三角形,且忽略纹理坐标。其中第一个顶点的法线的索引值是4;第二个顶点的法线的索引值是6;第三个顶点的法线的索引值是2。 除此之外,以“#”开头的表示注释,以g开头的表示组的前缀。但这些前缀并不影响模型的外观,因此我们可以忽略它们。 下面来看一个具体的实例,该文件是用3dsMax创建的一个长方体存储成OBJ文件的结果: # Max2Obj Version 4.0 Mar 10th, 2001 # mtllib ./Box.mtl g # object (null) to come ... # v -46.508743 -45.052959 50.796341 v 49.442947 -45.052959 50.796341 v -46.508743 -45.052959 -48.019585 v 49.442947 -45.052959 -48.019585 v -46.508743 48.034504 50.796341 v 49.442947 48.034504 50.796341 v -46.508743 48.034504 -48.019585 v 49.442947 48.034504 -48.019585 # 8 vertices vt 0.000000 0.000000 0.000000 vt 1.000000 0.000000 0.000000 vt 0.000000 1.00000

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档