使用C ++导入3ds Max OBJ

时间:2010-12-29 04:01:24

标签: c++ 3dsmax

我创建了一个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的计算中使用它?

2 个答案:

答案 0 :(得分:3)

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

例如,你有这个:

 ___
|   |
|   |
|___|

你需要把它变成这个:

 ___
|\  |
| \ |
|__\|

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

答案 1 :(得分:0)

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