obj文件格式与mtl文件格式Word文件下载.docx
- 文档编号:20443006
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:13
- 大小:23.11KB
obj文件格式与mtl文件格式Word文件下载.docx
《obj文件格式与mtl文件格式Word文件下载.docx》由会员分享,可在线阅读,更多相关《obj文件格式与mtl文件格式Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
顶点数据(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×
2×
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- obj 文件格式 mtl