Marching Cubes Performance(2d)
我试图实现一个2D版本的行军立方体算法(行军广场?),我碰到的一个主要障碍是性能问题(使用WebGL和three.js)。 我注意到质量(体素/平方尺寸)和性能之间存在巨大的折衷,我认为这是元球的中心(实心区域)的罪魁祸首:
显然,我不在乎这些魔球内侧的面孔,因为无论如何这都是完全可靠的区域。 但我不确定如何绕过内部区域而不是像表面其他部分那样对待它。 当我为混合添加更多的元球时,问题变得更糟。
我怎样才能解决这个问题,保持一个体面的质量,并能够在一个体面的帧率渲染许多元球?
如果您正在实施标准步进平方技术,那么表面内外的情况应该不成问题。 事实上,它们是最便宜的,因为你不需要为它们做任何计算。
如果要减少不需要的区域(圆圈的中心区域)的聚合计数,则需要使用自适应采样技术进行研究。 在这种情况下,最合适的可能是四叉树(2d八叉树)。
减小单元尺寸时的速度问题总是存在的,因为Marching Cubes是一个O(n ^ 3)算法(非常慢),因此行军方格将是O(n ^ 2)(仍然非常慢)。 这是没有办法的。 (如上所述,使用自适应采样数据结构可以加快速度。)
在我看来,你可以在较低的分辨率下改善质量。 该圈看起来很多(假设这不是因为它实际上是低屏幕分辨率)。 我会再次检查如何在正方形的边缘插值(我希望你不只是使用边缘的中心) - 使用更合适的插值会给你更好的逼近,并且在较低的分辨率下你会得到更好的结果。 请参阅Paul Bourke关于行军立方体的文章,并检查插值,如果您没有这样做。
下面是一些关于3D等值面提取技术的参考资料(主要基于MC),但您可以从他们中受益,在您的2d情况下:
(Kazdan等,2007)
(Manson和Shaefer,2010)
(Wilhelms和Gleder,1992)
PS:还可以查看他们的参考资料,以获得更多类似或可能的基础论文!
链接地址: http://www.djcxy.com/p/37245.html