gpt4 book ai didi

javascript - 行进方 block 表演(2天)

转载 作者:行者123 更新时间:2023-11-28 19:45:48 29 4
gpt4 key购买 nike

我正在尝试实现 2D 版本的行进立方体算法(行进方 block ?),我遇到的主要障碍之一是性能问题(使用 WebGL 和 Three.js)。我注意到质量(体素/方形大小)和性能之间存在巨大的权衡,我认为罪魁祸首是元球的中心(实心区域):

Metaballs

显然我并不关心元球内部的面,因为无论如何那都是一个完全坚固的区域;但我不知道如何绕过内部区域的聚合而不将其与表面的其余部分相同地处理。当我向混合物中添加更多元球时,问题会变得更糟。

如何解决这个问题,以保持良好的质量并能够以良好的帧速率渲染许多元球?

最佳答案

如果您正在实现标准marching squares那么表面内外的情况应该不成问题。事实上,它们是最便宜的,因为您不需要为它们进行任何计算。

如果您想减少不需要的区域(圆的中心区域)的多边形计数,则需要考虑使用自适应采样技术。在这种情况下,最合适的可能是四叉树(2d 八叉树)。

减小像元大小时的速度问题始终存在,因为行进立方体是 O(n^3) 算法(非常慢),因此行进方 block 将是 O(n^2)(仍然很慢)。没有办法解决这个问题。 (如上所述,使用自适应采样数据结构可以加快速度。)

在我看来,您可以在较低分辨率下提高质量。该圆圈似乎有很多锯齿(假设这不是因为它实际上是低屏幕分辨率)。我会再次检查你如何在正方形的边缘上进行插值(我希望你不只是使用边缘的中心) - 使用更合适的插值将为你提供更好的近似值,并且你会在较低的分辨率下获得更好的结果。请参阅Paul Bourke's article on marching cubes如果您没有这样做,请检查插值。

以下是 3d 等值面提取技术的一些引用(主要基于 MC),但在 2d 情况下您可以从中受益:

(Kazdan et al, 2007)
(Manson and Shaefer, 2010)
(Wilhelms and Gleder, 1992)

PS:还可以查看他们的引用文献,了解更多类似的论文,也许还有基础论文!

关于javascript - 行进方 block 表演(2天),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24296879/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com