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

DirectX2D/3D:论OBJ模型文件格式

程序员文章站 2022-03-26 17:25:35
...

一.OBJ文件简介

obj文件不包含面的颜色定义信息,可以引用材质库存储在一个.mtl的文件中(mtllib 材质库),材质库包含了材质的漫射(diffuse) 环境(ambient)  光泽(specular)  反射(specularity)  折射(refraction)  透明度(transparency)等

obj文件包含UV数据,但不包含材质特性及路径等,不包含动画 例子和动力学信息

obj3.0格式支持多边形(Polygon) 直线(Lines)  表面(Surfaces)和*形态曲线(Free-form Curves)

 

二.OBJ文件基本结构

1.顶点数据(Vertex data):

  • v 几何体顶点(Geometric vertices)
  • vt 贴图坐标点(Vertex normals)
  • vp 参数空格顶点(Parameter space vertices)

2.*形态曲线(Free-form curve)/表面属性(surface attributes):

  • deg 度(Degree)
  • bmat 基本矩阵(Basis matrix)
  • step 步尺寸(Step size)
  • cstype 曲线或表面类型(Curve or surface type)

3.元素

  • p 点(Point)
  • l 线(Line)
  • f 面(Face)
  • curv 曲线(Curve)
  • curv2 2D曲线(2D curve)
  • surf 表面(Surface)

4.*形态曲线(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)

5.*形态表面之间的(Connectivity between free-form surfaces):

  • con 连接(Connect)

6.成组(Grouping):

  • g 组名称(Group name)
  • s 光滑组(Smoothing group)
  • mg 合并组(Merging group)
  • o 对象名称(Object name)

7.显示(Dispaly)/渲染属性(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文件实例

下面obj文件是一个长方体,包含了基本信息(不含贴图)

# object Box01  代表注释信息

v  -36.2848 0.0000 7.8963  代表顶点坐标
vn 0.0000 -1.0000 -0.0000  代表顶点法线坐标

vt 1.0000 0.0000 0.0000  代表贴图坐标

g Box01 代表组

s 2  代表光滑组

f 1/1/1 2/2/1 3/3/1 4/4/1  表示面 顶点索引 贴图(uv)索引 法线索引

# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
# 创建的文件:21.05.2019 11:16:45

#
# object Box01
#

v  -36.2848 0.0000 7.8963
v  -36.2848 0.0000 -26.2606
v  24.2100 0.0000 -26.2606
v  24.2100 0.0000 7.8963
v  -36.2848 26.3326 7.8963
v  24.2100 26.3326 7.8963
v  24.2100 26.3326 -26.2606
v  -36.2848 26.3326 -26.2606
# 8 vertices

vn 0.0000 -1.0000 -0.0000
vn 0.0000 1.0000 -0.0000
vn 0.0000 0.0000 1.0000
vn 1.0000 0.0000 -0.0000
vn 0.0000 0.0000 -1.0000
vn -1.0000 0.0000 -0.0000
# 6 vertex normals

vt 1.0000 0.0000 0.0000
vt 1.0000 1.0000 0.0000
vt 0.0000 1.0000 0.0000
vt 0.0000 0.0000 0.0000
# 4 texture coords

g Box01
s 2
f 1/1/1 2/2/1 3/3/1 4/4/1 
s 4
f 5/4/2 6/1/2 7/2/2 8/3/2 
s 8
f 1/4/3 4/1/3 6/2/3 5/3/3 
s 16
f 4/4/4 3/1/4 7/2/4 6/3/4 
s 32
f 3/4/5 2/1/5 8/2/5 7/3/5 
s 64
f 2/4/6 1/1/6 5/2/6 8/3/6 
# 6 polygons