[vtkusers] vtkColorTransferFunction - ColorSpace + Range problems

Girault, Alexis girault at email.unc.edu
Thu Aug 15 15:37:40 EDT 2013


Hi,

I try to display colors to describe the scalars value of points in surfaces. When doing this, I'd like to choose between different color spaces to interpolate points color to create the colormap.

I am using the vtkColorTransferFunction::SetColorSpaceTo...() to choose between Divergingm Lab, RGB and HSV.

1- Problem : Diverging and Lab do their job, RGB and HSV don't :

  *   Diverging : http://hpics.li/ba7907f
  *   Lab : http://hpics.li/a36da83
  *   RGB & HSV : http://hpics.li/53b5d5d

My code :
****************************************************************************************************************************
        //Range
        double *rangeLUT = mapper->GetInput()->GetPointData()->GetScalars()->GetRange();
        double range = fabs(rangeLUT[1] - rangeLUT[0]);

        //LookUpTable
        vtkSmartPointer<vtkColorTransferFunction> DistanceMapTFunc = vtkSmartPointer<vtkColorTransferFunction>::New();
        DistanceMapTFunc->AddRGBPoint(rangeLUT[0], 0, 255, 0);                           // Min value to green
        DistanceMapTFunc->AddRGBPoint(rangeLUT[0] + range/2.0, 255, 255, 0);  // Middle of the range to yellow
        DistanceMapTFunc->AddRGBPoint(rangeLUT[1], 255, 0, 0);                           // Max value to red

        //Color Space
        if(cspace == "Diverging")       DistanceMapTFunc->SetColorSpaceToDiverging();
        else if(cspace == "Lab")         DistanceMapTFunc->SetColorSpaceToLab();
        else if(cspace == "RGB")        DistanceMapTFunc->SetColorSpaceToRGB();
        else if(cspace == "HSV")        DistanceMapTFunc->SetColorSpaceToHSV();

        //Mapper Update
        mapper->SetLookupTable( DistanceMapTFunc );
        mapper->ScalarVisibilityOn();
        mapper->Update();
****************************************************************************************************************************


2- Black value at minimum Range :

Even if I add a Green point at rangeLUT[0], my min value is black, as you can see both on the surface and the scalarbar :
http://hpics.li/2ce35fb

I tought it might be because something was rounding when displaying colors, so I evaluated the error as the the range divided by the number of colors, which gives us range/256. Then I add it to the max and remove it to the min.
By doing this I actually "erased" the black values from the surface, but not the scalarbar : I only have a lower min and still black :
http://hpics.li/9315fec


3- Are those functions useful? Nothing seems to change in my code (already implemented):
        mapper->SetScalarRange(rangeLUT[0],rangeLUT[1]);
        mapper->SetScalarModeToUsePointData();
        mapper->SetColorModeToMapScalars();


If you have the answer to any of those questions, please let me know!
Thanks all.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20130815/dc0c7a78/attachment.htm>


More information about the vtkusers mailing list