问题标签 [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 投票
4 回答
1634 浏览

python - 重新网格化 3D 三角曲面以获得更好的网格质量

我正在使用行进立方体从体积中提取 2D 表面。在本例中为 Gyroid。

在此处输入图像描述

这一切都很好,但网格质量在很多地方都令人震惊。我无法在网格上运行任何 FEA,因为许多元素/面的面积接近零或高度扭曲。

在此处输入图像描述

有没有办法在给定顶点的情况下重新划分网格并确保特定的元素面/面指标(例如纵横比)或强制行进立方体做这样的事情?

只要网格是一个公平的近似值,我就不会担心移动顶点。

0 投票
1 回答
460 浏览

three.js - 带点着色器的threejs metaballs

我正在尝试在 2pha 制作的 ThreeJS 中测试一个简单的点着色器:https ://2pha.com/demos/threejs/shaders/simple_dots.html

使用 Marching Cubes 的元球似乎无法正常工作:https ://threejs.org/examples/webgl_marchingcubes.html 。这是UV坐标问题吗?ThreeJS 版本有一个enableUvs标志,但似乎还不够。

这里着色器传递给ShaderMaterial

0 投票
1 回答
421 浏览

python - 3D 点的平滑 Mayavi 可视化

这是我第一次在 3D 中进行可视化并与之合作,mayavi所以请原谅我缺乏知识。我有一个想要可视化的 3D Numpy。Array 表示一个体素网格,到目前为止,我尝试使用points3d,但可视化看起来并不流畅,这是我的代码:

这就是它的样子: 我的可视化

这就是我想要的样子: 期待

像这样让它顺利进行的最佳方法是什么?谢谢!!!

编辑:我发现我需要一个行进立方体算法,我怎么能在 python 中做到这一点,在mayavior中有什么东西vtk吗?

0 投票
0 回答
134 浏览

c++ - Visual Hull C++ 和行进立方体

我是 3D 建模领域的新手,我需要在 C++ 中创建一个视觉船体和行进立方体。所以,我有一组二进制掩码、相机矩阵,我想创建一个 STL 文件。我真的不明白这个算法是如何工作的,也许有人可以用简单的方式解释它。此外,您能否向我推荐一些可能对我有帮助的阅读论文和 c++ 库?

非常感谢!

0 投票
1 回答
679 浏览

python - 如何使用 mplot3d 设置网格的原点?

按照scikit-image doc中的示例,我使用行进立方体算法生成球面网格。我想将单位球壳居中于 x,y,z 网格定义的原点。但是,我不能这样做,因为我不知道如何将 x、y、z 信息与 mpl_toolkits.mplot3d.art3d.Poly3DCollection 一起放置。这是代码:

问题是marching_cubes_lewiner函数没有考虑x,y,z到。如网格所暗示的那样,如何将生成的球体居中于 0,0,0?

0 投票
1 回答
198 浏览

haskell - Haskell OpenGL 产生不受欢迎的阴影

我用 Haskell OpenGL 绘制了 Barth 六分仪,但出现了问题。我也在 R 中画了它(带有包rglmisc3d),没有问题。这两种算法(在 Haskell 和 R 中)非常相似。Barth sextic 是一个隐式曲面,在 Haskell 中,我使用行进立方体算法计算该曲面的三角剖分,该算法是通过将其中一个转换misc3d为 Haskell 和 C 得到的。我使用顶点法线,每个法线由隐式的梯度定义方程。

这是问题所在:

在此处输入图像描述

我不想要这些黑色阴影。当我看六分仪的背面时,旋转 180°,没有这样的阴影:

在此处输入图像描述

完整的代码可以在这个 Github repo中找到。以下是与颜色相关的代码部分:

我试图改变最后一段代码中的颜色,但没有办法摆脱这些阴影。我对颜色做坏事了吗?我确信法线是正确的,因为这在 R 中有效。但是阴影出现在表面不光滑的地方,所以我想知道问题是否是由法线引起的。

R 渲染:

gfycat

编辑

我设法摆脱了这些阴影:

在此处输入图像描述

真不知道怎么了,做了这么多尝试……不过不管怎样,现在的问题是sextic的背面太轻了:

在此处输入图像描述

0 投票
1 回答
1942 浏览

import - 如何使用 PCL io::loadPLYFile 导入 .ply 文件?

将 ply 文件导入我的程序时,我收到一条错误消息,指出以下消息出现问题:

我使用了一个示例层文件:https ://people.sc.fsu.edu/~jburkardt/data/ply/apple.ply

我已经尝试过来自不同来源的不同层文件,但它们都不起作用。调试程序时,io::loadPLYFile 不会生成有效的点云。PCL 和我的程序的运行时库是相同的。

我希望 PCL 函数 io::loadPLYFile 正确加载文件,如文档http://docs.pointclouds.org/1.3.1/group__io.html中所述

0 投票
0 回答
543 浏览

coordinates - 在 skimage 中缩放行进立方体算法输出的顶点坐标

我正在尝试使用skimage.measure.marching_cubes_lewiner来解决一些 isosurface f(x,y,z)=0。在我的情况下f是强非线性的,并且当坐标以对数间距给出时最好映射。因为行进立方体需要一个规则网格来构建体素,所以我正在处理与我的原始坐标X,Y,Z相对应的坐标网格网格log10,因此我的等值面由 等价地给出f(10**X,10**Y,10**Z)=0。一切都会好起来的,如果不是因为假设我正在使用X,Y,Zin [-1.5,2]^3(相当于x,y,zin [0.03,100.]^3),由 给出的解的顶点坐标skimage.measure.marching_cubes_lewiner不在这个立方体中。

在回答了关于 SO 的另一个相关问题之后,我认为这可能是因为该算法可能在考虑单一体积的情况下工作,因此我需要spacing在我的调用中设置正确的输入参数skimage.measure.marching_cubes_lewiner。以这种方式,假设我将我的函数映射到每个坐标f的点网格上N,以便我通过numpy.diff([-1.5,2])/N每个坐标增加指数,因此我调用:

然而,出乎意料的是,解点的坐标通常出现在[0,Vx]*[0,Vy]*[0,Vz],和Vx>XRange[-1]中。我不知道为什么会发生这种情况,也不知道如何正确地将等值面解决方案的坐标重新调整为问题的真实单位。Vy>YRange[-1]Vz>ZRange[-1]

0 投票
1 回答
217 浏览

c++ - 在标量场上进行行进立方体期间的插值问题

我有一个规则的方形网格,其中我所有的数据点都存储在质心。我有一个标量场(范围:0->1),它指示细胞内物质的数量。我有兴趣识别细胞内这种物质的界面(用于进一步处理而不是用于可视化)。

我遇到了行进立方体算法(http://paulbourke.net/geometry/polygonise/)。在这里,我需要单元格角落的值。所以我平均了相邻单元格的质心值。这种平均加上进一步的线性化以在 MC 中的“多边形化”期间找到交点,导致了诸如此类的非现实界面。

在此处输入图像描述

在这里,灰色细胞充满了物质,而它的邻居则只有最少量的物质。理想情况下,这应该非常接近 celtre 单元的边界。我觉得这是由于 0.25 和 0 之间的线性插值导致它远离其预期位置而发生的。

可以做些什么来解决这个问题吗?

0 投票
1 回答
3692 浏览

unity3d - “设置三角形失败。一些索引引用了超出边界的顶点。” 当边索引大于顶点数时

我试图让行进立方体算法统一工作,但是当我尝试根据三角测量表向我的顶点添加三角形时,我得到了标题中所述的错误

如果我尝试使用小于顶点长度的数字绘制三角形,它会起作用。

这是我收到的完整错误消息“设置三角形失败。某些索引引用超出边界的顶点。IndexCount:9,VertexCount:9 UnityEngine.Mesh:set_triangles(Int32[])”

我想在它们之间绘制三角形的角和顶点的图像

我的边缘映射方式的图像