4

Qt/VTKアプリケーションでEnSightファイルを表示しようとしています。より正確には、特定のEnSightパーツを表示し、ベクトル変数の1つの大きさで色を付けたいと思います。私が理解している限り、VTKリーダーの出力はであり、vtkMultiBlockDataSetパーツごとに1つのブロックがあります。各ブロックはavtkUnstructuredGridであり、変数はの特定の配列pointdataです。

私がこれまでに持っているコードは以下の通りです。残念ながら、それは均一な色を示しています(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)
4

1 に答える 1