Mayavi中的基本3D体素网格

时间:2016-05-23 10:13:21

标签: python graphics 3d vtk mayavi

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

我认为我认为唯一相关的例子是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()

这可以生成以下图像: enter image description here enter image description here 如您所见,并非生成框的所有边都生成,即使这些边与生成的框的边具有相同的值。

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

1 个答案:

答案 0 :(得分:6)

<强>您好

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()

enter image description here