基于OpenGL的OBJ文件显示_第1页
基于OpenGL的OBJ文件显示_第2页
基于OpenGL的OBJ文件显示_第3页
基于OpenGL的OBJ文件显示_第4页
基于OpenGL的OBJ文件显示_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

OBJ文件格式详解1.OBJ文件概述2.OBJ文件的特点3.OBJ文件的基本结构4.OBJ文件实例OBJ文件概述OBJ文件是Alias|Wavefront公司为它的一套基于工作站的3D建模和动画软件"AdvancedVisualizer"开发的一种标准3D模型文件格式,很适合用于3D软件模型之间的互导,也可以通过Maya读写。比如你在3dsMax或LightWave中建了一个模型,想把它调到Maya里面渲染或动画,导出OBJ文件就是一种很好的选择。目前几乎所有知名的3D软件都支持OBJ文件的读写,不过其中很多需要通过插件才能实现。OBJ文件是一种文本文件,可以直接用写字板打开进行查看和编辑修改。另外,有一种与此相关二进制文件格式(*.MOD),其作为专利未公开,因此这里不作讨论。OBJ文件的特点OBJ3.0文件格式支持直线(Line)、多边形(Polygon)、表面(Surface)和自由形态曲线(Free-formCurve)。直线和多边形通过它们的点来描述,曲线和表面则根据它们的控制点和依附于曲线类型的额外信息来定义,这些信息支持规则和不规则的曲线,包括那些基于贝塞尔曲线(Bezier)、B样条(B-spline)、基数(Cardinal/Catmull-Rom)和泰勒方程(Taylorequations)的曲线。其他特点如下:OBJ文件的特点

OBJ文件是一种3D模型文件。不包含动画、材质特性、贴图路径、动力学、粒子等信息。OBJ文件主要支持多边形(Polygons)模型。虽然也支持曲线(Curves)、表面(Surfaces)、点组材质(PointGroupMaterials),但Maya导出的OBJ文件并不包括这些信息。OBJ文件支持三个点以上的面,这一点很有用。很多其它的模型文件格式只支持三个点的面,所以导入Maya的模型经常被三角化了,这对于我们对模型进行再加工甚为不利。

OBJ文件支持法线和贴图坐标。在其它软件中调整好贴图后,贴图坐标信息可以存入OBJ文件中,这样文件导入Maya后只需指定一下贴图文件路径就行了,不需要再调整贴图坐标。OBJ文件的基本结构OBJ文件不需要任何种文件头(FileHeader),尽管经常使用几行文件信息的注释作为文件的开头。OBJ文件由一行行文本组成,注释行以符号“#”为开头,空格和空行可以随意加到文件中以增加文件的可读性。有字的行都由一两个标记字母也就是关键字(Keyword)开头,关键字可以说明这一行是什么样的数据。多行可以逻辑地连接在一起表示一行,方法是在每一行最后添加一个连接符(\)。注意连接符(\)后面不能出现空格或Tab格,否则将导致文件出错。下列关键字可以在OBJ文件使用。在这个列表中,关键字根据数据类型排列,每个关键字有一段简短描述。

顶点数据(Vertexdata):

v几何体顶点(Geometricvertices)

vt贴图坐标点(Texturevertices)

vn顶点法线(Vertexnormals)

vp参数空格顶点(Parameterspacevertices)自由形态曲线(Free-formcurve)/表面属性(surfaceattributes):

deg

度(Degree)

bmat

基础矩阵(Basismatrix)

step

步尺寸(Stepsize)

cstype曲线或表面类型(Curveorsurfacetype)元素(Elements):

p

点(Point)

l

线(Line)

f

面(Face)

curv

曲线(Curve)

curv2

2D曲线(2Dcurve)

surf

表面(Surface)OBJ文件的基本结构自由形态曲线(Free-formcurve)/表面主体陈述(surfacebodystatements):

parm参数值(Parametervalues)

trim外部修剪循环(Outertrimmingloop)

hole内部整修循环(Innertrimmingloop)

scrv特殊曲线(Specialcurve)

sp特殊的点(Specialpoint)

end

结束陈述(Endstatement)自由形态表面之间的连接(Connectivitybetweenfree-formsurfaces):

con连接(Connect)成组(Grouping):

g

组名称(Groupname)

s光滑组(Smoothinggroup)

mg合并组(Merginggroup)

o对象名称(Objectname)OBJ文件的基本结构显示(Display)/渲染属性(renderattributes):

bevel导角插值(Bevelinterpolation)

c_interp颜色插值(Colorinterpolation)

d_interp溶解插值(Dissolveinterpolation)

lod细节层次(Levelofdetail)

usemtl材质名称(Materialname)

mtllib材质库(Materiallibrary)

shadow_obj

投射阴影(Shadowcasting)

trace_obj

光线跟踪(Raytracing)

ctech

曲线近似技术(Curveapproximationtechnique)

stech

表面近似技术(Surfaceapproximationtechnique)OBJ文件的基本结构OBJ文件实例

让我们来创建一个OBJ文件,内容为一个四边形,不过不用3D软件,而是用写字板来创建。打开写字板,把下面的5行代码写入,可以适当加一点注释。保存文件为文本格式,文件名为"myObj.obj"。注意:代码最后一定要按一下回车把光标切换到下一行,就是说加一个换行符(\n)。否则会看到如下错误信息:

//Error:line1:OBJfileline5:indexoutofrange.//

//Error:line1:Errorreadingfile.//

在Maya中导入"myObj.obj"文件,会看到四边形。这个四边形的形状是完全由前面的那5行代码决定的。OBJ文件实例

我们来分析一下这些代码。

v-0.580.840

画一个四边形需要四个顶点,这是第一个顶点,"v"表示顶点(vertex),"-0.58"为这个顶点的X轴坐标值,"0.84"为Y轴坐标值,"0"为Z轴坐标值。它的索引号是1。索引号是画面时要用到的。

v2.681.170

v2.84-2.030

v-1.92-2.890

这分别是第二、三、四个顶点,它们的索引号分别是2,3,4。

f1234

现在开始画面,"f"表示面(face),1,2,3,4是前面那四个顶点的索引号。请注意画这个面连接点的顺序,是从第一个点出发,依次连接第二、三、四个点。如果连接的顺序不同所生成的面也会截然不同,例如"f1243"会产生一个交迭的面。

面的连接点是按顺时针排列或逆时针排列,将决定面

温馨提示

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

评论

0/150

提交评论