obj文件格式与mtl文件格式Word文件下载.docx

上传人:b****6 文档编号:20443006 上传时间:2023-01-23 格式:DOCX 页数:13 大小:23.11KB
下载 相关 举报
obj文件格式与mtl文件格式Word文件下载.docx_第1页
第1页 / 共13页
obj文件格式与mtl文件格式Word文件下载.docx_第2页
第2页 / 共13页
obj文件格式与mtl文件格式Word文件下载.docx_第3页
第3页 / 共13页
obj文件格式与mtl文件格式Word文件下载.docx_第4页
第4页 / 共13页
obj文件格式与mtl文件格式Word文件下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

obj文件格式与mtl文件格式Word文件下载.docx

《obj文件格式与mtl文件格式Word文件下载.docx》由会员分享,可在线阅读,更多相关《obj文件格式与mtl文件格式Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。

obj文件格式与mtl文件格式Word文件下载.docx

 顶点数据(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)

  curv22D曲线(2Dcurve)

  surf表面(Surface)

 自由形态曲线(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)

显示(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)

***************************************************************************************************************

Maya导出的OBJ文件:

  在Maya中创建一个多边形立方体,选中这个立方体,导出格式为OBJ,文件名为"

cube.obj"

.(如果没有此格式,请在Plug-inManager中载入"

objExport.mll"

)用写字板打开"

可以看到如下代码:

  #Theunitsusedinthisfilearecentimeters.

  gdefault

  v-0.500000-0.5000000.500000v(几何体顶点)

  v0.500000-0.5000000.500000

  v-0.5000000.5000000.500000

  v0.5000000.5000000.500000

  v-0.5000000.500000-0.500000

  v0.5000000.500000-0.500000

  v-0.500000-0.500000-0.500000

  v0.500000-0.500000-0.500000

  vt0.0000000.000000vt(贴图坐标点)

  vt1.0000000.000000

  vt0.0000001.000000

  vt1.0000001.000000

  vt0.0000002.000000

  vt1.0000002.000000

  vt0.0000003.000000

  vt1.0000003.000000

  vt0.0000004.000000

  vt1.0000004.000000

  vt2.0000000.000000

  vt2.0000001.000000

  vt-1.0000000.000000

  vt-1.0000001.000000

  vn0.0000000.0000001.000000vn(顶点法线)

  vn0.0000000.0000001.000000

  vn0.0000001.0000000.000000

  vn0.0000000.000000-1.000000

  vn0.000000-1.0000000.000000

  vn1.0000000.0000000.000000

  vn-1.0000000.0000000.000000

  soffs(光滑组组名称)

  gpCube1

  usemtlinitialShadingGroup

  f1/1/12/2/24/4/33/3/4f(面)

  f3/3/54/4/66/6/75/5/8

  f5/5/96/6/108/8/117/7/12

  f7/7/138/8/142/10/151/9/16

  f2/2/178/11/186/12/194/4/20

  f7/13/211/1/223/3/235/14/24

  这个文件看起来稍复杂一些,用到了许多关键词,你可以对照前面的列表查看一下每个关键词的意思。

  解释一下:

  "

vt1.0000000.000000"

这句"

vt"

代表点的贴图坐标。

vn0.0000000.000000-1.000000"

vn"

代表点的法线。

soff"

表示关闭光滑组。

usemtlinitialShadingGroup"

表示使用的材质。

f7/13/21"

这时在面的数据中多了贴图坐标uv点和法线的索引号,索引号分别用左斜线(/)隔开。

  格式:

"

f顶点索引/uv点索引/法线索引"

gpCube1"

表示组,这里的成组与Maya中的成组不一样,这里的成组是指把"

后出现的面都结合到一起,组成一个整的多边形几何体。

  把"

文件修改一下就知道成组的意思了。

把"

这句后面的代码替换成以下代码:

  gpCube_Face1

  f1/1/12/2/24/4/33/3/4

  gpCube_Face2

  gpCube_Face3

  gpCube_Face4

  gpCube_Face5

  gpCube_Face6

  导入Maya后可以看到,立方体的每个面是分离的,每个面的名称分别是"

pCube_Face(1~6)"

,可见组的名称其实就是单独几何体的名称。

*******************************************************************************************************************

用中文命名几何体(组)并不总是顺利,把"

g立方体面1"

这行改为"

g选择"

再试试看,这回导入时模型根本无法出现,只会出现如下的错误信息:

  //Error:

line1:

YourOBJfilecontainsalinewhichistoolongtobeparsed.Pleaseedityourobjfile.//

Errorreadingfile.//

由此可见,物体命名的不规范也是导致OBJ文件出错的原因之一。

关于Maya的物体命名,英文名是很保险的,标点符号中只有下划线(_)可用,数字不能用放到名称的开头,尽量不要用中、日、韩等双字节文字。

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

举个例子:

  选择Maya的创建多边形工具(Polygons->

CreatePolyonTool),在视图中画一个四边形,不要按回车,按Ctrl在四边形中间点一下,可以继续在四边形中挖一个洞。

把这个有孔的多边形存成OBJ格式,在导入Maya时,会发现多边形少了一块。

如果你把这也看成错误,现在至少你已经知道错误的原因了,就是OBJ文件不支持有孔的多边形面。

********************************************************************************************************************

OBJ文件不包含面的颜色定义信息,不过可以引用材质库,材质库信息储存在一个后缀是"

.mtl"

的独立文件中。

关键字"

mtllib"

即材质库的意思。

  材质库中包含材质的漫射(diffuse),环境(ambient),光泽(specular)的RGB(红绿蓝)的定义值,以及反射(specularity),折射(refraction),透明度(transparency)等其它特征。

usemtl"

指定了材质之后,以后的面都是使用这一材质,直到遇到下一个"

来指定新的材质。

  下面的例子说明了指定材质的方法。

  CubewithMaterials:

  #Thiscubehasadifferentmaterial

  #appliedtoeachofitsfaces.

  mtllibmaster.mtl

  v0.0000002.0000002.000000

  v0.0000000.0000002.000000

  v2.0000000.0000002.000000

  v2.0000002.0000002.000000

  v0.0000002.0000000.000000

  v0.0000000.0000000.000000

  v2.0000000.0000000.000000

  v2.0000002.0000000.000000

  #8vertices

  gfront

  usemtlred

  f1234

  gback

  usemtlblue

  f8765

  gright

  usemtlgreen

  f4378

  gtop

  usemtlgold

  f5148

  gleft

  usemtlorange

  f5621

  gbottom

  usemtlpurple

  f2673

  #6elements

贝塞尔片面(BezierPatch):

  Maya不能导出OBJ格式的贝塞尔片面,却能够导入它。

导入的贝塞尔片面自动转换为Nurbs表面。

  #3.0Bezierpatch

  v-5.000000-5.0000000.000000

  v-5.000000-1.6666670.000000

  v-5.0000001.6666670.000000

  v-5.0000005.0000000.000000

  v-1.666667-5.0000000.000000

  v-1.666667-1.6666670.000000

  v-1.6666671.6666670.000000

  v-1.6666675.0000000.000000

  v1.666667-5.0000000.000000

  v1.666667-1.6666670.000000

  v1.6666671.6666670.000000

  v1.6666675.0000000.000000

  v5.000000-5.0000000.000000

  v5.000000-1.6666670.000000

  v5.0000001.6666670.000000

  v5.0000005.0000000.000000

  #16vertices

  cstypebezier

  deg33

  #Exampleoflinecontinuation

  surf0.0000001.0000000.0000001.0000001314\

  1516910111256781234

  parmu0.0000001.000000

  parmv0.0000001.000000

  end 

  #1element

基数曲线(CardinalCurve):

  Maya好像不支持OBJ格式的曲线,导入时不会出现错误信息,却也不会出现曲线。

  #3.0Cardinalcurve

  v0.9400001.3400000.000000

  v-0.6700000.8200000.000000

  v-0.770000-0.9400000.000000

  v1.030000-1.3500000.000000

  v3.070000-1.3100000.000000

  #6vertices

  cstypecardinal

  deg3

  curv0.0000003.000000123456

  parmu0.0000001.0000002.0000003.000000end

******************************************************************************************************************

贴图映射(Texture-Mapped):

  #A2x2squaremappedwitha1x1square

  #texturestretchedtofitthesquareexactly.

  vt0.0000001.0000000.000000

  vt0.0000000.0000000.000000

  vt1.0000000.0000000.000000

  vt1.0000001.0000000.000000

  #4vertices

  usemtlwood

  #Thefirstnumberisthepoint,

  #thentheslash,

  #andthesecondisthetexturepoint

  f1/12/23/34/4

***********************************************************************************************************

说下顶点索引吧。

我们知道,对于每一个三角形,都需要用3个顶点来表示。

例如在上面的立方体模型中,一共有6×

3=36个顶点。

仔细想想就会知道,在这36个顶点中,又相当数量的顶点是重合的。

如果把这些重合的顶点都一一表示出来,就太浪费存储空间了。

于是,我们提出了顶点索引的想法,解决空间占用问题。

顶点索引的思想是建立两个数组,一个数组用于存储模型中所有的顶点坐标值,另一个数组则存储每一个表面所对应的三个顶点在第一个数组中的索引。

建立这样的顶点索引显然更加节约存储空间。

假设Indices:

arrayofInteger是顶点索引数组,Vertices:

arrayofTVertex是顶点数组,使用下面的代码段就可以把整个顶点索引对应的所有三角形绘制出来:

procedureDrawIndex(Indices:

arrayofInteger;

Vertices:

arrayofTVertex);

vari:

Integer;

begin

glBegin(GL_TRIANGLES);

fori:

=0to(High(Vertices)+1)div3-1do

begin

glVertex3fv(@Vertices[Ind

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 书信模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1