Choose your operating system:
Windows
macOS
Linux
本页面的内容
边缘重叠
简化代码使用边缘重叠算法来简化骨架网格体。它可以帮助我们了解边缘重叠的实际作用。下图显示了重叠边缘的三个步骤。实际的简化工具可以看作是一个循环,它重叠网格体中的边缘,直到网格体中只保留所需数量的三角形(或顶点)。
选择要重叠的边缘
要重叠的边缘
计算替换位置。(它可能不在边缘上)
替换顶点
边缘已重叠,消除了两个三角形。
边缘是如何选择的?
对于网格体,每个边缘都有一个 "成本开销",表示如果该边缘重合折叠,网格体将发生多大的改变。简化算法选择成本开销最低的边缘(即对网格体的改变最小的边缘)。现在我们可以更详细地解释简化。如果我们按从开销最低到开销最高的顺序对边缘进行排序:算法将遍历该边缘列表,直到保留指定数量的三角形(或指定数量的顶点)。也就是说,开销最低(最不重要)的边缘已重叠,保留开销最高(重要)的边缘。有一个微妙之处,即当一个边缘重合时,该行为会改变其附近的边缘,它们的"成本开销"需要进行更新,同时它们在按成本开销排序的列表中的位置也需要进行更新。
选择要重叠的边缘
要重叠的边缘
那么,成本开销从何而来?
实际的 重叠成本开销 是根据网格体的局部形状会发生多大的变化(当使用可能的最佳替换顶点位置时)来计算的,另外还根据新顶点的属性(例如法线、颜色和其他属性)表现的好坏来计算额外的损失。在实际的骨骼简化器中,我们能够使某些边缘的成本开销变得更高。特别是,对于与用户认为重要的骨架骨骼相关的边缘,我们展示了向它们增加额外损失的能力。现在,这并不意味着边缘永不会重叠,这只是意味着,边缘将更晚成为提供简化器的边缘堆栈。