我正在尝试使用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(只是没有不透明度),它可以工作。任何人都知道为什么这不起作用?我应该一样吗?
感谢您的帮助。
答案 0 :(得分:4)
从您的伪代码中,可能会丢失两行。
lut.SetTableRange(0.0,6.0)
lut.Build()
你打电话给这些功能吗?
如果不是这个问题那么可能是因为你正在使用的polydatamapper。你能为你的问题提交一个完整的管道吗?
作为指南,需要调用以下代码以允许您的标量值 添加到映射器并正确显示。
mapper.SetLookupTable(lut)
mapper.SetScalarVisibility(1)
mapper.SetScalarRange(0.0,6.0)