如何在 VTK 中创建颜色图?
How do I create a colormap in VTK?
我在 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 中还有另一种我不知道的创建颜色图的更简单方法了解。
您应该添加数据数组并将其设置为标量(= 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())
你可以看看这个example(编辑:更新link感谢@paulo-carvalho)
添加到 Nico Vuaille 的回答中。可以使用查找 table 更改地图的颜色,例如:
lut = vtk.vtkLookupTable()
lut.SetHueRange(0, 0)
lut.SetSaturationRange(0, 0)
lut.SetValueRange(0.2, 1.0)
lut.Build()
和
Mapper.SetLookupTable(lut)
我在 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 中还有另一种我不知道的创建颜色图的更简单方法了解。
您应该添加数据数组并将其设置为标量(= 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())
你可以看看这个example(编辑:更新link感谢@paulo-carvalho)
添加到 Nico Vuaille 的回答中。可以使用查找 table 更改地图的颜色,例如:
lut = vtk.vtkLookupTable()
lut.SetHueRange(0, 0)
lut.SetSaturationRange(0, 0)
lut.SetValueRange(0.2, 1.0)
lut.Build()
和
Mapper.SetLookupTable(lut)