<font size="2"><font face="verdana,sans-serif">True. <a href="http://www.vtk.org/Wiki/Improvements_in_VTK_5.6">http://www.vtk.org/Wiki/Improvements_in_VTK_5.6</a><br></font></font><br><div class="gmail_quote">2011/8/4 Joseph D. Wieber Jr. <span dir="ltr">&lt;<a href="mailto:jdwieber@gmail.com">jdwieber@gmail.com</a>&gt;</span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><u></u>

  
    
  
  <div bgcolor="#ffffff" text="#000000">
    Thanks for your reply.  Unfortunately, I don&#39;t see
    vtkGPUVolumeRayCastMapper in the version (5.4.2-8ubuntu4) I&#39;m
    using.  I guess it&#39;s time for an upgrade.<div><div></div><div class="h5"><br>
    <br>
    On 08/04/2011 05:45 AM, Dženan Zukić wrote:
    <blockquote type="cite"><font size="2"><font face="verdana,sans-serif">Have
          you tried vtkGPUVolumeRayCastMapper?<br>
        </font></font><br>
      <div class="gmail_quote">On Thu, Aug 4, 2011 at 02:59, Joseph D.
        Wieber Jr. <span dir="ltr">&lt;<a href="mailto:jdwieber@gmail.com" target="_blank">jdwieber@gmail.com</a>&gt;</span>
        wrote:<br>
        <blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">I apologize, I figured it out.  It was the
          single line in generateVolume that reads:
          spVolumeProperty-&gt;IndependentComponentsOff(); When I
          comment out this line, and uncomment the lines for linear
          interpolation and shading it looks very nice.  However, it&#39;s
          terribly slow.  I suspect that this version is software
          rendered.  Is there a similar hardware accelerated  method?<br>
          <br>
          Thanks
          <div>
            <div><br>
              <br>
              On 08/03/2011 07:18 PM, Joseph D. Wieber Jr. wrote:<br>
              <blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">
                <br>
                Hi all,<br>
                <br>
                I&#39;m trying to do some volume rendering using the below
                code, but nothing is showing in the render window.  When
                I run the code I see the window and the background color
                that I set, but no data.  The code cranks for about 5
                seconds before I see the default render window replaced
                (the default render window is white, and the volume
                render window is gray-ish).  I don&#39;t see error messages
                in the console either.<br>
                <br>
                I&#39;m using Qt with QVTKWidget to create the GUI.  I&#39;m
                obviously doing something wrong, but I don&#39;t see what it
                is.  Does anyone see what I&#39;m missing?  Thanks.<br>
                <br>
                Regards,<br>
                <br>
                Joseph<br>
                <br>
                void MainWindow::on_actionOpenDirectory_triggered()<br>
                {<br>
                   QString dirname = QFileDialog::getExistingDirectory(
                this,<br>
                                                                     
                 tr(&quot;Select a Directory&quot;),<br>
                                                                     
                 QDir::currentPath() );<br>
                   if( !dirname.isNull() )<br>
                   {<br>
                       string pattern( dirname.toStdString () );<br>
                       pattern += &quot;/%03d.png&quot;;<br>
                       cerr &lt;&lt; &quot;using pattern:&lt;&quot; &lt;&lt;
                pattern &lt;&lt; &quot;&gt;\n&quot;;<br>
                <br>
                       vtkSmartPointer&lt; vtkVolume &gt; spVolume =
                generateVolume ( pattern );<br>
                <br>
                       vtkSmartPointer&lt;vtkRenderWindow&gt; spRenWin =<br>
                               vtkSmartPointer&lt;vtkRenderWindow&gt;::New();<br>
                <br>
                       vtkSmartPointer&lt; vtkRenderer&gt; spRen =<br>
                               vtkSmartPointer&lt; vtkRenderer
                &gt;::New();<br>
                       spRen-&gt;AddViewProp ( spVolume );<br>
                <br>
                       spRenWin-&gt;AddRenderer( spRen );<br>
                       m_pUi-&gt;qvtkWidget-&gt;SetRenderWindow (
                spRenWin );<br>
                       vtkSmartPointer&lt; vtkRenderWindowInteractor
                &gt; spIren =<br>
                               m_pUi-&gt;qvtkWidget-&gt;GetInteractor
                ();<br>
                       spIren-&gt;SetRenderWindow( spRenWin );<br>
                       spRen-&gt;SetBackground( 0.2, 0.3, 0.4 );<br>
                       spRen-&gt;ResetCamera ();<br>
                <br>
                       //I tried this in place of ResetCamera, but id
                didn&#39;t work either<br>
                       //        vtkSmartPointer&lt; vtkCamera &gt;
                spCamera = spRen-&gt;GetActiveCamera();<br>
                       //        double* c = spVolume-&gt;GetCenter();<br>
                       //        spCamera-&gt;SetFocalPoint( c[ 0 ], c[
                1 ], c[ 2 ] );<br>
                       //        spCamera-&gt;SetPosition( c[ 0 ] + 400,
                c[ 1 ], c[ 2 ] );<br>
                       //        spCamera-&gt;SetViewUp( 0, 0, -1 );<br>
                <br>
                <br>
                       spRenWin-&gt;Render();<br>
                       m_pUi-&gt;qvtkWidget-&gt;setCursor (
                Qt::ArrowCursor );<br>
                   }<br>
                   else<br>
                   {<br>
                       //TODO: do something intelligent here!<br>
                   }<br>
                }<br>
                <br>
                <br>
                //---------------------------------------------------------------------------------------------------------------------------
                <br>
                vtkSmartPointer&lt; vtkVolume &gt;
                MainWindow::generateVolume( const std::string&amp;
                pattern )<br>
                {<br>
                   //m_spReader is a vtkSmartPointer&lt; vtkPNGReader
                &gt;<br>
                   m_spReader-&gt;SetFilePattern ( pattern.c_str () );<br>
                   m_spReader-&gt;SetFileNameSliceOffset ( 1 );//images
                start at 001.png<br>
                   //TODO: derive these from input<br>
                   m_spReader-&gt;SetDataExtent( 0, 511, 0, 511, 1, 370
                );//images go from 1 to 370<br>
                   m_spReader-&gt;SetDataSpacing( 1.0, 1.0, 1.0 ); // mm<br>
                   m_spReader-&gt;SetDataOrigin( 0, 0, 0 );<br>
                   m_spReader-&gt;SetDataScalarTypeToUnsignedChar();<br>
                   //m_spReader-&gt;Update();<br>
                <br>
                   vtkSmartPointer&lt; vtkPiecewiseFunction &gt;
                spOpacityTransferFunction =<br>
                           vtkSmartPointer&lt; vtkPiecewiseFunction
                &gt;::New();<br>
                   spOpacityTransferFunction-&gt;AddPoint( 0, 0.0 );<br>
                   spOpacityTransferFunction-&gt;AddPoint( 255, 1.0 );<br>
                <br>
                   vtkSmartPointer&lt; vtkVolumeProperty &gt;
                spVolumeProperty =<br>
                           vtkSmartPointer&lt; vtkVolumeProperty
                &gt;::New();<br>
                   spVolumeProperty-&gt;SetScalarOpacity( 0,
                spOpacityTransferFunction );<br>
                   spVolumeProperty-&gt;SetScalarOpacity( 1,
                spOpacityTransferFunction );<br>
                   spVolumeProperty-&gt;SetScalarOpacity( 2,
                spOpacityTransferFunction );<br>
                   spVolumeProperty-&gt;IndependentComponentsOff();<br>
                   spVolumeProperty-&gt;SetInterpolationTypeToLinear();<br>
                   //spVolumeProperty-&gt;ShadeOn();<br>
                   //spVolumeProperty-&gt;SetAmbient( 0.4 );<br>
                   //spVolumeProperty-&gt;SetDiffuse( 0.6 );<br>
                   //spVolumeProperty-&gt;SetSpecular( 0.2 );<br>
                <br>
                   vtkSmartPointer&lt; vtkFixedPointVolumeRayCastMapper
                &gt; spVolumeMapper =<br>
                           vtkSmartPointer&lt;
                vtkFixedPointVolumeRayCastMapper &gt;::New();<br>
                <br>
                   spVolumeMapper-&gt;SetInputConnection(
                m_spReader-&gt;GetOutputPort() );<br>
                <br>
                   vtkSmartPointer&lt; vtkVolume &gt; spVolume =<br>
                           vtkSmartPointer&lt; vtkVolume &gt;::New();<br>
                   spVolume-&gt;SetMapper( spVolumeMapper );<br>
                   spVolume-&gt;SetProperty( spVolumeProperty );<br>
                <br>
                   return spVolume;<br>
                }<br>
                <br>
              </blockquote>
              _______________________________________________<br>
              Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
              <br>
              Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
              <br>
              Please keep messages on-topic and check the VTK FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
              <br>
              Follow this link to subscribe/unsubscribe:<br>
              <a href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>
            </div>
          </div>
        </blockquote>
      </div>
      <br>
    </blockquote>
  </div></div></div>

</blockquote></div><br>