Базовая 3D воксельная сетка в Mayavi


Я пытаюсь визуализировать 3D массив через Mayavi в Python. Я просто хочу создать структурированную трехмерную сетку вокселя, в которой я могу показать некоторые заранее заданные точки заполнения воксельного пространства. Я не думаю, что хочу

Единственный пример, который я могу найти, который я считаю относительно релевантным, - этоЭтот пример МРТ . Я могу использовать следующий код, чтобы получить несколько работоспособный Пример:
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? Я в порядке, если нет визуализации iso-поверхности - на самом деле, я бы предпочел блочную воксельную визуализацию в стиле Minecraft.

1 3

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

Введите описание изображения здесь