6

我有一个 3D 笛卡尔立方体。对于这个立方体中的每个点,都有一个相应的密度值。当密度突然变化时,意味着有一个空腔。现在为了找到空腔,我计算了立方体中每个点的梯度。这给了我一个空腔表面的点云。我现在想在给定点云的情况下对空腔表面进行网格划分。

不幸的是,我对表面重建没有任何经验,想知道是否有人可以推荐一种合适的算法来产生空腔的封闭表面?

立方体非常大,因此空腔表面的点云很容易达到 500.000 点或更多。我读过这篇文章:从 3D 点云进行表面重建的鲁棒算法?我觉得这很有用。但是,鉴于以下情况,我面临的问题似乎更简单:

  1. 点的坐标总是整数
  2. 点分布均匀
  3. 从一个点到其最近邻居的距离是 1、sqrt(2) 或 sqrt(3)
4

2 回答 2

4

You probably want the marching cubes algorithm.

于 2012-04-12T18:05:26.883 回答
3

Marching Cubes 算法将完全满足您的需求。对于工作实现(使用 Three.js 渲染图形),请查看:

http://stemkoski.github.com/Three.js/Marching-Cubes.html

有关该理论的更多详细信息,我认为最好的文章是网站:

http://paulbourke.net/geometry/polygonise/

于 2012-08-27T20:06:18.370 回答