obj格式简介(转)

 

我们经常见到的*.obj文件有两种:第一种是基于COFF(Common Object File Format)格式的OBJ文件(也称目标文件),这种格式用于编译应用程序;第二种是Alias|Wavefront公司推出的OBJ模型文件。我要讲的OBJ文件格式是指第二种-OBJ模型文件。  说起3D文件格式,大家一定不会感到陌生,"*.3ds","*.max","*.lw","*.mb","*.dxf","*.obj",相信人人都能列举出几种来。但是说起OBJ文件的具体特征,却很少有人能给出较为圆满的描述。 很多人认识OBJ文件是从使用Poser开始的,Poser是一款人体建模软件,要把Poser生成的人体导出到其它3D软件中进行再加工,就用到了OBJ文件。OBJ文件是一种标准的3D模型文件格式,很适合用于3D软件模型之间的互导。比如你在3dsMax或LightWave中建了一个模型,想把它调到Maya里面渲染或动画,导出OBJ文件就是一种很好的选择。目前几乎所有知名的3D软件都支持OBJ文件的读写,不过很多软件需要通过插件才能做到这一点。

另外,作为一种优秀的文件格式,很多游戏引擎也都支持OBJ文件的读取。 了解OBJ文件格式有什么用呢?如果你不学编程的话,用处确实不大。不过,3D软件模型之间的互导是一件很常见的事情,不幸的是,目前的3D软件模型导出功能都不那么完美,经常会出现缺面少线的情况,有时还会遇到导出的模型根本打不开的情况。如果情况非常紧急的话,你一定会不惜一切代价仔细研究,期望找到原因,解决问题。在这种情况下,我的教程也许会对你有很大帮助

OBJ文件是一种文本文件格式,这就意味着你可以直接用写字板打开进行查看修改,如果你能看懂每一行的内容是什么意思,相信距离你成功的解决问题已经不远了。

OBJ文件是Wavefront公司为它的一套基于工作站的3D建模和动画软件"Advanced Visualizer"开发的一种文件格式。 

  OBJ新版本是v3.0,代替以前的v2.11版本。 

  OBJ3.0格式支持多边形(Polygon),直线(Lines),表面(Surfaces),和自由形态曲线(Free-form Curves)。 

直线和多角形通过它们的点来描述,曲线和表面则根据于它们的控制点和依附于曲线类型的额外信息来定义。这些信息支持规则和不规则的曲线,包括那些基于贝塞尔(Bezier)曲线,B样条(B-spline),基数(Cardinal/Catmull-Rom样条),和泰勒方程(Taylor equations)的曲线。 

   OBJ文件 — 特点 

  (1)OBJ是一种3D模型文件,因此不包含动画、材质特性、贴图路径、动力学、粒子等信息。 

  (2)OBJ文件主要支持多边形(Polygons)模型。 

  (3)OBJ文件支持三个点以上的面。

(4)OBJ文件支持法线和贴图坐标。

OBJ文件不支持有孔的多边形面 

OBJ文件不包含面的颜色定义信息,不过可以引用材质库,材质库信息储存在一个后缀是".mtl"的独立文件中。关键字"mtllib"即材质库的意思。材质库中包含材质的漫射(diffuse),环境(ambient),光泽(specular)的定义值,   "usemtl"指定了材质之后,以后的面都是使用这一材质,直到遇到下一个"usemtl"来指定新的材质。 

OBJ文件 — 基本结构 

OBJ文件由一行行文本组成,注释行以一个“井”号(#)为开头,空格和空行可以随意加到文件中以增加文件的可读性。有字的行都由一两个标记字母也就是关键字(Keyword)开头,关键字可以说明这一行是什么样的数据。多行可以逻辑地连接在一起表示一行,方法是在每一行最后添加一个连接符(/)。 

注意连接符(/)后面不能出现空格或tab格,否则将导致文件出错。 

  下列关键字可以在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)

 

### 回答1: gltf格式obj格式都是一种用于3D模型存储和传输的文件格式。gltf(即GL Transmission Format)是一种基于JSON的格式,可以包含3D模型的几何信息、材质、动画等。而obj格式是一种简单的文本格式,将3D模型的顶点、面和纹理坐标等信息按照一定的规则进行编码。 要将gltf格式换为obj格式,需要借助于相应的换工具或代码库。以下是一个简单的步骤指南: 1. 下载和安装一个支持gltfobj的工具或代码库,例如Blender、assimp等。这些工具通常支持多种3D模型格式换和处理。 2. 打开工具,导入gltf文件。根据工具的使用说明,选择导入gltf文件的选项。 3. 对导入的3D模型进行相应的处理和调整,例如旋、缩放等。这一步可选,根据需要进行调整。 4. 选择导出为obj文件的选项,并指定导出文件的路径和名称。 5. 确认设置并导出文件。这一步可能需要一些时间,具体取决于模型的复杂性和计算机的性能。 6. 完成后,你将得到一个换后的obj文件,其中包含gltf模型的几何信息、材质和纹理坐标等。 需要注意的是,由于gltf和obj格式的差异,换过程中可能会有一些信息的丢失或不兼容的问题。换后的obj文件可能不包含完整的动画信息,并且可能需要进行一些手动的后期处理来调整模型的材质和纹理。 综上所述,将gltf格式换为obj格式需要使用相应的工具或代码库,并通过导入、处理和导出等步骤完成换。 ### 回答2: GLTF(GL Transmission Format)是一种用于在3D场景中交换和加载模型的开放标准格式。而OBJ(Wavefront OBJ)是一种常见的3D模型文件格式。 要将GLTF格式换成OBJ格式,可以使用一些软件工具或编程库来实现。下面我将介绍一种可能的换方法。 首先,我们可以使用Python编程语言中的gltf2glb库将GLTF格式换成GLB(binary glTF)格式文件。GLB是GLTF的二进制形式,更适合换为其他格式。 然后,我们可以使用Blender这样的3D建模和渲染软件来加载GLB文件,并将其另存为OBJ格式。Blender是一个强大的免费开源软件,支持多种3D文件格式的导入和导出。 具体步骤如下: 1. 在Python中使用gltf2glb库将GLTF格式换成GLB格式。 2. 打开Blender软件,并导入换后的GLB文件。 3. 在Blender中进行必要的编辑和调整,以确保模型准备就绪。 4. 选择导出选项,将模型以OBJ格式导出。 需要注意的是,换过程可能会根据软件版本和使用的工具而略有不同。因此,根据具体情况可能需要进行一些适应性的调整。 通过这种方法,我们可以将GLTF格式换成OBJ格式。这样做的好处是,OBJ格式在许多3D建模和渲染软件中广泛支持,方便进一步的处理和应用。 ### 回答3: gltf格式obj格式都是常用的三维模型文件格式。gltf是一种开放标准的三维模型文件格式,可以包含模型的几何形状、材质信息以及动画等数据,并支持渲染和交互。而obj格式是一个简单的文本文件格式,主要用于存储三维模型的顶点、面片、纹理坐标等基本信息。 要将gltf格式换为obj格式,需要借助一些工具或软件。以下是一种常见的换方法: 1. 首先,需要找到一个支持gltf和obj格式换的工具。有一些开源的软件如Blender、Assimp等可以完成此任务。 2. 下载并安装选择的软件,并打开它。 3. 在软件中,导入gltf文件。可以通过点击“导入”或“导入模型”等按钮,在弹出的对话框中选择gltf文件并确认导入。 4. 在导入gltf文件后,选中模型并查找导出选项。通常可以在菜单栏的“文件”或“导出”选项中找到。 5. 确认导出选项后,选择导出为obj格式。有时还可以选择其它的导出选项,如纹理坐标、法线等。 6. 设置导出路径和文件名,并确认导出。软件将会将gltf文件换为obj格式,并保存到指定的路径中。 7. 完成换后,可以通过查找指定的导出路径,找到生成的obj文件。 需要注意的是,换结果可能因为软件版本、模型复杂度等因素而有所不同。有时可能需要进行一些调整和优化以满足您的需求。 总结来说,将gltf格式换为obj格式是一个相对简单的过程,可以通过选择合适的工具或软件,按照上述步骤进行操作即可完成换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值