我正在制作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调用中合并顶点以使其适用于任何网格?谢谢!
最佳答案
文件中应该有一堆“面”线(以字母“ 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
关于c++ - 如何从一组顶点构造网格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20559142/