如何在VTK中创建颜色贴图?

2024-06-11 21:09:44 发布

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

我在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在他们的教程(ColoredElevationMap教程)中提供了一个创建颜色贴图的示例,但是,我不完全理解它,我相信还有另一种更简单的方法可以在VTK中创建颜色贴图,我不知道


Tags: infordata颜色nprange教程温度
2条回答

尼科·韦勒的回答补充道。可以使用查找表更改地图的颜色,例如:

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

Mapper.SetLookupTable(lut)

您应该添加数据数组并将其设置为标量(=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.io/VTKExamples/site/Python/Rendering/Rainbow/

相关问题 更多 >