【问题标题】:How to construct a mesh from a set of vertices如何从一组顶点构造网格
【发布时间】:2023-03-21 02:35:01
【问题描述】:

我正在制作一个 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 vertices * 2) - 4。对于一个立方体,我制作了 12 个三角形,没关系,但是对于一个球体,我用 56 个顶点制作了 108 个三角形,它不起作用。那么如何在 glVertex 调用中组合顶点以使其适用于任何网格?谢谢!

【问题讨论】:

标签: c++ glut mesh vertices


【解决方案1】:

文件中应该有一堆“面”行(以字母“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

【讨论】:

  • 好的,解决了。我所做的是一次一个地处理文件的各个部分,就像我从顶点开始,然后处理纹理坐标一样。维基百科解释的方式对我来说并不清楚我需要一起使用顶点和面定义。
猜你喜欢
  • 1970-01-01
  • 2013-05-16
  • 1970-01-01
  • 2019-06-20
  • 2016-05-17
  • 1970-01-01
  • 2020-08-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多