我创建了一个OBJ加载程序,可以导入从3DS MAX导出的.OBJ文件,以使我的简单OpenGL Viewer / App中。核心是vector3.h在一些教程的帮助下编写。

它在我使用的几个型号上效果很好,但是我想使用的型号具有不同的内容。它的顶点中有4分,而不是3分。这是我正在使用的行的样本:

g Box02
usemtl Wood_Bark
s 4
f 1/1/1 2/2/1 3/3/1 4/4/2
f 4/1/3 3/2/3 5/3/3 

第一条“ F”线具有我感兴趣的4个顶点。我的Vertex3.h为X,Y,Z。在我拥有的其他模型中,所有线都像第二个“ F”线,只有3个元素。我的顶点超出了范围,所以当我去检查它发生的位置时,我看到它在这条线上,所以我认为该行上有更多数据可以处理。这是整个vertex3.h

http://pastebin.com/dggsbsfe

这是失败的代码行。顶点是向量3。

tempVertices.push_back ( vertices[--vertex] );

我的问题是,第四点是什么?您如何在我的vector3.h文件之类的内容中说明这一点?似乎我需要创建一个vector4.h,如果线上只有3个,则忽略第四量。但是我想更多地了解我正在处理的事情,以及有关如何做的任何技巧。第四元素是alpha还是什么?在vector3.h中我的计算中应该如何使用它,或者应该在我的计算中使用它?

有帮助吗?

解决方案

带有四个点的脸称为四边形。通常,如果您想渲染它,则应该将其分为两个三角形。

因此,例如,您有:

 ___
|   |
|   |
|___|

您需要将其转变为:

 ___
|\  |
| \ |
|__\|

假设顶点逆时针(openGL中的默认值)从左上方开始,则可以做两个三角形。第一个三角的顶点将是四边形的第一个,第二和第三个顶点。第二个三角的顶点将是四边形的第三,第四和第一个顶点。

其他提示

您为什么不仅出口为三角形?将3DS最大转换为EMESH,使所有边缘可见,导出。或简单地使用适当的OBJ导出选项。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top