如何从一组顶点构造网格

时间:2013-12-13 04:32:55

标签: c++ glut mesh vertices

我正在制作一个OBJ导入器,而我恰好被困在如何从一组给定顶点构造网格物体上。考虑具有这些顶点的立方体(OBJ格式,面是三角形:

v -2.767533 -0.000000 2.927381

v 3.017295 -0.000000 2.927381

v -2.767533 6.311718 2.927381

v 3.017295 6.311718 2.927381

v -2.767533 6.311718 -2.845727

v 3.017295 6.311718 -2.845727

v -2.767533 -0.000000 -2.845727

v 3.017295 -0.000000 -2.845727

我知道如何使用GLUT构建网格(使我调用GlBegin(GL_TRIANGLES),glVertex3f(x,y,z),glEnd()等)这只是我不知道如何组合顶点重新创建对象。我认为是去v1,v2,v3,然后是v2,v3,v4等,直到我制作了足够多的三角形(和v7,v8,v1之类的东西(因为它回到了开头))。所以8个顶点是立方体的12个三角形,例如,一个有108个三角形和56个顶点的球体是(56个顶点* 2) - 4.对于一个立方体,我制作了12个三角形,它可以用于球体,我用108个顶点制作了108个三角形,它不起作用。那么如何在glVertex调用中组合顶点使其适用于任何网格?谢谢!

1 个答案:

答案 0 :(得分:2)

文件中应该有一堆“face”行(以字母“f”开头的行)告诉你如何将顶点组合成一个对象。例如,

f 1 2 3

表示由文件中前三个顶点组成的三角形。您可能还会看到类似

的内容
f 1/1 2/2 3/3

这是一个包含纹理坐标的三角形

f 1//1 2//2 3//3

包括顶点法线向量,或

f 1/1/1 2/2/2 3/3/3

包含两者的那个。

维基百科有一篇文章,其中包含格式概述:https://en.wikipedia.org/wiki/Wavefront_.obj_file