簡體   English   中英

根據VTK中的位置着色體素

[英]Coloring a voxel based on position in 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, 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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM