Blender生成的obj文件中面片使用了两个斜杠怎么办?

3

我正在尝试使用OpenGL ES 2制作3D场景,但我对xCode和Objective-C不熟悉。 我按照这个教程来将Blender生成的*.obj文件转换为*.h和*.c文件。 但是,脚本需要的.obj文件格式是这样的:

v 1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 -1.000000 1.000000
v -1.000000 -1.000000 -1.000000
v 1.000000 1.000000 -0.999999
v 0.999999 1.000000 1.000001
v -1.000000 1.000000 1.000000
v -1.000000 1.000000 -1.000000
vt 0.375624 0.500625
vt 0.624375 0.500624
vt 0.375625 0.749375
vt 0.375625 0.251875
vt 0.375624 0.003126
vt 0.624374 0.251874
vt 0.873126 0.749375
vt 0.873126 0.998126
vt 0.624375 0.749375
vt 0.624375 0.998126
vt 0.126874 0.998126
vt 0.126874 0.749375
vt 0.375625 0.998126
vt 0.624373 0.003126
vn 0.000000 -1.000000 0.000000
vn 0.000000 1.000000 0.000000
vn 1.000000 -0.000000 0.000000
vn 0.000000 -0.000000 1.000000
vn -1.000000 -0.000000 -0.000000
vn 0.000000 0.000000 -1.000000
vn 1.000000 0.000000 0.000001
s off
f 1/1/1 2/2/1 4/3/1
f 5/4/2 8/5/2 6/6/2
f 1/1/3 5/4/3 2/2/3
f 2/7/4 6/8/4 3/9/4
f 3/9/5 7/10/5 4/3/5
f 5/11/6 1/12/6 8/13/6
f 2/2/1 3/9/1 4/3/1
f 8/5/2 7/14/2 6/6/2
f 5/4/7 6/6/7 2/2/7
f 6/8/4 7/10/4 3/9/4
f 7/10/5 8/13/5 4/3/5
f 1/12/6 4/3/6 8/13/6

当我创建一个新的立方体(或任何其他东西)时,我会得到像这样的一个obj:

v 1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 -1.000000 1.000000
v -1.000000 -1.000000 -1.000000
v 1.000000 1.000000 -0.999999
v 0.999999 1.000000 1.000001
v -1.000000 1.000000 1.000000
v -1.000000 1.000000 -1.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 1.000000 0.000000
vn 1.000000 -0.000000 0.000000
vn 0.000000 -0.000000 1.000000
vn -1.000000 -0.000000 -0.000000
vn 0.000000 0.000000 -1.000000
vn 1.000000 0.000000 0.000001
s off
f 1//1 2//1 4//1
f 5//2 8//2 6//2
f 1//3 5//3 2//3
f 2//4 6//4 3//4
f 3//5 7//5 4//5
f 5//6 1//6 8//6
f 2//1 3//1 4//1
f 8//2 7//2 6//2
f 5//7 6//7 2//7
f 6//4 7//4 3//4
f 7//5 8//5 4//5
f 1//6 4//6 8//6

我期望只有一个斜杠来分隔面,但现在出现了两个。

有没有更简单的方法来生成xCode所需的.h和.c文件?我尝试了很多Blender的脚本但都失败了。或者有人能告诉我如何得到一个干净的obj文件。

非常感谢。

1个回答

5

您得到的文件是正确的obj格式。然而,您想要的obj格式是错误的。

f命令的格式为f position_id/texture_coordinates_id/normal_id。由于您没有纹理坐标,因此该字段为空。

您有两个选项:

  1. 修复解析器以便能够加载没有纹理坐标的obj文件,或者

  2. 向您的对象添加UV贴图。


你是对的。我刚刚添加了一个UV映射,现在输出的obj文件符合我的预期。谢谢! - Jordan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接