为什么.obj格式有一个空面坐标?

时间:2014-02-04 13:18:33

标签: opengl blender

关于如何准备.obj文件解析器,我跟着this great tutorial,最后我迷路了,我不知道该怎么做!

我在Blender中制作了一个非常简单的模型并保存它就像在教程中说的那样。根据这个,我应该有3个面部坐标:

f 5/1/1 1/2/1 4/3/1
f 5/1/1 4/3/1 8/4/1
f 3/5/2 7/6/2 8/7/2
f 3/5/2 8/7/2 4/8/2
f 2/9/3 6/10/3 3/5/3
f 6/10/4 7/6/4 3/5/4
f 1/2/5 5/1/5 2/9/5
f 5/1/6 6/10/6 2/9/6
f 5/1/7 8/11/7 6/10/7
f 8/11/7 7/12/7 6/10/7
f 1/2/8 2/9/8 3/13/8
f 1/2/8 3/13/8 4/14/8

在我的情况下,我只有两个,中间一个是空的:

f 1//1 2//1 4//1
f 5//2 8//2 7//2
f 1//3 5//3 2//3
f 2//4 6//4 7//4
f 3//5 7//5 8//5
f 5//6 1//6 4//6
f 8//7 5//7 4//7
f 6//8 5//8 7//8
f 2//9 3//9 4//9
f 5//10 6//10 2//10
f 3//11 2//11 7//11
f 4//5 3//5 8//5

我肯定做错了什么,但我不知道那是什么。

1 个答案:

答案 0 :(得分:3)

OBJ文件格式允许简单地省略纹理属性。因此,f 1//1 2//1 3//1是一个有效的三角形,只有位置和法线。你应该改变你的解析器来接受它(这应该不是很难)。

Wikipedia article about OBJ解释得相当好:

  

顶点/正常

     

由于纹理坐标是可选的,可以在没有它们的情况下定义几何体,但是在放入普通索引之前必须在顶点索引之后放置两个斜杠:

     

f v1//vn1 v2//vn2 v3//vn3

另请注意,您也不必指定法线,并且面部可能如下所示:

f 1/1 2/2 3/3