1

我正在尝试使用 vtkLookupTable 为我的网格设置颜色。我从 vtkColorTransferFunction 开始,它工作得很好,只是它不能让我为各种颜色设置不透明度。vtkLookupTable 提供了这个机会,但我无法让它工作。

我的 vtkPolyData 设置了标量值,用于确定它们将获得的颜色。总共 7 个值,使用标量 0 到 6 设置。

我的 vtkLookupTable 看起来像这样:

vtkLookupTable lut = new vtkLookupTable();
    lut.SetNumberOfColors(7);
    double opacity = 0.3;
    lut.SetTableValue(0, 0, 0, 1, opacity);
    lut.SetTableValue(1, 0, 1.0, 0, opacity);
    lut.SetTableValue(2, 0.6, 1.0, 0.0, opacity);
    lut.SetTableValue(3, 1.0, 1.0, 0.0, 0.7);
    lut.SetTableValue(4, 1.0, 0.8, 0.0, opacity);
    lut.SetTableValue(5, 1.0, 0.4, 0.0, opacity);
    lut.SetTableValue(6, 1.0, 0.0, 0.0, 1);

如果我使用具有相同值(只是没有不透明度)的 vtkColorTransferFunction,它就可以工作。有人知道为什么这不起作用吗?我应该一样吗?

感谢帮助。

4

1 回答 1

4

从您的伪代码中,可能缺少两行。

     lut.SetTableRange(0.0,6.0)
     lut.Build()

你会调用这些函数吗?

如果不是这个问题,那么可能是因为您使用的 polydatamapper。你可以为你的问题提交一个完整的管道吗?

作为指导,需要调用以下代码以允许将标量值添加到映射器并正确可视化。

    mapper.SetLookupTable(lut)
    mapper.SetScalarVisibility(1)
    mapper.SetScalarRange(0.0,6.0)
于 2012-06-13T00:16:29.650 回答