参考:http://blog.csdn.net/hunter8777/article/details/6395858
OBJ文件是一种静态模型文件,即文件中不包含动画信息。该文件格式由Alias|Wavefront创建。OBJ如此被重视是因为它可以从Maya中导出,后者是支持3D模型创建、编辑等操作的工业标准级软件。几乎所有知名的3D软件都支持OBJ文件格式。
本文来详细理解下OBJ文件的结构。
参考内容《Focus On 3D Models》Chapter 4 Loading Obj Files
OBJ文件没有文件头,文件可以是ASCII,也可以是文本文件的形式进行保存,一般为文本文件。在文本文件中,可以使用#来添加注释,可读性行很高。
OBJ3.0格式支持多边形(Polygon),直线(Lines),表面(Surfaces),和自由形态曲线(Free-form Curves)。
直线和多角形通过它们的点来描述,曲线和表面则根据于它们的控制点和依附于曲线类型的额外信息来定义。这些信息支持规则和不规则的曲线,包括那些基于贝塞尔(Bezier)曲线,B样条(B-spline),基数(Cardinal/Catmull-Rom样条),和泰勒方程(Taylor equations)的曲线。
在OBJ文件中,每行由一个前缀字母作为关键字开头,用来标示该行是什么类型的模型数据,其中比较重要的类型如下:
v:几何体的顶点信息
vt:纹理贴图的坐标点
vn:几何体顶点法线
f:构成一个面的顶点索引
其他的还有:
g:分组名称
p:点
l:线
surf:曲面
curv:曲线
简单的示例如下:
v -0.13 0.27 0
v 1.73 2.64 0
v -1.05 1.73 0
f 1 2 3
该示例定义了3个顶点,顶点中包含了x、y、z信息。还有一个面的信息,该面由上述的3个顶点组成。
一种简单地表示f(面)的形式如下:
f 1 2 3
这行的意义为该面由v定义的索引为1、2、3的顶点所构成。但这样的表示方式是忽略顶点的纹理坐标和顶点法线信息的。
如果需要考虑加入纹理坐标,可以如下表示:
f 1/4 2/5 3/6
这行的意义为该面由v定义的索引为1、2、3的顶点所构成,并且它们相应的纹理坐标是vt中的4、5、6索引定义。
再加入顶点法线信息,可以如下表示:
f 1/4/7 2/5/8 3/6/9
在这里,对应的第三个值7、8、9就是在vn中定义索引。
如果只要顶点和法线信息,无须纹理坐标,可以表示如下:
f 1//4 2//5 3//6
OBJ文件简单易用,一般读取的过程就是检验开头关键词,然后将后面的数据添加入相应的数据管理中。读取的控制流程可以使用switch-case结构实现。
最后列出一份完整的OBJ关键字列表:
顶点数据(Vertex data):
v 几何体顶点(Geometric vertices)
vt 贴图坐标点(Texture vertices)
vn 顶点法线(Vertex normals)
vp 参数空格顶点 (Parameter space vertices)
自由形态曲线(Free-form curve)/表面属性(surface attributes):
deg 度(Degree)
bmat 基础矩阵(Basis matrix)
step 步尺寸(Step size)
cstype 曲线或表面类型 (Curve or surface type)
元素(Elements):
p 点(Point)
l 线(Line)
f 面(Face)
curv 曲线(Curve)
curv2 2D曲线(2D curve)
surf 表面(Surface)
自由形态曲线(Free-form curve)/表面主体陈述(surface body statements):
parm 参数值(Parameter values )
trim 外部修剪循环(Outer trimming loop)
hole 内部整修循环(Inner trimming loop)
scrv 特殊曲线(Special curve)
sp 特殊的点(Special point)
end 结束陈述(End statement)
自由形态表面之间的连接(Connectivity between free-form surfaces):
con 连接 (Connect)
成组(Grouping):
g 组名称(Group name)
s 光滑组(Smoothing group)
mg 合并组(Merging group)
o 对象名称(Object name)
显示(Display)/渲染属性(render attributes):
bevel 导角插值(Bevel interpolation)
c_interp 颜色插值(Color interpolation)
d_interp 溶解插值(Dissolve interpolation)
lod 细节层次(Level of detail)
usemtl 材质名称(Material name)
mtllib 材质库(Material library)
shadow_obj 投射阴影(Shadow casting)
trace_obj 光线跟踪(Ray tracing)
ctech 曲线近似技术(Curve approximation technique)
stech 表面近似技术 (Surface approximation technique)
分享到:
相关推荐
"OBJ文件格式详解" OBJ文件格式是一种标准的3D模型文件格式,广泛应用于3D软件模型之间的互导。它是一种文本文件格式,由Alias|Wavefront公司推出,具有良好的可读性和互操作性。 OBJ文件格式的特点: 1. OBJ是一...
### Obj文件格式与Mtl文件格式详解 #### 一、Obj文件格式概述 Obj文件格式是一种广泛使用的3D模型文件格式,最初由Wavefront Technologies为一套名为“Advanced Visualizer”的工作站上的3D建模和动画软件开发。...
**obj文件格式简介** OBJ(Object File Format)是一种常见的三维模型文件格式,由美国Wavefront Technologies公司开发,主要用于其高级视觉效果软件“Advanced Visualizer”。这种格式是文本文件,易于阅读和编写,...
_Obj 文件格式详解 _Obj 文件格式是 Wavefront 的一种三维模型文件格式,主要用于描述三维对象的几何形状和其他属性。这种格式可以在 Wavefront 的高级可视化器中使用,也可以与其他应用程序交换几何数据。 文件...
在"OBJ-File-Loader.rar_MFC OBJ LOADER_obj_obj loader_obj文件_obj文件格式"这个资源中,我们将探讨如何使用MFC(Microsoft Foundation Classes)库来实现一个OBJ文件加载器。 MFC是微软为Windows平台提供的C++...
"obj文件格式详解" obj 文件格式是一种标准的 3D 模型文件格式,由 Alias|Wavefront 公司开发,广泛应用于 3D 软件模型之间的互导。它是一种文本文件,支持直线、多边形、表面和自由形态曲线等几何体元素。 obj ...
在vtk中将三维模型的文件格式保存为obj文件格式
Obj文件格式,全称为Object File Format,是一种广泛用于3D建模领域的文本文件格式,它由Wavefront Technologies公司开发,最初用于其高级渲染软件“Advanced Visualizer”。Obj文件格式的主要优点在于它的简单性和...
标题中的"omf.rar_OMF-51_obj文件格式_omf_omf_coff"表明我们将讨论OMF格式,特别是与51系列微处理器相关的变种,以及它与COFF(Common Object File Format)的关系。 1. OMF-51:这个标签指代了OMF格式针对Intel ...
OBJ文件格式是Wavefront Technologies开发的一种通用3D模型文件格式,它可以包含更丰富的信息,如顶点、面、纹理坐标和法线,以及材质信息。相比STL,OBJ文件更适合于复杂的3D建模和渲染,因为它提供了更清晰的数据...
首先,让我们了解一下OBJ文件格式。OBJ是Wavefront Technologies开发的一种通用的几何模型文件格式,常用于3D建模软件。它以文本形式存储顶点、纹理坐标和面信息,但不包含关于光照、颜色等的高级信息。 转换OBJ到...
其中,OBJ文件格式作为一种广泛应用的3D模型文件格式,广泛应用于3D建模、游戏开发以及科学研究等多个领域。Meshlab,作为一款专门针对3D点云数据进行处理和可视化的开源软件,因其强大的功能和灵活性,成为了许多...
其中,obj文件格式是一种常见的、开放的、文本基础的三维模型格式,由Wavefront Technologies公司开发。这个格式被广泛用于3D建模软件之间交换数据,比如Maya、3ds Max、Blender等。本文将深入探讨obj文件的结构以及...
5. **导出OBJ文件**:最后,将生成的3D模型数据(包括顶点、面、纹理坐标等)按照OBJ文件格式规范写入文件。在MATLAB中,可以使用`writeObj`函数或其他类似的自定义函数完成这个任务。例如,`jpg2obj.m`可能是实现这...
其中,OBJ文件格式是一种广泛应用的开放格式,它由Wavefront Technologies公司开发,主要用于描述3D物体的几何信息。本文将深入探讨“立方体obj文件”的特点、结构以及如何利用工具如Meshlab进行处理和显示。 立方...
在MATLAB中,`.mat`文件是一种二进制文件格式,用于存储变量,包括数组、结构体、函数等,使得数据可以在MATLAB会话间持久化或与其他MATLAB程序共享。`.mat`文件中的数据可以直接在MATLAB环境中被读取和操作,这对于...
本数据集是针对香港某地区进行倾斜摄影后处理得到的成果,采用的是OBJ文件格式。 OBJ文件格式是一种通用的3D模型文件格式,由Wavefront Technologies公司开发,用于存储包括几何数据、纹理信息和面片在内的三维模型...
- obj文件格式是一种文本格式,易于读写,支持多边形、曲线和曲面等多种几何形状。 - 它以ASCII编码,包含顶点坐标、法线向量、纹理坐标和面定义等信息,便于跨平台和软件之间的数据交换。 - 由于obj格式不包含...
1. **OBJ文件格式** OBJ文件是一种文本文件,包含了3D模型的几何信息,如顶点、边、面,以及纹理坐标和法线信息。每个对象都有一个独立的定义,可以包含多个子对象或组。这种格式不包含任何关于光照、材质或动画的...
**一、OBJ文件格式** OBJ是一种通用的3D模型文件格式,由Wavefront Technologies开发,广泛应用于3D建模软件中。它存储了模型的顶点、边和面信息,以及纹理坐标和法线数据。虽然OBJ不包含动画或材质信息,但Three....