欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

.obj 和 .mtl格式详解

程序员文章站 2022-05-18 15:33:21
obj文件是3D模型文件格式。由Alias|Wavefront公司为3D建模和动画软件"Advanced Visualizer"开发的一种标准,适合用于3D软件模型之间的互导,也可以通过Maya读写。 + 只支持模型三角面数据和材质信息,无动画功能支持; + 其中几何信息由.obj文件提供,材质信息 ......

obj文件是3d模型文件格式。由alias|wavefront公司为3d建模和动画软件"advanced visualizer"开发的一种标准,适合用于3d软件模型之间的互导,也可以通过maya读写。

  • 只支持模型三角面数据和材质信息,无动画功能支持;
  • 其中几何信息由.obj文件提供,材质信息由.mtl文件定义;
  • 文件以行为单位表示一条数据,可以根据行开头的字符判断后续的内容;
  • 其中 # 字符表示注释行

obj格式

# obj对应的材质文件
# mtllib testvt.mtl
# 组名称
g default
# o 对象名称(object name)
o testvt.obj
# 顶点
v -0.5 -0.5 0.1
v -0.5 -0.5 -0.1
v 0 0.5 0.1
v 0 0.5 -0.1
v 0.5 -0.5 0.1
v 0.5 -0.5 -0.1
# 纹理坐标
vt 0 1
vt 1 1
vt 0.5 0
# 顶点法线
vn 0 0 1
vn 0 0 -1
# 当前图元所用材质
usemtl default
# s smooth shading across polygons is enabled by smoothing groups.
# smooth shading can be disabled as well.
s off
# v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3(索引起始于1)    
f 1/1/1 5/2/1 3/3/1
f 6/2/2 2/1/2 4/3/2

mtl格式

# 定义一个名为 'xxx'的材质
newmtl xxx
# 材质的环境光(ambient color)
ka 0 0 0
# 散射光(diffuse color)用kd
kd 0.784314 0.784314 0.784314
# 镜面光(specular color)用ks
ks 0 0 0
# 折射值 可在0.001到10之间进行取值。若取值为1.0,光在通过物体的时候不发生弯曲。玻璃的折射率为1.5。
ni 1
# 反射指数 定义了反射高光度。该值越高则高光越密集,一般取值范围在0~1000。
ns 400
# 滤光透射率
tf 1 1 1
# 渐隐指数描述 参数factor表示物体融入背景的数量,取值范围为0.0~1.0,取值为1.0表示完全不透明,取值为0.0时表示完全透明。
d 1
# 为漫反射指定颜色纹理文件
map_kd test_vt.bmp

参考:
https://baike.baidu.com/item/obj%e6%96%87%e4%bb%b6/3574019
https://en.wikipedia.org/wiki/wavefront_.obj_file

========== the end ==========

.obj 和 .mtl格式详解