问题标签 [marching-cubes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1742 浏览

c++ - Marching Cubes 实现 - 网格中缺少三角形

我目前正在通过在 OpenGL 中渲染示例数据集来理解和使用 C++ 实现 Marching Cubes 算法。

我一直遇到我渲染的网格缺少三角形的问题。我看到几乎一半的三角形丢失,如下所示。

填充三角形并创建四边形是解决问题的正确方法,还是我遗漏了一些明显的东西?

我使用的边缘相交表来自以下链接: http: //paulbourke.net/geometry/polygonise/

我没有使用 12 位条目的边缘标志数组,而是使用了 12 个 if 语句(其中显示了 2 个)。我使用 3D 数组的索引来根据边缘值 (0-11) 确定 x、y、z 的值

此外,插值函数如下。

显示缺失三角形的三角形网格

缺少三角形问题的整个渲染数据集

更新:

找到一个示例后,我修改了代码并能够渲染所有三角形。现在,我看到一个问题,当我旋转我的对象时,对象开始反转 z 轴并从里到外显示对象。

为什么物体会在旋转过程中开始反转 z 值?

缺失三角形问题已修复,但 z 轴存在反转问题

0 投票
0 回答
1923 浏览

c# - 如何优化 Marching Cubes 算法?如何组合相似的面孔组?

经过 3-4 天的 256 查找表的行进立方体算法工作后,我终于让它工作了。现在我让它工作了,我想尝试优化它。我想到的一件事是用一个浮动区域去除大的平坦区域。

示例图像以显示我的想法 示例图像以显示我的想法

我如何使用查找表生成网格

感谢您为我提供正确的方法或帮助我解决此问题。

编辑*我在做什么

0 投票
1 回答
3165 浏览

c++ - 从体素中提取锐利的等值面

我需要从支持圆角和锐利几何的八叉树或数组中的体素块生成等值面。我搜索了似乎能够完成这项任务的算法并找到了几个,包括双轮廓、扩展行进立方体和双行进立方体。然而,前两个需要 Hermite 数据,这似乎是一个巨大的内存消耗。此外,我找不到任何这些的实际算法,只有来自期刊的方程式和模糊的描述。任何帮助找到可以解决我的问题的算法将不胜感激。

0 投票
1 回答
1293 浏览

javascript - 方块行进表演(2d)

我正在尝试实现行进立方体算法的 2D 版本(行进广场?),我遇到的主要障碍之一是性能问题(使用 WebGL 和 three.js)。我注意到质量(体素/正方形大小)和性能之间存在巨大的权衡,我认为造成这种情况的罪魁祸首是元球的中心(实心区域):

元球

显然我不关心元球内部的面,因为无论如何那是一个完全坚固的区域;但我不确定如何在不将内部区域与其他表面相同处理的情况下绕过内部区域。当我在混合物中添加更多元球时,问题会变得更糟。

我怎样才能解决这个问题,以保持良好的质量并能够以良好的帧速率渲染许多元球?

0 投票
1 回答
1720 浏览

c++ - pcl::MarchingCubesRBF 不输出网格

我需要使用基于径向基函数的行进立方体,所以我查找了在 PCL 中实现的这个算法。实际上我使用的是 PCL v1.6,所以功能是:

问题是它不起作用,即它没有创建任何三角形:有时输出是“创建了 0 个三角形”,有时运行会阻塞我的机器。无论如何,我的实现是:

我尝试使用不同的文件,如输入,但它们都不起作用。其中之一是https://github.com/FabiApfelkern/cloudfinish/blob/master/cat.pcd

我发现 pcl 中的实现存在一个错误:http: //dev.pointclouds.org/issues/768 但是我不明白它是否在 pcl v1.6 中得到解决。如果可能的话,让我知道我该如何解决。

我在 VS2010 中使用 C++

0 投票
2 回答
2088 浏览

python - vtk 中的行进立方体是否需要特定的输入?

在我将 ImageData 传递给它之后,行进立方体类不会生成任何东西。

我正在尝试从 3D numpy 数组生成表面。我使用 evtk 将数组导出到 .vti(结构化点)文件并存储为 pointData。然后,通过 vtkXMLImageDataReader 读取文件。将 Reader 的输出 (vtkImageData) 传递给 vtkMarchingCubes 类后,该类返回一个没有点或单元的 vtkPolyData,vtkImageData 在 vtk wiki 的示例中使用,MarchingCubes 类应该没有问题处理它。

我尝试导出Reader生成的ImageData,输出可以通过ParaView可视化没有任何问题。

我只是想知道 vtk 中的行进立方体生成表面是否有任何特殊要求?如果 3D numpy 可以直接转换为适合 MarchingCubes 的数据类型就更好了。

这是我读取 .vki 文件并将其传递给行进立方体的代码:

0 投票
1 回答
765 浏览

fractals - 用于增量程序地形生成的菱形正方形的替代品?

我目前正在为游戏编写程序地形生成器。为此,我将我的世界划分为大小相等的块,并在玩家漫步时一个接一个地生成它们。到目前为止,没有什么特别的。

现在,我特别不希望世界是持久的,即如果一个块被卸载(可能是因为玩家移动得太远)然后再次加载,它不应该和以前一样。

据我了解,将 3D Simplex Noise 视为 Marching Cubes 的密度函数输入等隐式方法不适合我的问题。那是因为我需要为生成器重新设定种子以获得空间中同一点的不同返回值,从而导致块边界上的不连续性。

我还研究了中点位移/钻石平方。通过使用来自相邻块边界的值播种每个块的高度图并随机化附近没有任何其他块的块角,我能够生成显示所需行为的可平铺地形。不过,结果看起来相当乏味。具体来说,由于这种方法依赖于高度图,它没有悬垂等。此外,即使使用角点随机化,地形特征也往往局限于小区域,即没有多块山丘或类似的地标。

现在我想知道是否还有其他我还没有听说过/想过的方法。非常感谢任何帮助!:)

干杯!

0 投票
1 回答
281 浏览

voxel - 像查找表一样的防水行进立方体?

我正在尝试对标量场进行多边形化。网格上的每个点只能有 1 或 0 的值。我需要为 8 个点创建一个包含 256 个多边形数组的数组,但是,与行进立方体不同,这些多边形的边缘只能在网格的点处。

0 投票
1 回答
129 浏览

python - pmneila 加工立方体,配置输入

我正在使用 python 并尝试使用 pmneila Macing 立方体 ( https://github.com/pmneila/PyMCubes )。

在我的系统中,我得到了每个立方体的坐标列表。一个简单的例子:

我不知道如何将其转换为行进立方体输入。

我想要类似的东西:

在提供的示例中,它用 构建了一个球体numpy.mgrid,但我不知道如何。我试图通过行进立方体算法从小立方体构建一个大立方体。

你能解释一下怎么做吗?谢谢

0 投票
1 回答
853 浏览

algorithm - 如何计算 MarchingCubes 算法中的“iso-level”

我一直在尽可能多地阅读有关如何正确实现 MarchingCubes(MC) 算法的内容,并且我相信我了解它是如何工作的。我挂断的一件事是如何计算等位线,为什么它是浮动的,以及这个数字到底意味着什么。那是给定x,y,z坐标的高度(y)吗?我将使用该算法通过 Unity 在视频游戏中制作平滑的可破坏地形,如果这样可以更容易地制作示例。