从体素中进行清晰的等值面提取

use*_*210 4 c++ voxel marching-cubes

我需要从同时支持圆角和尖锐几何体的八叉树或阵列中的体素块生成等值面。我搜索了似乎能够完成此任务的算法,并发现了几种算法,包括双重轮廓,扩展行进立方体和双重行进立方体。但是,前两个要求的Hermite数据似乎消耗大量内存。此外,我找不到这些中任何一个的实际算法,只能找到期刊和模糊描述中的方程式。任何能找到解决我的问题的算法的帮助将不胜感激。

G.R*_*sky 6

您提到的是最突出的。但是请记住,它们也有一些限制:

扩展行进立方体(EMC) -通过考虑样本法线(以及法线的梯度保留鲜明的特征,但是此方法在拓扑上仍然不一致(同胚),​​它不允许自适应优化(简化网格) ),并且具有小区间依赖关系(由于边缘翻转过程;最终GPU不会加速)。

双重轮廓(DC) -保留了鲜明的特征,可以进行自适应优化,但具有小区间依赖关系,还可以生成非流形网格。

Dual Marching Cubes(DMC) -保留清晰的特征,并产生流形网格(处理歧义),还可以进行自适应细化,但是仍然受小区间依赖(由于其双重性质),因此也不会那么精确消除条子的过程,将顶点四舍五入(错误可以忽略不计)

我相信,这些还有其他可能的组合,以及完全不同的技术。不过,我建议您看看Cubical Marching Squares(CMS)。我目前正在努力实现它,因为我希望实现它。在线没有太多的实现。但是,它仍然适用于Hermite Data(据我所知,这与您有关)。