Python 基于VTK中的位置为体素着色
我有一个3D体素图像,我想用VTK渲染。数据基本上以3D数组的形式给出,其中每个元素都是一个元组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
(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,因为它更容易使用:)