对.obj的初了解


概述

3D模型 文件格式适合用于3D软件模型之间的互导,也可以通过Maya读写。我们可以 在3dsMax或LightWave中建立一个模型, 导出OBJ文件后,可以 把它调到Maya里面渲染或动画。目前几乎所有知名的3D软件都支持OBJ文件的读写,不过其中很多需要通过 插件 才能实现。

OBJ文件是一种文本文件,可以直接用 写字板 打开进行查看和编辑修改。

.obj文件的特点
OBJ3.0 文件格式 支持直线(Line)、多边形(Polygon)、表面(Surface)和自由形态 曲线 (Free-form Curve)。直线和多边形通过它们的点来描述, 曲线 和表面则根据它们的控制点和依附于曲线类型的额外信息来定义,这些信息支持规则和不规则的曲线,包括那些基于 贝塞尔曲线 (Bezier)、 B样条 (B-spline)、基数(Cardinal/Catmull-Rom)和 泰勒 方程(Taylor equations)的曲线。其他特点如下:
(1)OBJ文件是一种3D模型文件。不包含动画、材质特性、 贴图 路径、动力学、粒子等信息。
(2)OBJ文件主要支持多边形(Polygons)模型。虽然也支持 曲线( Curves)、表面(Surfaces)、点组材质(Point Group Materials),但Maya导出的OBJ文件并不包括这些信息。
(3)OBJ文件支持三个点以上的面,这一点很有用。很多其它的模型 文件格式 只支持三个点的面,所以导入Maya的模型经常被三角化了,这对于我们对模型进行再加工甚为不利。
(4)OBJ文件支持法线和 贴图 坐标。在其它软件中调整好 贴图 后,贴图坐标信息可以存入OBJ文件中,这样文件导入Maya后只需指定一下贴图文件路径就行了,不需要再调整贴图坐标。

.obj文件的基本结构
OBJ文件不需要任何种 文件头(File Header),尽管经常使用几行文件信息的注释作为文件的开头。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)
OBJ文件不包含面的颜色定义信息,不过可以引用材质库,材质库信息储存在一个后缀是 ".mtl"的独立文件 中。关键字" mtllib "即材质库的意思。 (例如语句   mtllib name.mtl
材质库中包含材质的漫射(diffuse),环境(ambient),光泽(specular)的RGB(红绿蓝)的定义值,以及反射(specularity),折射(refraction),透明度(transparency)等其它特征。
"usemtl"指定了材质之后,以后的面都是使用这一材质,直到遇到下一个"usemtl"来指定新的材质。

参考:

扩展:注意在对应的.mtl文件里存在一个相应的贴图文件(例如:.bmp图片)路径。

 ​为实现使用.obj文件进行纹理贴图,即 用ObjLoader类加载.obj格式文件时,需要在工程目录下含有以下内容:
相应的.obj文件、对应的.mtl文件以及在.mtl文件里指定路径下应含有的贴图图片

概述

3D模型 文件格式适合用于3D软件模型之间的互导,也可以通过Maya读写。我们可以 在3dsMax或LightWave中建立一个模型, 导出OBJ文件后,可以 把它调到Maya里面渲染或动画。目前几乎所有知名的3D软件都支持OBJ文件的读写,不过其中很多需要通过 插件 才能实现。

OBJ文件是一种文本文件,可以直接用 写字板 打开进行查看和编辑修改。

.obj文件的特点
OBJ3.0 文件格式 支持直线(Line)、多边形(Polygon)、表面(Surface)和自由形态 曲线 (Free-form Curve)。直线和多边形通过它们的点来描述, 曲线 和表面则根据它们的控制点和依附于曲线类型的额外信息来定义,这些信息支持规则和不规则的曲线,包括那些基于 贝塞尔曲线 (Bezier)、 B样条 (B-spline)、基数(Cardinal/Catmull-Rom)和 泰勒 方程(Taylor equations)的曲线。其他特点如下:
(1)OBJ文件是一种3D模型文件。不包含动画、材质特性、 贴图 路径、动力学、粒子等信息。
(2)OBJ文件主要支持多边形(Polygons)模型。虽然也支持 曲线( Curves)、表面(Surfaces)、点组材质(Point Group Materials),但Maya导出的OBJ文件并不包括这些信息。
(3)OBJ文件支持三个点以上的面,这一点很有用。很多其它的模型 文件格式 只支持三个点的面,所以导入Maya的模型经常被三角化了,这对于我们对模型进行再加工甚为不利。
(4)OBJ文件支持法线和 贴图 坐标。在其它软件中调整好 贴图 后,贴图坐标信息可以存入OBJ文件中,这样文件导入Maya后只需指定一下贴图文件路径就行了,不需要再调整贴图坐标。

.obj文件的基本结构
OBJ文件不需要任何种 文件头(File Header),尽管经常使用几行文件信息的注释作为文件的开头。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)
OBJ文件不包含面的颜色定义信息,不过可以引用材质库,材质库信息储存在一个后缀是 ".mtl"的独立文件 中。关键字" mtllib "即材质库的意思。 (例如语句   mtllib name.mtl
材质库中包含材质的漫射(diffuse),环境(ambient),光泽(specular)的RGB(红绿蓝)的定义值,以及反射(specularity),折射(refraction),透明度(transparency)等其它特征。
"usemtl"指定了材质之后,以后的面都是使用这一材质,直到遇到下一个"usemtl"来指定新的材质。

参考:

扩展:注意在对应的.mtl文件里存在一个相应的贴图文件(例如:.bmp图片)路径。

 ​为实现使用.obj文件进行纹理贴图,即 用ObjLoader类加载.obj格式文件时,需要在工程目录下含有以下内容:
相应的.obj文件、对应的.mtl文件以及在.mtl文件里指定路径下应含有的贴图图片
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值