行进立方体等值
Posted
技术标签:
【中文标题】行进立方体等值【英文标题】:Marching Cubes isovalue 【发布时间】:2016-03-19 19:59:10 【问题描述】:我正在尝试实现 Marchin Cubes 算法,但我有一些问题(可能非常琐碎,但我似乎找不到答案)。
当 Isovalue = 5 时,我有一个这样的块:
0-------10
| |
| |
0-------5
因为 0 5。但是右下角的 5 呢?这应该打开还是关闭?
当我使用上面的示例使用 lineair 插值时(假设 5 标记为“on”),这就是交点应该在的位置吗? (标有 x)
----x----
| |
| |
--------x
当我为这个块绘制时,它应该基本上是两个 x 之间的一条线吗?
提前致谢!
【问题讨论】:
【参考方案1】:等值面是沿线计算的,因此等值面和立方体边缘的交点会为您提供一个点。
如果 iso 恰好进入拐角,这是很少见的,为了优化行进立方体,您通常可以说任何接近拐角的值小于 97%,即 4.8 =5.0
该优化将防止您在该点周围出现多个小的分裂顶点,即宽度为 0.2 的顶点。这是一个有用的优化。
我会用 3d 来解释,因为我就是这么做的。
一旦立方体的交点沿线 OR 在一个角上,它就会在数据库中搜索 ISOsurf 和立方体的可能相交模式。
相应的模式将为您提供在该立方体中实现的正确顶点,立方体可以有四边形,例如三角形,它只会使用 iso 的值来调整三角形的大小。
因此,点和线的交点和对应的三角形索引都应该起作用,并且顶点的交点位置基于立方体边缘和角落中的等值面位置的值。
【讨论】:
以上是关于行进立方体等值的主要内容,如果未能解决你的问题,请参考以下文章