我正在制作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/

10-11 23:08
查看更多