在我的 Unity 项目中,我有一个需要大量优化的动态网格系统。目前我正在寻找一种通过在运行时删除重复顶点来优化网格的算法(网格被组合成一个巨大的网格)。删除占据相同空间的重复面相当容易,因为如果它们在阈值内共享相同空间,则可以安全地删除它们(因为它们不会显示)。
我在重复顶点方面遇到了更多麻烦,因为它们需要以某种方式删除,否则网格完全搞砸了。在我最初的尝试之后,我得到了一个包含顶点的对象数组Vector3
,并且我能够在一定程度上对其进行操作。似乎删除只是其中的一半,因为在更多地研究网格拓扑之后,似乎我需要在删除另一个之后进行更多的合并。
这是我基本上被卡住的部分。表面上,我认为这将是相当简单的。获取所有需要删除的顶点附加到的三角形,并将三角形重新分配给保留的顶点。但是在实践中并不是那么容易。
首先,有没有更简单的方法?我很惊讶 Unity 在某处没有合并顶点脚本,或者至少没有一个示例。其次,有没有更好的方法,如何?我遇到了空间散列,但是,我仍然停留在我以某种方式合并顶点的部分。第三,合并实际顶点。我应该如何以最有效的方式解决这个问题?