<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">Hi,<br>
      <br>
      Below is the code that demonstrates how I currently make
      vtkImageData that is not transparent, also attached is an image of
      the window showing this for this example code.<br>
      <br>
      Right now I dont see how to modify this to make the zero values
      transparent. Any help would be greatly appreciated.<br>
      <br>
      Thanks<br>
      Alex<br>
      <br>
      #include &lt;iostream&gt;<br>
      #include &lt;vtkSmartPointer.h&gt; <br>
      #include &lt;vtkActor.h&gt;<br>
      #include &lt;vtkRenderWindow.h&gt;<br>
      #include &lt;vtkRenderWindowInteractor.h&gt;<br>
      #include &lt;vtkRenderer.h&gt;<br>
      #include &lt;vtkLookupTable.h&gt;<br>
      #include &lt;vtkFloatArray.h&gt;<br>
      #include &lt;vtkPointData.h&gt;<br>
      #include &lt;vtkImageMapToColors.h&gt;<br>
      #include &lt;vtkImageActor.h&gt;<br>
      #include &lt;vtkScalarBarActor.h&gt;<br>
      #include &lt;vtkImageData.h&gt;<br>
      #include &lt;vtkCubeSource.h&gt;<br>
      #include &lt;vtkPolyDataMapper.h&gt;<br>
      #include &lt;vtkProperty.h&gt;<br>
      <br>
      using namespace std;<br>
      <br>
      vtkSmartPointer&lt;vtkLookupTable&gt; setupLookupTable(void)<br>
      {<br>
      &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkLookupTable&gt; table =
      vtkSmartPointer&lt;vtkLookupTable&gt;::New();<br>
      &nbsp;&nbsp;&nbsp; double r = 1.0; double g = 1.0; double b = 0.0;<br>
      &nbsp;&nbsp;&nbsp; for (int x = 0; x &lt; 64 ; x++)&nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (x &gt; 32) {&nbsp;&nbsp;&nbsp; r = r + 0.0258; g = g - 0.0129; b = b
      - 0.0258;&nbsp;&nbsp;&nbsp; }<br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (x == 32){&nbsp;&nbsp;&nbsp; r = 0.2; g = 0.4; b = 0.8;&nbsp;&nbsp;&nbsp; }<br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (x &lt; 32)&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp; r = r - 0.025;&nbsp;&nbsp;&nbsp; g = g -
      0.0188;&nbsp;&nbsp;&nbsp; b = b + 0.025;&nbsp;&nbsp;&nbsp; }<br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; table-&gt;SetTableValue(x,r,g,b,1.0);&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; }<br>
      &nbsp;&nbsp;&nbsp; table-&gt;SetTableValue(32,0.2,0.4,0.8,1.0); // make sure
      middle value matches background<br>
      &nbsp;&nbsp;&nbsp; return table;<br>
      }<br>
      <br>
      void generateArrayData( float *p, int L, int W )<br>
      {&nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; L*W; i++ ) // Generate random numbers
      between -1.0 and 1.0<br>
      &nbsp;&nbsp;&nbsp; { p[i] = 2.0*(((double)(rand() / (RAND_MAX + 1.0)))-0.5); }&nbsp;&nbsp;&nbsp;
      &nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; for (int x = 20; x &lt; 50; x++ ) // Add some zeros (these
      will be transparent)<br>
      &nbsp;&nbsp;&nbsp; { <br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for (int y = 40; y &lt; 70; y++ )<br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { <br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p[x*W + y] = 0.0; <br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } <br>
      &nbsp;&nbsp;&nbsp; }<br>
      }<br>
      <br>
      int main(int argc, char **argw)<br>
      {<br>
      &nbsp;&nbsp;&nbsp; int L = 100; int W = 100; int H = 50; int len = L*W;<br>
      &nbsp;&nbsp;&nbsp; float *myArray;<br>
      &nbsp;&nbsp;&nbsp; myArray = new float [len];<br>
      <br>
      &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkCubeSource&gt; cube =
      vtkSmartPointer&lt;vtkCubeSource&gt;::New();<br>
      &nbsp;&nbsp;&nbsp; cube-&gt;SetXLength(L);&nbsp;&nbsp;&nbsp; cube-&gt;SetYLength(W);&nbsp;&nbsp;&nbsp;
      cube-&gt;SetZLength(H);<br>
      &nbsp;&nbsp;&nbsp; cube-&gt;SetCenter(L/2,W/2,-H);<br>
      <br>
      &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkPolyDataMapper&gt; mapper =
      vtkSmartPointer&lt;vtkPolyDataMapper&gt;::New(); <br>
      &nbsp;&nbsp;&nbsp; mapper-&gt;SetInput(cube-&gt;GetOutput());<br>
      <br>
      &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkActor&gt; cubeActor =
      vtkSmartPointer&lt;vtkActor&gt;::New();<br>
      &nbsp;&nbsp;&nbsp; cubeActor-&gt;SetMapper( mapper );<br>
      &nbsp;&nbsp;&nbsp; cubeActor-&gt;GetProperty()-&gt;SetColor(0.0,1.0,0.0); // make
      green<br>
      <br>
      &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkFloatArray&gt; data =
      vtkSmartPointer&lt;vtkFloatArray&gt;::New();&nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; generateArrayData( myArray, L, W );<br>
      &nbsp;&nbsp;&nbsp; data-&gt;SetArray(myArray,L*W,1);<br>
      <br>
      &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkImageData&gt; imgData2DVw =
      vtkSmartPointer&lt;vtkImageData&gt;::New();<br>
      &nbsp;&nbsp;&nbsp; imgData2DVw-&gt;SetOrigin(0,0,0);<br>
      &nbsp;&nbsp;&nbsp; imgData2DVw-&gt;SetNumberOfScalarComponents(1);<br>
      &nbsp;&nbsp;&nbsp; imgData2DVw-&gt;SetScalarTypeToFloat();<br>
      &nbsp;&nbsp;&nbsp; imgData2DVw-&gt;SetExtent(0,L,0,W,0,0);<br>
      &nbsp;&nbsp;&nbsp; imgData2DVw-&gt;SetSpacing(1.0,1.0,1.0);<br>
      &nbsp;&nbsp;&nbsp; imgData2DVw-&gt;AllocateScalars();&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; imgData2DVw-&gt;GetPointData()-&gt;SetScalars(data);<br>
      <br>
      &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkLookupTable&gt; table =
      setupLookupTable();<br>
      <br>
      &nbsp;&nbsp;&nbsp; table-&gt;SetNumberOfTableValues(64);<br>
      &nbsp;&nbsp;&nbsp; table-&gt;Build();<br>
      &nbsp;&nbsp;&nbsp; table-&gt;SetScaleToLinear();<br>
      &nbsp;&nbsp;&nbsp; table-&gt;SetRange(-1.0,1.0);<br>
      <br>
      &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkImageMapToColors&gt; color =
      vtkSmartPointer&lt;vtkImageMapToColors&gt;::New();<br>
      &nbsp;&nbsp;&nbsp; color-&gt;SetLookupTable(table);<br>
      &nbsp;&nbsp;&nbsp; color-&gt;SetInput(imgData2DVw);&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>
      <br>
      &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkImageActor&gt; imActor =
      vtkSmartPointer&lt;vtkImageActor&gt;::New();<br>
      &nbsp;&nbsp;&nbsp; imActor-&gt;SetInput(color-&gt;GetOutput());<br>
      &nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkScalarBarActor&gt; colorBar =
      vtkSmartPointer&lt;vtkScalarBarActor&gt;::New();<br>
      &nbsp;&nbsp;&nbsp; colorBar-&gt;SetLookupTable(table);&nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp;
colorBar-&gt;GetPositionCoordinate()-&gt;SetCoordinateSystemToNormalizedViewport();<br>
      &nbsp;&nbsp;&nbsp; colorBar-&gt;GetPositionCoordinate()-&gt;SetValue(0.1, 0.01);<br>
      &nbsp;&nbsp;&nbsp; colorBar-&gt;SetOrientationToHorizontal();<br>
      &nbsp;&nbsp;&nbsp; colorBar-&gt;SetWidth(0.8);<br>
      &nbsp;&nbsp;&nbsp; colorBar-&gt;SetHeight(0.12);&nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkRenderer&gt; ren1 =
      vtkSmartPointer&lt;vtkRenderer&gt;::New();<br>
      &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkRenderWindow&gt; renWin =
      vtkSmartPointer&lt;vtkRenderWindow&gt;::New();<br>
      &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkRenderWindowInteractor&gt; iren =
      vtkSmartPointer&lt;vtkRenderWindowInteractor&gt;::New();<br>
      <br>
      &nbsp;&nbsp;&nbsp; renWin-&gt;AddRenderer( ren1 );<br>
      &nbsp;&nbsp;&nbsp; iren-&gt;SetRenderWindow( renWin );<br>
      &nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; ren1-&gt;AddActor(colorBar); // Add Actors<br>
      &nbsp;&nbsp;&nbsp; ren1-&gt;AddActor(imActor);<br>
      &nbsp;&nbsp;&nbsp; ren1-&gt;AddActor(cubeActor);<br>
      &nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; ren1-&gt;SetBackground(0.2, 0.4, 0.8);&nbsp; // window background
      colour<br>
      <br>
      &nbsp;&nbsp;&nbsp; renWin-&gt;Render();<br>
      <br>
      &nbsp;&nbsp;&nbsp; iren-&gt;Start();<br>
      <br>
      &nbsp;&nbsp;&nbsp; delete []myArray;<br>
      &nbsp; return 0;<br>
      }<br>
      <br>
      <img src="cid:part1.05080101.03050303@gmail.com" alt=""
        height="252" width="204"><br>
      <br>
      <br>
      On 7/10/2012 8:56 AM, Najzero wrote:<br>
    </div>
    <blockquote cite="mid:1341899805821-5714583.post@n5.nabble.com"
      type="cite">
      <pre wrap="">Hi Alex,

you might wanna have a look into vtkLookupTable

We use it for example to have "black" values to be transparent.

First build the lookuptable, then apply to the texture.

&lt;snippet we use&gt;
body-&gt;_volume.reset( new dicom::modDicomVolume );
    body-&gt;_lookupTable = vtkSmartPointer&lt;vtkLookupTable&gt;::New();
    body-&gt;_bmpPixelData = vtkSmartPointer&lt;modImage&gt;::New();   // Pixeldaten
    body-&gt;_bmpPolyData = vtkSmartPointer&lt;vtkPolyData&gt;::New(); //
Polygondaten
    body-&gt;_texture = vtkSmartPointer&lt;vtkTexture&gt;::New();      // Textur

    //=== set lookup table so it shows black values transparent
    body-&gt;_lookupTable-&gt;SetNumberOfColors( 255 );
    body-&gt;_lookupTable-&gt;SetTableRange( 0.0, 256 * 256 - 1 );
    body-&gt;_lookupTable-&gt;SetHueRange( 0.0, 0.0 );
    body-&gt;_lookupTable-&gt;SetSaturationRange( 0.0, 0.0 );
    body-&gt;_lookupTable-&gt;SetAlphaRange( 0.0, 1.0 );
    body-&gt;_lookupTable-&gt;Build();

    body-&gt;_texture-&gt;SetInput( body-&gt;_bmpPixelData ); // Der Textur die
Pixeldaten zuweisen
    body-&gt;_texture-&gt;MapColorScalarsThroughLookupTableOn();
    body-&gt;_texture-&gt;SetLookupTable( body-&gt;_lookupTable ); // Der Textur die
Lookup-Table zuweisen

    body-&gt;_texture-&gt;InterpolateOn();



KR Adrian

--
View this message in context: <a class="moz-txt-link-freetext" href="http://vtk.1045678.n5.nabble.com/Transparent-values-of-vtkImageData-tp5714562p5714583.html">http://vtk.1045678.n5.nabble.com/Transparent-values-of-vtkImageData-tp5714562p5714583.html</a>
Sent from the VTK - Users mailing list archive at Nabble.com.
_______________________________________________
Powered by <a class="moz-txt-link-abbreviated" href="http://www.kitware.com">www.kitware.com</a>

Visit other Kitware open-source projects at <a class="moz-txt-link-freetext" href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a>

Please keep messages on-topic and check the VTK FAQ at: <a class="moz-txt-link-freetext" href="http://www.vtk.org/Wiki/VTK_FAQ">http://www.vtk.org/Wiki/VTK_FAQ</a>

Follow this link to subscribe/unsubscribe:
<a class="moz-txt-link-freetext" href="http://www.vtk.org/mailman/listinfo/vtkusers">http://www.vtk.org/mailman/listinfo/vtkusers</a>
</pre>
    </blockquote>
    <br>
    <br>
  </body>
</html>