问题标签 [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 回答
215 浏览

marching-cubes - 二维 MRI 扫描如何生成体素?

体素是在通过 3D 渲染算法获取图像后构建的,例如行进立方体吗?或者它们是通过直接 3D 图像采集获得的?

如果两者都可能:目前通常用于从 MRI 扫描中获取 3D 图像的方法是什么?

0 投票
1 回答
1365 浏览

c# - 使用 Transvoxel/Marching 立方体和 3D perlin 噪声制作程序地形

我正在研究 Transvoxel 的实现,它工作正常,但我无法继续处理噪音。现在我正在使用 perlin 噪声生成一个 2d 高度图,并使用我正在设置单元格值的高度图,但我不知道如何为单元格生成值。实际上它们必须在 -127 和 128 之间,并且它们必须平滑地增加和减少,但我无法生成这些值。

编辑:

我停止使用 3d 噪声,我正在尝试用 2d 噪声做一些事情。现在,我可以对密度场进行三角测量,因为我使用行进立方体和体素大约半年了。但我唯一不知道的是,如果我生成一个 2d 高度图以具有像山脉这样的地形特征,那么我不知道我必须使用什么密度。我尝试只是简单地给所有实心-127和所有非实心127,我还尝试在给定的(x,z)处获取高度图值,然后将y添加到它,例如:(x,0,z)= 42, (x, 1, z) = 43, (x, 2, z) = 44 等等......但是这些变化会产生如下图所示的块状地形:

在此处输入图像描述

我应该怎么做才能使它顺利?顶点位置是具有非整数值的浮点数,因此应该不是问题。

0 投票
0 回答
523 浏览

matlab - 沿骨架化 3d 蒙版的最短路径

我有一个带有曲线(骨架化数据)的 3D 数组,需要找到这些线上两点之间的最短连接路径。

如何在 Matlab 中找到沿 3D 骨架数组的两点之间的最短路径?

几个 这里mathworks 论坛上提出类似 问题。但大多数答案都指向这篇关于寻找最短路径的博客文章,它不会沿着骨架搜索。如果我试图沿着骨架强制它,它也会返回不在两点之间但离两点更远的路径。此外,人们建议的一些 matlab 函数只能处理 2D 数据(例如,可用于规避非骨架体素)。 bwdistgeodesic

使用文件交换中的两个函数。这就是我所做的:

到目前为止,这些结果很好:

在此处输入图像描述

右图中的白线显示骨架,蓝线显示种子。但是,如果我尝试应用距离变换,我找不到最短路径:

在此处输入图像描述

第一个发现几乎再次发现了整个骨架,第二个看起来像假的。区域最小值肯定不适合找到路径,但不确定还有什么。此外,我的距离计算没有考虑骨架,我试图在第二条路径中规避它,但也没有很好地工作。

我应该怎么做?


刚刚发现了一个叫做“快速行进”的东西,也许这会起作用。现在调查它。

0 投票
1 回答
1170 浏览

c# - 为什么 Transvoxel 会形成块状地形?

从那时起,我一直致力于实现 Transvoxel。现在它起作用了,它多边形化了,但它有点像块状。如下图所示:

在此处输入图像描述

这是多边形化的代码:

这是另一个用于生成高度图和密度值的方法:

如果您以前使用过 Transvoxel,或者您对此有任何想法,请发表评论或回答。我真的坚持这一点。

编辑:密度生成代码的变化,不生成太多的零等等,但它仍然是块状的。

0 投票
1 回答
1331 浏览

python - 在 VTK 中渲染透明对象的问题

使用 python VTK lib 渲染透明对象时,会出现奇怪的图像显示效果。在某些时候,当我们旋转物体时,物体的透明度会发生一些变化。它们从前景中消失。有时会发生有时不会。这极大地阻碍了视口中的导航。也许这与法线有关。有可能解决这个问题吗?代码:

0 投票
1 回答
10144 浏览

python - 在 python 中从 3d 数组创建一个 .obj 文件

我的目标是使用 python 从漂亮的 (.nii) 格式获取 .obj 文件,目的是在 Unity 上打开它。我知道“scikit-image”包有一个名为“measure”的模块,它实现了 Marching cube 算法。我将行进立方体算法应用于我的数据,并获得了我期望的结果:

然后我可以绘制数据:

在此处输入图像描述

我一直在寻找将数据(顶点、面法线、值)保存为 .obj 的函数,但我还没有找到。因此,我决定自己建造它。

但是当我将数据导入统一时,我得到了以下结果:

在此处输入图像描述

在此处输入图像描述

所以我的问题如下:

  • 我在 .obj 制作过程中做错了什么?
  • 是否有一个模块或功能可以更好地做到这一点?
  • 有可能做我想做的事吗?

谢谢你。

更多示例:

Python:

在此处输入图像描述

统一:

在此处输入图像描述

0 投票
0 回答
58 浏览

python - 使用插值伪影寻找薄体素结构的表面

我有一个表示为体素化图像的薄结构。我正在使用来自 scikit-image 的行进立方体,但我注意到它不能很好地处理薄结构。

相同结构的示例移动了半个体素:

所以第二个失败的原因是没有高于的值level。但是,知道我的结构是二进制结构(不存在中间值),我想知道是否可以通过以下方式补偿这些插值伪影

  • 使用不同的行进立方体算法?
  • 使用分辨率增加?
0 投票
1 回答
531 浏览

c++ - 在VTK下保存Mesh文件

我正在尝试从 3d 体积生成网格。我在VTK上处理,使用Marching Cube(vtkMarchingCubes.h);但我仍然找不到如何将结果视图保存为 vtk 文件!

任何想法

我感谢您的帮助。

0 投票
1 回答
950 浏览

three.js - 带有threejs和marchingcubes的渐变多色元球

我正在研究如何实现与这项工作类似的东西:https ://vimeo.com/9121195 。但是通过给定颜色数组中的每个元球显式地分配颜色。据我所知,在这个例子中这完全是从着色器方面完成的,但我想知道这是否不能用 Threejs 和 marchingcubes 来实现。

通过创建一个新的THREE.ShaderMaterial,我假设我可以将每个元球的位置传递给着色器,然后评估每个顶点与给定位置的距离,最终为每个像素分配颜色。

只是为了简化问题,我从两个移动的元球开始。

从threejs

}

这是我的着色器

这是一个示例结果:

这里的问题是,显然距离没有正确计算,并且我尝试使用的两种颜色之间的过渡mixScale也不起作用。任何想法?

0 投票
1 回答
766 浏览

javascript - Quadrics 的行进立方体 - Three.js

我尝试使用three.js 的Marching Cubes 库实现一个显示不同类型的空间二次曲线的小程序,以呈现隐式表面。虽然出现的形状不正确,我想我没有THREE.MarchingCubes根据需要实现属性。小程序的核心有以下代码

但完整的代码可以在这里检查。我想field属性必须用函数的值填充,但也许这不是正确的方法。例如,当a11变大时会出现奇怪的效果,这会扩大椭圆体而不是缩小它;“行进立方体网格”似乎也在扩展,这有点有趣。

在此处输入图像描述

许多其他配置与预期结果不匹配。哪个是正确的使用方法THREE.MarchingCubes