将 OBJ 文件中的四边形转换为三角形?
起初,这似乎是显而易见的...在找到4个索引的地方,每张脸做2个三角形,对吧?
意思是,以下内容:
v 1.000000 1.000000 0.000000
v -1.000000 1.000000 -0.000000
v 1.000000 -1.000000 0.000000
v -1.000000 -1.000000 -0.000000
f -4 -3 -2 -1
...反过来,需要转换为如下内容:
v 1.000000 1.000000 0.000000
v -1.000000 1.000000 -0.000000
v 1.000000 -1.000000 0.000000
v -1.000000 -1.000000 -0.000000
f -4 -3 -2
f -2 -3 -1
当然,这个特定的例子会正确呈现。
但是,并非所有情况都像将面拆分为两个面(如上例所示,第一个面包含原始面的前三个顶点,第二个面包含最后 3 个顶点)那么简单。以以下多维数据集为例:
v 0.000000 1.000000 1.000000
v 0.000000 0.000000 1.000000
v 1.000000 0.000000 1.000000
v 1.000000 1.000000 1.000000
v 0.000000 1.000000 0.000000
v 0.000000 0.000000 0.000000
v 1.000000 0.000000 0.000000
v 1.000000 1.000000 0.000000
f 1 2 3 4
f 8 7 6 5
f 4 3 7 8
f 5 1 4 8
f 5 6 2 1
f 2 6 7 3
这些面孔不能以与上一示例中相同的方式拆分...因此,我需要一些方法来了解如何将四边形面分成两个三角形面,同时为第二个面使用正确的索引......
如何实现这一点?请注意,我没有使用固定函数管道,因此,使用GL_QUADS不是一个选项。我的渲染引擎几乎只使用GL_TRIANGLES。