我正在制作一个程序,在这个程序中生成一个庞大而复杂的网格。起初,我生成了大量较小的网格,它的工作非常好,但后来我决定将它们合并在一起,一些三角形被破坏了。

看了一会儿之后,我设法找出了问题所在:
Debug.Log(fullTriangles == fullTriangles);
boxMesh.triangles = fullTriangles;
Debug.Log(boxMesh.triangles == fullTriangles);

只有当我使用大网格时才会发生这种情况。对于许多较小的网格,两个调试都返回true。
这是一张网眼的照片。它在许多地方都是自上而下的,绝不是凸的,有几个漂浮的岛屿,而且从渲染的角度来看通常是非常困难的。

其他可能重要的信息:
为什么会发生这种事,我能做些什么来解决它呢?
发布于 2020-07-25 17:03:46
我猜你的网格有太多的顶点,看看网格索引格式。
为了避免这个问题,您可以运行一个筛网焊机,或者在一起批处理较小的网格。您也可以将较小的网格合并成更大的网格,但要计算合并后的顶点的网格数。如果超过顶点计数限制,则创建另一个合并网格(以此类推)。
另外,请记住,将数组与“==”进行比较并不是比较数组中的值,而是比较数组引用。您可以使用Enumerable.SequenceEqual,或者运行一个简单的for循环。
https://stackoverflow.com/questions/63090796
复制相似问题