obj格式简介

我们经常见到的*.obj文件有两种:第一种是基于COFF(Common Object File Format)格式的OBJ文件(也称目标文件),这种格式用于编译应用程序;第二种是Alias|Wavefront公司推出的OBJ模型文件。我要讲的OBJ文件格式是指第二种-OBJ模型文件。 <BR>   说起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)

(0)

相关推荐

  • obj格式简介

    我们经常见到的*.obj文件有两种:第一种是基于COFF(Common Object File Format)格式的OBJ文件(也称目标文件),这种格式用于编译应用程序:第二种是Alias|Wavefront公司推出的OBJ模型文件.我要讲的OBJ文件格式是指第二种-OBJ模型文件. <BR>  说起3D文件格式,大家一定不会感到陌生,"*.3ds","*.max","*.lw","*.mb","*.dx

  • Linux中Oracle数据库备份

    先来介绍一些不使用脚本我们直接使用命令备份与还原oracle数据库Oracle数据备份:步骤 1 备份用户数据.1.使用linux系统下的数据库管理员账号连接linux终端.2. 执行以下语句,创建"bak_dir"文件夹. 复制代码 代码如下: mkdir bak_dir 3. 执行以下语句,为"bak_dir"文件夹赋予读.写和执行权限. 复制代码 代码如下: chmod 777 bak_dir 4. 执行以下语句,以sysdba用户登录oracle数据库服务器

  • 创建mysql表分区的方法

    表分区是最近才知道的哦 ,以前自己做都是分表来实现上亿级别的数据了,下面我来给大家介绍一下mysql表分区创建与使用吧,希望对各位同学会有所帮助.表分区的测试使用,主要内容来自于其他博客文章以及mysql5.1的参考手册mysql测试版本:mysql5.5.28mysql物理存储文件(有mysql配置的datadir决定存储路径)格式简介数据库engine为MYISAM frm表结构文件,myd表数据文件,myi表索引文件.INNODB engine对应的表物理存储文件innodb的数据库的物理

  • 卡巴斯基(AVP)内存驻留型病毒检测方法

    author:killer  <killer②uid0.net> 卡巴斯基反病毒软件(Kaspersky Antivirus),以前叫AntiViral Toolkit Pro(AVP),出于习惯和简单,这里一律称为AVP或KAV. 学习AVP的检测办法的意义一方面在于AVP的检测方法是经过理论验证和实践考验的科学合理的方法,另外DOS年代过来的朋友对于反病毒有过这样的经验:"机子感染病毒了?好,请用干净无毒的系统盘启动,然后全盘查杀.",我记得CIH横行那会,一个朋友让我

  • 详解Android开发之MP4文件转GIF文件

    一 基本实现原理 在介绍具体实现过程之前,先简单说下基本原理和实现步骤,在解决相对比较复杂的问题,我习惯先理清主要原理步骤,不要一开始就被繁琐细节绊住,待具体实现时再逐个攻破.下面是主要步骤: 1.视频文件的读取:包括录制和本地文件读取 2.将需要转换的视频部分解析为 Bitmap 序列 3.将解析好的 Bitmap 序列编码生成 GIF 文件 二 视频文件的读取 视频文件的读取比较简单,没什么特别需要说的地方,这里简单贴出视频读取的核心部分代码,详细实现可以Google一下就行了. priva

  • Tensorflow中使用tfrecord方式读取数据的方法

    前言 本博客默认读者对神经网络与Tensorflow有一定了解,对其中的一些术语不再做具体解释.并且本博客主要以图片数据为例进行介绍,如有错误,敬请斧正. 使用Tensorflow训练神经网络时,我们可以用多种方式来读取自己的数据.如果数据集比较小,而且内存足够大,可以选择直接将所有数据读进内存,然后每次取一个batch的数据出来.如果数据较多,可以每次直接从硬盘中进行读取,不过这种方式的读取效率就比较低了.此篇博客就主要讲一下Tensorflow官方推荐的一种较为高效的数据读取方式--tfre

  • Three.js加载外部模型的教程详解

    1.  首先我们要在官网: https://threejs.org/ 下载我们three.js压缩包,并将其中的build文件夹下的three.js通过script标签对的src属性导入到我们的页面中 2.  创建three.js核心对象 Scene(场景) Camera(相机) Light(光源) Mesh(模型) Renderer(渲染器) 最后一步就是渲染显示在我们的页面上了renderer.render(scene,camera) 3.  OBJ模型的导入 <script type=&quo

  • Android音频编辑之音频转换PCM与WAV

    前言 本篇开始讲解在Android平台上进行的音频编辑开发,首先需要对音频相关概念有基础的认识.所以本篇要讲解以下内容: 1. 常用音频格式简介 2. WAV和PCM的区别和联系 3. WAV文件头信息 4. 采样率简介 5. 声道数和采样位数下的PCM编码 6. 音频文件解码 7. PCM文件转WAV文件 现在先给出音频编辑的效果图,看看能不能提高大家的积极性~,哈哈 常用音频格式简介 在Android平台上进行音频开发,首先需要对常用的音频格式有个大致的了解.在Android平台上,常用的音

  • 基于three.js实现的3D粒子动效实例代码

    一.背景 粒子特效是为模拟现实中的水.火.雾.气等效果由各种三维软件开发的制作模块,原理是将无数的单个粒子组合使其呈现出固定形态,借由控制器.脚本来控制其整体或单个的运动,模拟出现真实的效果.three.js是用JavaScript编写的WebGL的第三方库,three.js提供了丰富的API帮助我们去实现3D动效,本文主要介绍如何使用three.js实现粒子过渡效果,以及基本的鼠标交互操作. (注:本文使用的关于three.js的API都是基于版本r98的.) 二.实现步骤 1. 创建渲染场景

  • Vue使用Three.js加载glTF模型的方法详解

    前言 Three.js是一个跨浏览器的脚本,使用JavaScript函数库或API来在网页浏览器中创建和展示动画的三维计算机图形,基于WebGL实现,对WebGL进行了进一步的封装,简化了多数复杂的接口. Three.js支持包括 .obj..gltf等类型的模型结构.glTF(GL传输格式)是Khronos的一个开放项目,它为3D资产提供了一种通用的.可扩展的格式,这种格式既高效又与现代web技术高度互操作. obj格式的模型只支持顶点.法线.纹理坐标和基本材质,而glTF模型除上述所有内容外

随机推荐