【问题标题】:Basic 3D voxel grid in MayaviMayavi 中的基本 3D 体素网格
【发布时间】:2016-05-23 10:13:20
【问题描述】:

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

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

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

【问题讨论】:

    标签: python graphics 3d vtk mayavi


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回答。有没有办法单独为体素着色?
    • 据我所知,您可以尝试使用自定义颜色图。或者您仍然可以使用不同的颜色迭代地绘制每个体素组。
    • 不错,但交互速度很慢。
    • @martinako 它的交互速度实际上非常快,即使是数百万个数据样本;您使用的是最新的 qt 吗?
    猜你喜欢
    • 2011-04-18
    • 2012-08-04
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    • 2022-10-30
    • 1970-01-01
    相关资源
    最近更新 更多