<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">jdwieber@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">I apologize, I figured it out.  It was the single line in generateVolume that reads: spVolumeProperty-&gt;<u></u>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></div><div class="h5"><br>
<br>
On 08/03/2011 07:18 PM, Joseph D. Wieber Jr. wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;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_<u></u>actionOpenDirectory_triggered(<u></u>)<br>
{<br>
    QString dirname = QFileDialog::<u></u>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;<u></u>vtkRenderWindow&gt; spRenWin =<br>
                vtkSmartPointer&lt;<u></u>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;<u></u>SetRenderWindow ( spRenWin );<br>
        vtkSmartPointer&lt; vtkRenderWindowInteractor &gt; spIren =<br>
                m_pUi-&gt;qvtkWidget-&gt;<u></u>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>
//----------------------------<u></u>------------------------------<u></u>------------------------------<u></u>------------------------------<u></u>----- <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;<u></u>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;<u></u>SetDataScalarTypeToUnsignedCha<u></u>r();<br>
    //m_spReader-&gt;Update();<br>
<br>
    vtkSmartPointer&lt; vtkPiecewiseFunction &gt; spOpacityTransferFunction =<br>
            vtkSmartPointer&lt; vtkPiecewiseFunction &gt;::New();<br>
    spOpacityTransferFunction-&gt;<u></u>AddPoint( 0, 0.0 );<br>
    spOpacityTransferFunction-&gt;<u></u>AddPoint( 255, 1.0 );<br>
<br>
    vtkSmartPointer&lt; vtkVolumeProperty &gt; spVolumeProperty =<br>
            vtkSmartPointer&lt; vtkVolumeProperty &gt;::New();<br>
    spVolumeProperty-&gt;<u></u>SetScalarOpacity( 0, spOpacityTransferFunction );<br>
    spVolumeProperty-&gt;<u></u>SetScalarOpacity( 1, spOpacityTransferFunction );<br>
    spVolumeProperty-&gt;<u></u>SetScalarOpacity( 2, spOpacityTransferFunction );<br>
    spVolumeProperty-&gt;<u></u>IndependentComponentsOff();<br>
    spVolumeProperty-&gt;<u></u>SetInterpolationTypeToLinear()<u></u>;<br>
    //spVolumeProperty-&gt;ShadeOn();<br>
    //spVolumeProperty-&gt;<u></u>SetAmbient( 0.4 );<br>
    //spVolumeProperty-&gt;<u></u>SetDiffuse( 0.6 );<br>
    //spVolumeProperty-&gt;<u></u>SetSpecular( 0.2 );<br>
<br>
    vtkSmartPointer&lt; vtkFixedPointVolumeRayCastMapp<u></u>er &gt; spVolumeMapper =<br>
            vtkSmartPointer&lt; vtkFixedPointVolumeRayCastMapp<u></u>er &gt;::New();<br>
<br>
    spVolumeMapper-&gt;<u></u>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>
______________________________<u></u>_________________<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/<u></u>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_<u></u>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/<u></u>listinfo/vtkusers</a><br>
</div></div></blockquote></div><br>