0

我知道用奇数个顶点来反转三角形条的方向,我可以反转顶点;ABCDE 成为 EDCBA。

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

我已经尝试了一些我在网上阅读过的技术,但是,它们似乎都不起作用。

我曾尝试将 ABCDEF 转换为 BADCFE,但是,当它渲染时,我最终会在网格中出现奇怪的故障。

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

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

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

4

2 回答 2

0

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

考虑这个地带:

三角带

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

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

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

似乎有效,因为它覆盖了相同的区域。但它实际上不起作用,因为它正在绘制一组不同的三角形。值会以不同的方式进行插值,结果会是错误的。也许没有明显错误,但仍然是错误的。

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

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

我的项目涉及破解 Mario Kart Wii 的课程文件

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

于 2012-08-01T01:00:18.197 回答
0

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

于 2013-12-18T03:00:31.000 回答