【问题标题】:How do I create a colormap in VTK?如何在 VTK 中创建颜色图?
【发布时间】:2020-05-06 21:36:41
【问题描述】:

我在 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 中创建颜色图.

【问题讨论】:

    标签: python c++ vtk


    【解决方案1】:

    您应该添加数据数组并将其设置为标量(= 在 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编辑:感谢@paulo-carvalho 更新链接)

    【讨论】:

    【解决方案2】:

    添加到 Nico Vuaille 的答案。可以使用查找表更改地图的颜色,例如:

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

    Mapper.SetLookupTable(lut)
    

    【讨论】:

      猜你喜欢
      • 2020-09-04
      • 2021-09-20
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      • 2016-04-07
      • 1970-01-01
      • 1970-01-01
      • 2020-03-08
      相关资源
      最近更新 更多