题
我创建了一个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
这是失败的代码行。顶点是向量3。
tempVertices.push_back ( vertices[--vertex] );
我的问题是,第四点是什么?您如何在我的vector3.h文件之类的内容中说明这一点?似乎我需要创建一个vector4.h,如果线上只有3个,则忽略第四量。但是我想更多地了解我正在处理的事情,以及有关如何做的任何技巧。第四元素是alpha还是什么?在vector3.h中我的计算中应该如何使用它,或者应该在我的计算中使用它?
解决方案
带有四个点的脸称为四边形。通常,如果您想渲染它,则应该将其分为两个三角形。
因此,例如,您有:
___
| |
| |
|___|
您需要将其转变为:
___
|\ |
| \ |
|__\|
假设顶点逆时针(openGL中的默认值)从左上方开始,则可以做两个三角形。第一个三角的顶点将是四边形的第一个,第二和第三个顶点。第二个三角的顶点将是四边形的第三,第四和第一个顶点。
其他提示
您为什么不仅出口为三角形?将3DS最大转换为EMESH,使所有边缘可见,导出。或简单地使用适当的OBJ导出选项。
不隶属于 StackOverflow