1

我创建了一个 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

http://pastebin.com/dgGSBSFe

这是失败的代码行。顶点是一个 Vector3。

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

我的问题是,第四点是什么?你会如何在我的 Vector3.h 文件中解释这一点?好像我需要创建一个 Vector4.h,如果只有 3 个就忽略第 4 个 var。但我想更多地了解我正在处理的事情,以及如何做到这一点的任何提示。第 4 个元素是 alpha 还是什么?应该如何使用它,或者应该在 Vector3.h 中的计算中使用它?

4

2 回答 2

3

具有四个点的面称为四边形。通常如果你想渲染它,你应该把它分成两个三角形。

例如,你有这个:

 ___
|   |
|   |
|___|

你需要把它变成这样:

 ___
|\  |
| \ |
|__\|

假设顶点逆时针方向(OpenGL 中的默认设置),从左上角开始,您可以制作两个三角形。第一个三角形的顶点将是四边形的第一个、第二个和第三个顶点。第二个三角形的顶点将是四边形的第三、第四和第一个顶点。

于 2010-12-29T04:04:57.050 回答
0

为什么不只导出为三角形?在 3ds max 中转换为 EMesh,使所有边缘可见,导出。或者只是使用适当的 OBJ 导出选项。

于 2011-01-19T13:57:12.147 回答