Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于VTK中的位置为体素着色_Python_Multidimensional Array_Graphics_3d_Vtk - Fatal编程技术网

Python 基于VTK中的位置为体素着色

Python 基于VTK中的位置为体素着色,python,multidimensional-array,graphics,3d,vtk,Python,Multidimensional Array,Graphics,3d,Vtk,我有一个3D体素图像,我想用VTK渲染。数据基本上以3D数组的形式给出,其中每个元素都是一个元组(r,g,b,a)。下面是我用来生成数据的代码 data_matrix = np.ndarray([500, 500, 500], dtype=([('r','u1'), ('g','u1'), ('b','u1'), ('a','u1')])) data_matrix.fill((0, 0, 0, 0)) for i in range(0, 200): for j in range(0, 2

我有一个3D体素图像,我想用VTK渲染。数据基本上以3D数组的形式给出,其中每个元素都是一个元组
(r,g,b,a)
。下面是我用来生成数据的代码

data_matrix = np.ndarray([500, 500, 500], dtype=([('r','u1'), ('g','u1'), ('b','u1'), ('a','u1')]))
data_matrix.fill((0, 0, 0, 0))
for i in range(0, 200):
    for j in range(0, 200):
        for k in range(100, 400):
            data_matrix[i][j][k] = (255, 255, 255, 255)

dataImporter = vtk.vtkImageImport()
data_string = data_matrix.tostring()
dataImporter.CopyImportVoidPointer(data_string, len(data_string))

dataImporter.SetDataScalarTypeToUnsignedChar()
dataImporter.SetNumberOfScalarComponents(4)
dataImporter.SetDataExtent(0, 499, 0, 499, 0, 499)
dataImporter.SetWholeExtent(0, 499, 0, 499, 0, 499)

# generic rendering after this line
根据我的理解,
(0,0,0,0)
表示
a=0
,因此应该使任何不感兴趣的内容都是透明的。但是,这不会发生,从而产生以下图像,其中周围部分透明

我的猜测是,我设置的数据管道是错误的,但我不确定到底出了什么问题。我还没有找到任何相关的例子,文档也有点简洁


我可以看看你是如何渲染的吗,我不认为你的数据是错误的。尽管在你的数据矩阵中,你只取了3个值

data_matrix[i][j][k] = (255, 255, 255, 255)

你可能应该在4个位置,但它们不应该都是255个

我可以看看你是如何渲染的吗,我不认为你的数据是错误的。尽管在你的数据矩阵中,你只取了3个值

data_matrix[i][j][k] = (255, 255, 255, 255)

你可能应该在4个位置,但它们不应该都是255个

这是在回答和评论之间的边界。请你把你的建议具体一点好吗?这是一个很老的问题,我想我最终使用了Mayavi,因为它更容易使用:)这是一个介于答案和评论之间的边界。你能把你的建议具体一点吗?这是一个很老的问题,我想我最终使用了Mayavi,因为它更容易使用:)