[Paraview] Volume Rendering with NumberOfScalarComponents > 1

Axel Kittenberger axkibe at gmail.com
Thu Dec 17 04:19:42 EST 2015


>  Do you have to use paraview gui?

No, the task on hand is already accomplished so no rush. I merely used the
occasion to further teach myself a bit about scientific visualization
software and the alternatives.

I wonder, is it possible to have the volume data as HSV? That is the
"value" is natural the intensity and equals the alpha value and a second
"label" array the gives Hue and Saturation? That would feel more natural to
me than having a Red/Green/Blue volume data and having it to code back RGB
using 1:1 colorTransfers.

- Axel



On Wed, Dec 16, 2015 at 4:18 PM, Aashish Chaudhary <
aashish.chaudhary at kitware.com> wrote:

> Axel
>
> We were just discussing this few days ago. Do you have to use paraview
> gui? Or paraview python will work? There might be a way in pv python route.
>
> Thanks
>
> Sent from my iPhone
>
> > On Dec 16, 2015, at 5:01 AM, Axel Kittenberger <axkibe at gmail.com> wrote:
> >
> > Hello,
> >
> > the Python VTK script below gives results, like a expect. Now I'm trying
> to reproduce it in Paraview and I fail.
> >
> > I get rather confused as soon I give it a source with more than one
> scalar component.
> > Paraview creates one color map; I would expect 3 color maps, 1 for every
> component.
> > What ever I do effective opacity is always 1. That is I see a black cube
> with it's surface the images
> > of the data on its surface (so far correct), however no effective volume
> rendering -- I selected Volume, "Ray Cast Only"
> > which should be vtkFixedPointVolumeRayCastMapper as far I understood.
> >
> > I tried creating 3 readers with the different scalar components
> extracted first, but doesn't give
> > correct rendering -- neither in VTK nor in paraview, since multiple
> renderer seem to compete which gets to
> > draw a pixel instead of composing them together
> > like a red transparent + a green transparent should give a yellow
> transparent impression.
> >
> > How can I achieve the same result with Paraview?
> >
> > Kind regards, Axel
> >
> > --------------------------
> > #!/usr/bin/env python
> >
> > import vtk
> >
> > # Create the standard renderer, render window and interactor
> > ren = vtk.vtkRenderer( )
> > renWin = vtk.vtkRenderWindow( )
> > renWin.AddRenderer( ren )
> > iren = vtk.vtkRenderWindowInteractor( )
> > iren.SetRenderWindow( renWin )
> >
> > reader = vtk.vtkImageReader2( )
> > reader.SetFileName( "./data.raw" );
> > reader.SetDataScalarTypeToUnsignedChar( );
> > reader.SetNumberOfScalarComponents( 3 );
> > reader.SetFileDimensionality( 3 );
> > reader.SetDataExtent( 0, 261, 0, 511, 0, 21 );
> > reader.SetDataSpacing( 1, 1, 3.5 );
> >
> > # Create transfer mapping scalar value to opacity
> > opacityTransferFunction = vtk.vtkPiecewiseFunction( )
> > opacityTransferFunction.AddPoint(   0, 0.0 )
> > opacityTransferFunction.AddPoint(  20, 0.0 )
> > opacityTransferFunction.AddPoint(  40, 0.1 )
> > opacityTransferFunction.AddPoint( 255, 0.1 )
> >
> > # Create transfer mapping scalar value to color
> >
> > colorRedTransferFunction = vtk.vtkColorTransferFunction( )
> > colorRedTransferFunction.AddRGBPoint(   0.0, 0.2, 0.0, 0.0 )
> > colorRedTransferFunction.AddRGBPoint( 255.0, 1.0, 0.0, 0.0 )
> >
> > colorGreenTransferFunction = vtk.vtkColorTransferFunction( )
> > colorGreenTransferFunction.AddRGBPoint(   0.0, 0.0, 0.2, 0.0 )
> > colorGreenTransferFunction.AddRGBPoint( 255.0, 0.0, 1.0, 0.0 )
> >
> > colorBlueTransferFunction = vtk.vtkColorTransferFunction( )
> > colorBlueTransferFunction.AddRGBPoint(   0.0, 0.0, 0.0, 0.0 )
> > colorBlueTransferFunction.AddRGBPoint( 255.0, 0.0, 0.0, 1.0 )
> >
> > volumeProperty = vtk.vtkVolumeProperty( )
> > volumeProperty.SetColor( 0, colorRedTransferFunction )
> > volumeProperty.SetColor( 1, colorGreenTransferFunction )
> > volumeProperty.SetColor( 2, colorBlueTransferFunction )
> >
> > volumeProperty.SetScalarOpacity( 0, opacityTransferFunction )
> > volumeProperty.SetScalarOpacity( 1, opacityTransferFunction )
> > volumeProperty.SetScalarOpacity( 2, opacityTransferFunction )
> > volumeProperty.SetInterpolationTypeToLinear( )
> >
> > volumeMapper = vtk.vtkFixedPointVolumeRayCastMapper( )
> > volumeMapper.SetInputConnection( reader.GetOutputPort( ) )
> > volumeMapper.SetNumberOfThreads( 1 )
> >
> > volume = vtk.vtkVolume( )
> > volume.SetMapper( volumeMapper )
> > volume.SetProperty( volumeProperty )
> >
> > ren.AddVolume( volume )
> > ren.SetBackground( 1, 1, 1 )
> > renWin.SetSize( 600, 600 )
> >
> > def CheckAbort( obj, event ):
> >     if obj.GetEventPending( ) != 0:
> >         obj.SetAbortRender( 1 )
> >
> > renWin.AddObserver( "AbortCheckEvent", CheckAbort )
> >
> > iren.Initialize( )
> > renWin.Render( )
> > iren.Start( )
> > --------------------------
> > _______________________________________________
> > Powered by www.kitware.com
> >
> > Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
> >
> > Please keep messages on-topic and check the ParaView Wiki at:
> http://paraview.org/Wiki/ParaView
> >
> > Search the list archives at: http://markmail.org/search/?q=ParaView
> >
> > Follow this link to subscribe/unsubscribe:
> > http://public.kitware.com/mailman/listinfo/paraview
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/paraview/attachments/20151217/d2f79fcd/attachment.html>


More information about the ParaView mailing list