我创建了一个OBJ加载器,可以将从3DS Max导出的.OBJ文件导入到我的简单OpenGL查看器/应用程序中。其核心是在一些教程的帮助下编写的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
这是失败的代码行。顶点是Vector3。
tempVertices.push_back ( vertices[--vertex] );
我的问题是,第四点是什么?您如何在我的Vector3.h文件中解释这一点?好像我需要创建一个Vector4.h,如果该行只有3,则忽略第4个var。但我想更多地了解我正在处理的事情,以及有关如何做的任何提示。第4个元素是alpha还是什么?它应该如何使用,还是应该在我在Vector3.h的计算中使用它?
答案 0 :(得分:3)
有四个点的面被称为四边形。通常如果你想渲染它,你应该把它分成两个三角形。
例如,你有这个:
___
| |
| |
|___|
你需要把它变成这个:
___
|\ |
| \ |
|__\|
假设顶点逆时针(OpenGL中的默认值),从左上角开始,你可以制作两个三角形。第一个三角形的顶点是四边形的第一个,第二个和第三个顶点。第二个三角形的顶点将是四边形的第三个,第四个和第一个顶点。
答案 1 :(得分:0)
为什么不只导出三角形?在3ds max中转换为EMesh,使所有边可见,导出。或者只是使用适当的OBJ导出选项。