用向量magnitud对vtkun结构网格着色

2024-06-01 01:23:31 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试在vtm/an应用程序中显示vtm/an。更准确地说,我想显示一个特定的亮度部分,并根据其中一个向量变量的大小给它着色。据我所知,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)

Tags: aniddatareaderrendereractormappervtk
1条回答
网友
1楼 · 发布于 2024-06-01 01:23:31
colormap = vtk.vtkLookupTable()
colormap.SetHueRange(0.667, 0.0)
colormap.SetVectorModeToMagnitude()
colormap.Build()

将生成一个范围介于0和1之间的lookuptable。这是示例数据中的数据范围吗?

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

相关问题 更多 >