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()
我正在尝试通过 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()