【问题标题】:Coloring a vtkUnstructuredGrid by vector magnitude通过矢量幅度为 vtkUnstructuredGrid 着色
【发布时间】:2012-07-16 08:08:43
【问题描述】:

我正在尝试在 Qt/VTK 应用程序中显示 EnSight 文件。更准确地说,我想显示一个特定的 EnSight 部件,并根据其中一个矢量变量的大小对其进行着色。据我了解,VTK 阅读器的输出是vtkMultiBlockDataSet,每个部分一个块。每个块都是一个vtkUnstructuredGrid,变量是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)

【问题讨论】:

    标签: python qt vtk paraview


    【解决方案1】:
    colormap = vtk.vtkLookupTable()
    colormap.SetHueRange(0.667, 0.0)
    colormap.SetVectorModeToMagnitude()
    colormap.Build()
    

    将生成一个范围在 0 和 1 之间的查找表。这是您的示例数据中的数据范围吗?

    如果没有,请将数据范围设置为 data_range 元组中的最小值/最大值,然后调用 Build() - 我认为这应该会有所帮助 - 你有示例数据吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多