4
我試圖在Qt/VTK應用程序中顯示EnSight文件。更確切地說,我想顯示一個特定的EnSight零件,並通過其中一個矢量變量的大小來給它着色。據我所知,VTK閱讀器的輸出是一個vtkMultiBlockDataSet
,每部分一個塊。每個塊是vtkUnstructuredGrid
,變量是pointdata
中的特定數組。向量大小着色vtkUnstructuredGrid
我到目前爲止的代碼如下。不幸的是,它顯示了統一的顏色(當在ParaView中加載相同的文件時,它顯示了一些局部變化)。
顯然我錯過了一些東西,但我不知道在哪裏。我會很感激任何提示。
casefile = "data/Results/exported/blahblah.case"
part_id = 0
var_id = 2
reader = vtk.vtkGenericEnSightReader()
reader.SetCaseFileName(casefile)
reader.Update()
# Color map
colormap = vtk.vtkLookupTable()
colormap.SetHueRange(0.667, 0.0)
colormap.SetVectorModeToMagnitude()
colormap.Build()
multiblock = reader.GetOutput()
ugrid = multiblock.GetBlock(part_id)
pointdata = ugrid.GetPointData()
data = pointdata.GetArray(var_id)
data_range = data.GetRange(-1)
mesh_mapper = vtk.vtkDataSetMapper()
mesh_mapper.SetInput(ugrid)
mesh_mapper.SetColorModeToDefault()
mesh_mapper.SetScalarRange(data_range)
mesh_mapper.SetScalarVisibility(True)
mesh_mapper.SetLookupTable(colormap)
#
mesh_actor = vtk.vtkActor()
mesh_actor.SetMapper(mesh_mapper)
mesh_actor.GetProperty().SetDiffuseColor(1., 1., 1.)
renderer = vtk.vtkRenderer()
renderer.AddActor(mesh_actor)
renderer.AddActor2D(colorbar)