2

我正在寻找表示体积对象的算法和数据结构的想法。我正在开发一个雕刻系统,比如 sculptrix 或 mudbox,并希望找到一个好的实施策略。

我目前有一个非常好的动态半边网格系统来折叠/细分面。它工作得非常好并且速度非常快,但是由于它是一种表面算法,因此很难鲁棒地改变拓扑结构。

所以我想回到绘图板并实施一个适当的体积系统。我的第一个想法是对体积和行进立方体进行某种八叉树表示以使其多边形化。

但是,我对此有一些问题。首先,行进立方体通常会产生小的或薄的三角形,这是非常不受欢迎的(原因稍后再说)。其次,我只想在编辑区域和不同的细节层次上对体积进行多边形化。例如,我可能想要一个低分辨率的球体,但有一些微小的高分辨率凸起。我可以使用当前基于表面的系统轻松获得这种细分行为,但我无法想象如何使用行进立方体稳健地做到这一点。

另一个问题是实际的三角形网格在 gpu 上被进一步细分以获得光滑的表面,所以我也需要邻域信息。同样,我已经在当前的半边系统中拥有了这个,但是对于体积多边形化系统,我想它需要大量的额外处理才能找到额外的连接信息。这就是细三角形不好的原因。

所以我有很多限制,我要求这个社区提供想法或相关论文来阅读。我正在考虑使用表面网来避免小/薄三角形问题。另外,我觉得 kd-trees 可能更适合存储多分辨率卷,因为它们看起来比八叉树更灵活。

无论如何,非常欢迎任何想法/建议。

4

0 回答 0