0

我正在尝试实现 Marchin Cubes 算法,但我有一些问题(这可能非常微不足道,但我似乎找不到答案)。

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

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

因为 0 < 5,所以左角都应该标记为“关闭”。10 应该被标记为“on”,因为 10 > 5。但是右下角的 5 呢?这应该打开还是关闭?

当我使用上面的示例使用线性插值时(假设 5 标记为“on”),这就是交点应该在的位置吗?(标有 x)

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

当我为这个块绘制时,它应该基本上是两个 x 之间的一条线吗?

提前致谢!

4

1 回答 1

1

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

如果 iso 恰好进入拐角,这是罕见的,为了优化行进立方体,您通常可以说任何接近拐角的 97% 的值,即 4.8 =5.0

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

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

一旦立方体具有沿线或角上的交点,它就会搜索 ISOsurf 和立方体的可能相交模式的数据库。

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

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

于 2016-03-29T08:59:18.823 回答