如何使用偶数个顶点反转三角形条?

时间:2012-07-30 22:05:35

标签: opengl 3d directx

我知道要反转具有ODD顶点数的三角形条带的方向,我可以反转顶点; ABCDE成为EDCBA。

但是,这似乎不适用于具有偶数个顶点的三角形条带。

我尝试了许多我在网上阅读的技术,但是,它们似乎都没有。

我尝试将ABCDEF转换为BADCFE,然而,当渲染时,我在网格中出现了奇怪的毛刺。

我还读到只是翻转B和C应该可以工作,但渲染仍然不会翻转后续三角形的方向。

是否可以通过仅更改条带的索引来反转具有偶数个顶点的三角形条带的方向?

此时我只能访问顶点的二进制索引列表,因此我无法添加退化三角形,或以其他方式更改列表中的索引数。

2 个答案:

答案 0 :(得分:0)

您无法更改任意长度的三角形条带的缠绕顺序。您只能更改奇数长度的条带的缠绕顺序。不是不改变条带本身。

考虑这条:

Triangle strip

如果你切换中间顶点对(我删除的原始算法)的顺序,你得到的三角形(使用当前数字)是:

(0,2,1),(2,1,4),(1,4,3),......

注意第二个三角形:2,1,4。它是完全不同的三角形;实际上并不是这个中的一个。也不是1,4,3。

出现,因为它涵盖了相同的区域。但它实际上并不起作用,因为它绘制了一组不同的三角形。值将以不同的方式进行插值,结果将是错误的。可能不是显然错误,但是错了。

没有算法可以采用任意三角形条并反转其绕组顺序。就其性质而言,三角形条带受其缠绕顺序的约束,并且在所有情况下都不能反转它。

这就是为什么API有办法简单地扭转预期的缠绕顺序。你提到过:

  

我的项目涉及黑客攻击Mario Kart Wii的课程文件

为什么不用他们的三角形条带,使用它们的绕组,并将它们变成一个三角形列表而不是绘制条带。这样,您可以更轻松地更改数据中的绕组。

答案 1 :(得分:0)

在条带上添加退化三角形,然后将其反转。