关键词不能为空

当前您在: 主页 > 英语 >

Obj与mtl文件格式详解

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-01 22:06
tags:

-

2021年2月1日发(作者:district)


Obj



mtl


文件格 式详解



obj


文件格式是

< p>
Wavefront


公司为它的一套基


于工作站的


3D


建模和动画软件


< br>Visualizer


开发的一种文件格式。



OBJ


文件是一种标准的


3D

< br>模型文件格式,



适合用于


3D


软件模型之间的互导。


OBJ


文件


是一种文本文件格式,


这就意味着你可以直接


用写字板打开进行查看修改。


目前几乎所有知


名的

< p>
3D


软件都支持


OBJ


文 件的读写,不过


很多软件需要通过插件才能


< br>做到这一点。另


外,


作为一种优秀的文件格式,


很多游戏引擎


也都支持


OBJ

< br>文件。



OBJ3.0






< p>



(Polygon)




线


(Lines)


,表面


(Surfaces)


,和自由形态曲线


(Free-form


Curves)


。直 线和多角形通过它们


的点来描述,


曲线和表面则根据于它们的控 制


点和依附于曲线类型的额外信息来定义。


这些


信息支持规则和不规则的曲线,


包括那些基于


贝塞尔< /p>



(Bezier)


曲线,


B


样条


(B-spline)



基数


(Cardinal/Catmull-Rom


样条


)


,和泰勒方程


(Taylor equations)


的曲线。




OBJ


文件特点





-1-


OBJ


是一种


3D


模型文件,因此不包


含动画、材质特性、贴图路径、动力学、粒子


等信息。





-2-


OBJ


文件主要支持多边形


(Polygo ns)


模型。



虽然


OBJ


文件也支持曲线


(Curves)


、表面


(Surfaces)






(Point


Group


Materials)

< p>
,但


Maya


导出的


OB J


文件并不包


括这些信息。





-3- OBJ

< br>文件支持三个点以上的面,这一


点很有用。



很多其它的模型文件格式只支持三个点的面,


所以我们导入


Maya


的模型经常被三角化了,


这对于我们对模型 的再加工甚为不利。









-4- OBJ


文件支持法线和贴图坐标。




OBJ


文件基本结构



OBJ


文件不需要任何种文件头


(File Head er)



尽管经常使用几行文件信息的注释作为文件

< p>
的开头。


OBJ


文件由一行行文本组成,注释< /p>


行以一个






(#)


为开头,

空格和空行可以随


意加到文件中以增加文件的可读性。


有字 的行


















(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



线

< br>或







(Curve


or


surface type)




元素


(Elements):




p




(Point)




l


线



(Line)




f




(Face)




curv


曲线



(Curve)




curv2 2D


曲线



(2D curve)




surf


表面



(Surface)




自由形态曲线


(Free-form


curve)/


表面主体


陈述


(sur face 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)




v -0.500000 0.500000 0.500000




v 0.500000 0.500000 0.500000




v -0.500000 0.500000 -0.500000




v 0.500000 0.500000 -0.500000




v -0.500000 -0.500000 -0.500000




v 0.500000 -0.500000 -0.500000




vt 0.000000 0.000000




vt 1.000000 0.000000




vt 0.000000 1.000000




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)





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




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



***********




Maya


导出的


OBJ


文件


:







Maya


中创建一个多边形立方体


,


选中



这个立方体,导出格式为


OBJ


,文件名为




(如果没有此格式,请在


Plug- in



Manager


中载入



用写字板打








可以看到如下代码:








#


The


units


used


in


this


file


are



centimeters.





g default





v -0.500000 -0.500000 0.500000





v 0.500000 -0.500000 0.500000


vt 1.000000 1.000000


vt 0.000000 2.000000


vt 1.000000 2.000000


vt 0.000000 3.000000


vt 1.000000 3.000000


vt 0.000000 4.000000


vt 1.000000 4.000000


vt 2.000000 0.000000


vt 2.000000 1.000000


vt -1.000000 0.000000


vt -1.000000 1.000000


vn 0.000000 0.000000 1.000000


vn 0.000000 0.000000 1.000000


vn 0.000000 0.000000 1.000000


vn 0.000000 0.000000 1.000000


vn 0.000000 1.000000 0.000000


vn 0.000000 1.000000 0.000000


vn 0.000000 1.000000 0.000000


vn 0.000000 1.000000 0.000000


vn 0.000000 0.000000 -1.000000


vn 0.000000 0.000000 -1.000000


vn 0.000000 0.000000 -1.000000


vn 0.000000 0.000000 -1.000000


vn 0.000000 -1.000000 0.000000


vn 0.000000 -1.000000 0.000000


vn 0.000000 -1.000000 0.000000


vn 0.000000 -1.000000 0.000000


vn 1.000000 0.000000 0.000000


vn 1.000000 0.000000 0.000000


vn 1.000000 0.000000 0.000000


vn 1.000000 0.000000 0.000000


vn -1.000000 0.000000 0.000000


vn -1.000000 0.000000 0.000000


vn -1.000000 0.000000 0.000000


vn -1.000000 0.000000 0.000000







































s off




g pCube1




usemtl initialShadingGroup




f 1/1/1 2/2/2 4/4/3 3/3/4




f 3/3/5 4/4/6 6/6/7 5/5/8




f 5/5/9 6/6/10 8/8/11 7/7/12




f 7/7/13 8/8/14 2/10/15 1/9/16




f 2/2/17 8/11/18 6/12/19 4/4/20




f 7/13/21 1/1/22 3/3/23 5/14/24




这个文件看起来稍复杂一些,


用到了许多


关键 词,


你可以对照前面的列表查看一下每个


关键词的意思。





解释一下:






1.000000


0.000000


这句



代表点


的贴图坐标。






这句



代表点的法线。






表示关闭光滑组。






表示使用 的


材质。






这时在面的数据中多了贴图坐



uv


点和法线的索引号,索引号分别用左斜


线


(/)


隔开。





格式:


顶点索引


/uv


点索引

< p>
/


法线索引



< p>





表示组,这里的成组与


Maya










里< /p>









pCube1< /p>


后出现的面都结合到一起,


组成一个


整的 多边形几何体。







文件修改一下就知道成组的


意思了。把



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


代码:





usemtl initialShadingGroup




g pCube_Face1




f 1/1/1 2/2/2 4/4/3 3/3/4




g pCube_Face2




f 3/3/5 4/4/6 6/6/7 5/5/8




g pCube_Face3




f 5/5/9 6/6/10 8/8/11 7/7/12




g pCube_Face4




f 7/7/13 8/8/14 2/10/15 1/9/16




g pCube_Face5




f 2/2/17 8/11/18 6/12/19 4/4/20




g pCube_Face6




f 7/13/21 1/1/22 3/3/23 5/14/24




导入


Maya


后可以看到,


立方体的每个面









< br>的








,可见组的名称其实就是


单独几何体的名称。



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


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


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


用中文

< br>命名几何体


(



)


并不总是顺利,





方体面


1


这行改为


< /p>


选择



再试试看,


这回导


入时模型根本无法出现,


只会出现如下的错误

< p>
信息:





// Error: line 1: Your OBJ file contains a


line


which


is


too


long


to


be


parsed.


Please


edit your obj file. //




// Error: line 1: Error reading file. //


由此可见,物体 命名的不规范也是导致


OBJ


文件出错的原因之一。

< p>
关于


Maya


的物体命名,


英文名是很保险的,


标点符号中只有下划线


(_)

< p>
可用,


数字不能用放到名称的开头,


尽量不要


用中、日、韩等双字节文字。




OBJ


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


举个例子:





选择



Maya


的创建多边形工具


(Polygons


-> Create Polyon Tool)



在视图中画一个四边


形,


不要按回车,



Ctr l


在四边形中间点一下,


可以继续在四边形中挖一个洞。


把这个有孔的


多边形存成


OBJ


格式,在导入



Maya


时 ,会


发现多边形少了一块。如果你把这也看成错


误,

< p>
现在至少你已经知道错误的原因了,


就是


OBJ< /p>


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




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


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


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


OBJ


文件不包含面的颜色定义信息,


不过可 以


引用


材质库


,材质库信息储存在一个 后缀是



的独立文件中。关键字



即材质库


的意思。





材质库中包含材质的漫射


(diff use)


,环境


(ambient)


, 光泽


(specular)



RGB(


红绿蓝


)











(spec ularity)





(refraction)


,透明度


(transp arency)


等其它特


征。






指定了材 质之后,以后的面都是


使用这一材质,直到遇到下一个



来指


定新的材质。





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





Cube with Materials






# This cube has a different material




# applied to each of its faces.




mtllib




v 0.000000 2.000000 2.000000




v 0.000000 0.000000 2.000000




v 2.000000 0.000000 2.000000




v 2.000000 2.000000 2.000000




v 0.000000 2.000000 0.000000




v 0.000000 0.000000 0.000000




v 2.000000 0.000000 0.000000




v 2.000000 2.000000 0.000000




# 8 vertices




g front




usemtl red




f 1 2 3 4




g back




usemtl blue




f 8 7 6 5




g right




usemtl green




f 4 3 7 8




g top




usemtl gold




f 5 1 4 8




g left




usemtl orange




f 5 6 2 1




g bottom




usemtl purple




f 2 6 7 3




# 6 elements


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


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


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


贝塞尔片面


(Bezier Patch)






Maya


不能导出

< br>OBJ


格式的贝塞尔片面,


却能够导入它。


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


Nurbs


表面。





# 3.0 Bezier patch




v -5.000000 -5.000000 0.000000




v -5.000000 -1.666667 0.000000




v -5.000000 1.666667 0.000000




v -5.000000 5.000000 0.000000




v -1.666667 -5.000000 0.000000




v -1.666667 -1.666667 0.000000




v -1.666667 1.666667 0.000000




v -1.666667 5.000000 0.000000




v 1.666667 -5.000000 0.000000




v 1.666667 -1.666667 0.000000




v 1.666667 1.666667 0.000000




v 1.666667 5.000000 0.000000




v 5.000000 -5.000000 0.000000




v 5.000000 -1.666667 0.000000




v 5.000000 1.666667 0.000000




v 5.000000 5.000000 0.000000




# 16 vertices




cstype bezier




deg 3 3




# Example of line continuation




surf


0.000000


1.000000


0.000000


1.000000 13 14




15 16 9 10 11 12 5 6 7 8 1 2 3 4




parm u 0.000000 1.000000




parm v 0.000000 1.000000




end






# 1 element


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


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


******** ***


基数曲线


(Cardinal Curve)






Maya


好像不支持


OBJ


格式的曲线,


导入


时不 会出现错误信息,却也不会出现曲线。





# 3.0 Cardinal curve




v 0.940000 1.340000 0.000000




v -0.670000 0.820000 0.000000




v -0.770000 -0.940000 0.000000




v 1.030000 -1.350000 0.000000




v 3.070000 -1.310000 0.000000




# 6 vertices




cstype cardinal




deg 3




curv 0.000000 3.000000 1 2 3 4 5 6




parm


u


0.000000


1.000000


2.000000


3.000000 end

-


-


-


-


-


-


-


-



本文更新与2021-02-01 22:06,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/595428.html

Obj与mtl文件格式详解的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文