编辑: 笔墨随风 | 2013-01-08 |
2 OBJ文件的输入和处理 OBJ文件是 A lias/W avefront公司开发的三维 动画软件 Maya的一种数据输出类型 ,它定义了对 象的几何和其它的一些特性.由于它的文件结构 非常简单 ,所以适合在应用程序中读取或进行 3D 文件格式转换 [
3 ] . 2.
1 OBJ文件格式 OBJ文件不仅可以定义多边形模型 ,也可以定 义自由曲面模型.多边形模型就是可以用点、 线、 面等基本元素构造的模型 ,而自由曲面模型是指使 用参数曲面造型定义的模型.下面是某个 OBJ文 件的一部分 v - 0.
7081257 0.
08592043 - 0.
19173051 v - 0.
7081257 0.
11188304 - 0.
19173063 v - 0.
7081257 0.
0989018 - 0.
19266948 v - 0.
7081257 - 0.
09282872 0.
0129813645 v - 0.
7081257 - 0.
09282884 -
010129813645 v - 0.
7081257 - 0.
09376769 0.
0 v - 0.
7081257 0.
11188304 0.
19173051 v - 0.
7081257 0.
08592043 0.
19173063 v - 0.
7081257 0.
0989018 0119266948 …… vn - 0.
020686224 0.
07818264 -
019934188 vn - 0.
020686112 - 0.
07818285 -
019934188 vn - 0.
103371926 0.
3787195 - 0.
9142939 vn - 0.
1033715 0.
23101781 - 0.
9622852 vn - 0.
01888834 0.
65014 - 0.
7556138 vn - 0.
017401185 0.
52368283 -
018475712 vn - 0.
2399254 - 0.
961792 - 0.
075679004 从上面可以看出 , OBJ 文件由一些文本行组 成 ,每一行文本都是由一些关键字开头 ,紧跟着后 面是该关键字所表示含义的具体参数.例如 ,以 vn 开头表示该行描述一个顶点法向量信息 ,后 面一定会跟三个 Double型的具体参数 ,分别描述 该顶点法向量的三维坐标信息. 表 1列出了 OBJ文件中主要的关键字及其具 体含义. 表1OBJ文件的关键字及其含义 Tab.
1 Key words and their meanings of the OBJ files 关键字 具体含义 关键字 具体含义 v 顶点集合坐标 vt 顶点纹理坐标 vn 顶点法向量 vp 参数空间顶点 p 点L线F面curv 曲线 surf 曲面 end 结束描述 O 对象名称 bevel 斜面插值 m tlib 材质库 trace_obj 光线追踪 顶点数据类型主要提供模型的以下参数 : (1)顶点的几何坐标 ( v x y z w) ;
(2)顶点的纹理坐标 ( vt u v w) ;
(3)顶点的法向量 (vn I j k) ;
(4)空间参数点的坐标 ( vp u v w) . 在OBJ文件中 ,点的坐标是按照右手坐标系 来确定的. 一个多边形的语法定义如下 : f v/vt/vn v/vt/vn v/vt/vn…,其中省略号部分 表示可以定义任意多边的多边形.其中 v表示顶 点的几何坐标 ;
vt表示顶点的纹理坐标 ;
vn表示顶 点的法向量.要注意的是 ,每个元素之间需用 / 符号隔开.例如 ,可用以下语句定义一个四边形 : f
1 /1 /1
2 /2 /2
3 /3 /3
4 /4 /4.如果只有顶点坐 标和法向量坐标 (不含纹理坐标 ) ,那就应该使用 / / 将坐标隔开.例如只定义顶点坐标和法向量 坐标的一个四边形 : f
1 / /1
2 / /2
3 / /3
4 / /4. 关于复杂几何体的 OBJ 文件格式 ,请参阅有 关资料. 2.
2 OBJ文件的输入处理 了解了 OBJ 文件的结构后 ,为了在程序中读 入模型 ,需要建立对应的模型数据结构. 程序中首先定义了 OBJ 文件对应的结构体 , 如对象顶点的结构体、 颜色列表结构体、 材质描述 结构体和总的模型描述结构体.代码如下 : / /顶点结构体定义 struct Vertex { int draw;
GLfloat x;
GLfloat y;
GLfloat z;
GLfloat nx;
GLfloat ny;
GLfloat nz;
int colorIndex;
颜色索引 int vertexIndex;