将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。

雷托·科拉迪(Reto Koradi)

如果您有4个索引,例如:

0 1 2 3

分成两个三角形将是第一个带有三个索引,一个带有第三个,第三个和第四个索引。在此示例中:

0 1 2
0 2 3

让我们尝试一些ASCII艺术来说明这一点:

3-------2
|      /|
|    /  |
|  /    |
|/      |
0-------1

在这里,您将看到0 1 2 3四边形,0 1 2第一个三角形(右下)和0 2 3第二个三角形(左上)。

更一般而言,对于具有n顶点的,将生成三角形:

0 (i) (i + 1)  [for i in 1..(n - 2)]

如果您不坚持使用单独的三角形,则还可以使用GL_TRIANGLE_FAN仍在核心OpenGL中的图元。这样,您可以使用原始索引序列使用三角扇绘制任何凸多边形。因此,0 1 2 3在这种情况下,具有顶点序列的三角形扇形体描述了四边形,并且很容易将其推广到具有4个以上顶点的面。

编辑:由于您似乎仍然有问题,让我们看看这如何应用于您帖子中的示例。我将列出每个面的四边形的原始索引序列,以及拆分四边形后的两个三角形的索引序列。

f 1 2 3 4 --> (1 2 3) (1 3 4)
f 8 7 6 5 --> (8 7 6) (8 6 5)
f 4 3 7 8 --> (4 3 7) (4 7 8)
f 5 1 4 8 --> (5 1 4) (5 4 8)
f 5 6 2 1 --> (5 6 2) (5 2 1)
f 2 6 7 3 --> (2 6 7) (2 7 3)

当我画立方体时,这对我来说似乎是正确的。请记住从索引中减去1,因为它们是基于1的索引,几乎可以肯定需要基于0的索引。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从四面体网格中提取表面三角形?

来自分类Dev

需要帮助将字符串中的三角形转换为数组

来自分类Dev

将Maya导出的OBJ文件转换为三角形网状OFF文件-AssertionError:面应具有3个顶点但应具有6个顶点

来自分类Dev

将Maya导出的OBJ文件转换为三角形网状OFF文件-AssertionError:面应具有3个顶点但应具有6个顶点

来自分类Dev

将花卉图案包括到三角形中以制作出色的十二面体

来自分类Dev

将花卉图案包括到三角形中以制作出色的十二面体

来自分类Dev

将凸路径转换为三角形列表

来自分类Dev

将一维numpy数组转换为矩阵的顶部三角形

来自分类Dev

从用四边形绘制的形状转换为用三角形绘制的形状

来自分类Dev

将四边形分割成2个三角形

来自分类Dev

评估三角形的一面

来自分类Dev

将三角形拆分为较小的三角形

来自分类Dev

三角形CSS中的三角形

来自分类Dev

在WebGL中绘制四面体

来自分类Dev

如何制作四面体?

来自分类Dev

四面体的交点

来自分类Dev

gnuplot中基于三角形的图像

来自分类Dev

React Native中的CSS三角形

来自分类Dev

在CSS中创建三角形标记

来自分类Dev

在UIButton中创建三角形

来自分类Dev

盒子内CSS中的三角形

来自分类Dev

比较Prolog中的三角形

来自分类Dev

在可可中绘制三角形

来自分类Dev

三角形中的路径数

来自分类Dev

遍历单位三角形中的点

来自分类Dev

在Haskell中打印Pascal的三角形

来自分类Dev

验证C中的三角形

来自分类Dev

DIV中的三角形边框

来自分类Dev

VB 6.0中的Pascal三角形