我正在寻找用于表示体积对象的算法和数据结构的想法。我正在研究一个雕刻系统,比如sculptrix或mudbox,并希望找到一个好的实施策略。
我目前有一个非常好的动态半边网格系统来折叠/细分面。它工作得非常好并且速度非常快,但由于它是一种表面算法,因此不容易强大地改变拓扑结构。
所以我想回到绘图板并实施适当的体积系统。我的第一个想法是用于体积和行进立方体的某种octtree表示,以使其多边形化。
但是,我有一些问题。首先,行进立方体通常会产生小的或薄的三角形,这是非常不受欢迎的(之后的原因)。其次,我想仅在编辑区域和不同细节层次上对体积进行多边形化。例如,我可能想要一个低分辨率的球体,但有一些微小的高分辨率。我可以很容易地使用当前基于表面的sustem来获得那种细分行为,但我无法想象如何使用行进立方体来强有力地完成它。
另一个问题是实际的三角网格在gpu上进一步细分以获得光滑的表面,所以我也需要邻域信息。同样,我已经在当前的半边系统中使用了它,但是使用体积多边形系统,我想它需要进行大量额外的处理才能找到额外的连接信息。这就是薄三角形坏的原因。
所以我有很多限制,我要求这个社区提供想法或相关论文。我正在考虑使用表面网来避免小/细三角问题。此外,我有一种感觉kd-tree可能更适合存储多分辨率卷,因为它们似乎比octtrees更灵活。
无论如何,任何想法/建议都非常受欢迎。