Obj Blender导出推荐OpenGL C ++

我一直在搅拌器里面塑造一些物体,就像一个灯泡。 我完成了灯泡,在出口的时候我有一个问题。

我想以波前格式(.obj)输出灯泡,但灯泡是由不同的网格形成的,我的意思是,它不是以一个网格连接的。 如果我导出将作为不同的网格在.obj内的obj

我的最后一个问题是,为了在OpenGL C ++中导入它,最好把所有的网格物体(顶点)连接起来,还是把它们作为分离的对象? 如果他们没有join,翻译…resize等等,不会有任何麻烦。

定义:

  • 网格(Mesh):任何数量的定位为显示为一个对象的三角形。

例如,一个立方体,它看起来像一个对象,并包含12个三角形。 我会称之为网格。

我想指出,这个定义并不完全正确,但是我将会使用它,所以最好知道我的意思。

  • 搅拌器对象:搅拌器中的对象,在对象模式下,只能作为一个整体进行select。

例如:

突出显示的搅拌器对象

请注意,只有一个对象只能作为一个整体来select。 这是一个搅拌器对象。

当您以.obj文件格式导出时,它会导出整个搅拌器对象,包括所有网格。

.obj格式:

.obj文件具有简单的语句。 在他们最简单的forms(顶点和面,没有法线),他们看起来像这样:

v 1.0 5.0 1.0 v -1.0 2.4673 -12.06 

要么

 f 1 5 3 f 5 1 5 

v代表描述顶点的顶点。

f代表face它描述了一个三角形,例如:

 f 1 5 3 

意思是:有三角形由顶点1,顶点5和顶点3组成

顺序与它们在文件中声明的顺序相同

 v 1.0 -1.0 -1.0 # 1st vertex v 1.0 -1.0 1.0 # 2nd vertex v -1.0 -1.0 1.0 # 3rd vertex v -1.0 -1.0 -1.0 # hmm... 

要实现的重要一点是,我称之为“网格”的概念在OpenGL中不存在,在.obj文件中也不存在。 这是一个特殊的概念,以上是Blender的事情。

因此,将这些数据加载到合适的parsing器中应该会得出正确的结果,这仅仅是因为OpenGL并不要求每个顶点数组只有一个网格,因为这样做会是令人难以置信的速度减less和废话时间开发商。

因此,可以将以前定义的混合器对象导出到.obj文件。 一旦这个文件被加载到你的程序并阅读,如果正确完成,应该产生正是你期望的。 是多个网格。

希望这有助于,如果不是,我会试着进一步解释。