如何在VTK中创建一个colormap?

问题描述 投票:0回答:1

我在VTK中创建了一个简单的非结构化正方形。

x = [0,10,0,10]
y = [0, 0, 10, 10]
z = [0,0,0,0]
data = np.asarray([x,y,z]).T
for i in range(0, len(x)):
    points.InsertPoint(i, data[i])
quad = [2,3,1,0]
ugrid.InsertNextCell(vtk.VTK_QUAD, 4, quad)
ugrid.SetPoints(points)

说我想创建一个正方形的温度柱状图。我知道角落的温度。

 temp = [0,20,40,60]

我怎么能在知道这些值的情况下给整个正方形上色呢?

VTK在他们的教程中提供了一个创建colormap的例子(ColoredElevationMap教程),然而,我并没有完全理解它,我相信在VTK中还有另一种我不知道的更简单的方法来创建colormap。

python c++ vtk
1个回答
2
投票

你应该添加你的数据数组,并将其设置为标量(=默认数组在VTK中使用,特别是用于着色)

temperature = vtk.vtkIntArray()
temperature.SetName("Temp")
temp = [00,20,40,60]
for t in temp:
    temperature.InsertNextValue(t)

ugrid.GetPointData().SetScalars(temperature)

然后在渲染部分,这个数组将被默认用于着色。你仍然需要更新颜色范围

mapper.SetScalarRange(ugrid.GetScalarRange())

你可以看看这个例子。https:/lorensen.github.ioVTKExamplessitePythonRenderingRainbow。


1
投票

补充一下Nico Vuaille的回答。可以使用查找表改变地图的颜色,如。

lut = vtk.vtkLookupTable()
lut.SetHueRange(0, 0)
lut.SetSaturationRange(0, 0)
lut.SetValueRange(0.2, 1.0)
lut.Build()

Mapper.SetLookupTable(lut)
© www.soinside.com 2019 - 2024. All rights reserved.