行进立方体isovalue

时间:2016-03-19 19:59:10

标签: marching-cubes

我正在尝试实施Marchin Cubes算法,但我有一些问题(这可能非常简单,但我似乎无法找到答案)。

当Isovalue = 5时,我有一个这样的块:

0-------10
|       |
|       |
0-------5

因为0< 5,左角应标记为" off"。 10应标记为" on"因为10>但是,在右下角的5怎么样?这应该打开还是关闭?

当我使用上面的例子使用lineair插值时(假设5标记为" on"),这是交叉点应该在哪里? (标有x)

----x---- 
|       |
|       |
--------x 

当我为这个区块画画时,它应该基本上是两个x&#39之间的一条线?

提前致谢!

1 个答案:

答案 0 :(得分:1)

Isosurface是沿着线计算的,所以你有一个isosurf和立方体边缘的交点,它给你一个点。

如果iso完全靠近一个角落,这很少见并且为了优化行进立方体,通常可以说任何一个角度接近97%的角度,即4.8 = 5.0

该优化将阻止您在该点周围有多个小的分裂顶点,即0.2宽度的顶点。这是一个有用的优化。

我会在3d中解释因为这就是我所做的。

一旦立方体沿着一条直线上的OR点有交叉点,它就会在数据库中搜索ISOsurf和立方体的可能交叉点模式。

相应的模式将为您提供在该立方体内实现的正确顶点,立方体可以有四边形,例如三角形,它只会使用iso的值来确定三角形的大小。

因此,应该有点和线的交点以及相应的三角形索引全部工作,并且顶点交叉位置基于立方体边缘和角落中的等值面位置的值。