Mayavi 中的基本 3D 体素网格

Basic 3D voxel grid in Mayavi

我正在尝试通过 Mayavi 在 Python 中可视化 3D 阵列。我只是想创建一个结构化的 3D 体素网格,我可以在其中显示一些预先指定的体素-space-填充点。我不认为我想要

我能找到的唯一一个我认为比较相关的例子是this MRI example。我可以使用以下代码来获得一个有点可行的示例:

import numpy as np
from mayavi import mlab

data = (100, 100, 100)
data = np.zeros(data)
data[0:50, 50:70, 0:50] = 1
data[0:50, 0:20, 0:50] = 1

src = mlab.pipeline.scalar_field(data)
outer = mlab.pipeline.iso_surface(src)

mlab.show()

这能够生成以下图像: 如您所见,并非所有方框的边都已生成,即使这些点与生成的方框的边具有相同的值。

有没有办法可视化 numpy 数组中值等于 1 的每个点?如果没有等值面可视化,我也很好——事实上,我更喜欢一些 Minecraft 风格的块状体素可视化。

import mayavi.mlab
import numpy

data = (100, 100, 100)
data = numpy.zeros(data)
data[0:50, 50:70, 0:50] = 1
data[0:50, 0:20, 0:50] = 1

xx, yy, zz = numpy.where(data == 1)

mayavi.mlab.points3d(xx, yy, zz,
                     mode="cube",
                     color=(0, 1, 0),
                     scale_factor=1)

mayavi.mlab.show()