<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style id="owaParaStyle" type="text/css">P {margin-top:0;margin-bottom:0;}</style>
</head>
<body ocsi="0" fpstyle="1">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">Hi,
<br>
<br>
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.<br>
<br>
I am using the vtkColorTransferFunction::SetColorSpaceTo...() to choose between Divergingm Lab, RGB and HSV.<br>
<br>
<b>1- Problem : Diverging and Lab do their job, RGB and HSV don't : </b><br>
<ul>
<li>Diverging : <a href="http://hpics.li/ba7907f" target="_blank">http://hpics.li/ba7907f</a></li><li>Lab : <a href="http://hpics.li/a36da83" target="_blank">http://hpics.li/a36da83</a></li><li>RGB &amp; HSV : <a href="http://hpics.li/53b5d5d" target="_blank">http://hpics.li/53b5d5d</a></li></ul>
<br>
<i>My code :</i><br>
****************************************************************************************************************************&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Range<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double *rangeLUT = mapper-&gt;GetInput()-&gt;GetPointData()-&gt;GetScalars()-&gt;GetRange();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double range = fabs(rangeLUT[1] - rangeLUT[0]);<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //LookUpTable<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkColorTransferFunction&gt; DistanceMapTFunc = vtkSmartPointer&lt;vtkColorTransferFunction&gt;::New();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DistanceMapTFunc-&gt;AddRGBPoint(rangeLUT[0], 0, 255, 0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Min value to green<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DistanceMapTFunc-&gt;AddRGBPoint(rangeLUT[0] &#43; range/2.0, 255, 255, 0);&nbsp; // Middle of the range to yellow<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DistanceMapTFunc-&gt;AddRGBPoint(rangeLUT[1], 255, 0, 0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; // Max value to red<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Color Space<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cspace == &quot;Diverging&quot;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DistanceMapTFunc-&gt;SetColorSpaceToDiverging();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(cspace == &quot;Lab&quot;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DistanceMapTFunc-&gt;SetColorSpaceToLab();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(cspace == &quot;RGB&quot;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DistanceMapTFunc-&gt;SetColorSpaceToRGB();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(cspace == &quot;HSV&quot;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DistanceMapTFunc-&gt;SetColorSpaceToHSV();<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Mapper Update<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapper-&gt;SetLookupTable( DistanceMapTFunc );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapper-&gt;ScalarVisibilityOn();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapper-&gt;Update();<br>
****************************************************************************************************************************&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
<br>
<br>
<br>
<b>2- Black value at minimum Range :<br>
<br>
</b>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 :<br>
<a href="http://hpics.li/2ce35fb" target="_blank">http://hpics.li/2ce35fb</a><br>
<br>
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.<br>
By doing this I actually &quot;erased&quot; the black values from the surface, but not the scalarbar : I only have a lower min and still black :<br>
<a href="http://hpics.li/9315fec" target="_blank">http://hpics.li/9315fec</a><br>
<b><br>
<br>
</b><b>3- Are those functions useful? Nothing seems to change in my code (already implemented):</b><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapper-&gt;SetScalarRange(rangeLUT[0],rangeLUT[1]);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapper-&gt;SetScalarModeToUsePointData();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapper-&gt;SetColorModeToMapScalars();<br>
<br>
<br>
If you have the answer to any of those questions, please let me know!<br>
Thanks all.<br>
<br>
</div>
</body>
</html>