[Paraview] Volume Rendering with NumberOfScalarComponents > 1
Aashish Chaudhary
aashish.chaudhary at kitware.com
Wed Dec 16 10:18:55 EST 2015
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
More information about the ParaView
mailing list