【发布时间】:2020-02-24 10:55:49
【问题描述】:
所以我需要使用具有 n 个顶点的 Unity Mesh 组件生成一个多边形。我正在使用一个自定义的 Triangulate() 函数,该函数能够找到 mesh.triangles 的索引。
问题在于,根据我为该函数提供的顶点,多边形在错误的一侧生成,有时相机看不到(除非我将相机翻转到另一侧)。
现在我知道这与 Unity 的顺时针缠绕顺序有关,但我如何确保多边形始终在正确的一侧生成,无论我提供的顶点是什么?或者有没有办法知道网格在哪一侧生成,以便我可以相应地调整相机?
【问题讨论】:
-
您是否尝试过将
for (int i=0; i<vertices.Length; i++) {更改为for (int i=vertices.Length-1; i>=0; i--) {时会发生什么?代码有点乱,所以我只是即兴创作(以相反的方式构建网格) -
最终我的第二个即兴创作是将 Snip 函数执行下添加的 a、b、c 更改为 c、b、a 即
indices.Add(c); indices.Add(b); indices.Add(a); -
谢谢,但代码的问题是有时它使用特定的顺序,有时它会切换它,所以我相信只是反转操作仍然不能让它 100% 的工作
-
问题的屏幕截图可能有用
-
我最终使用了两个不同的网格,它们的 mesh.triangles 数组颠倒了,所以当一个不可见时,另一个是。我知道这不是最好的解决方案,但它现在是一个很好的补丁