[Paraview] Volume Rendering with NumberOfScalarComponents > 1
Axel Kittenberger
axkibe at gmail.com
Wed Dec 16 06:01:27 EST 2015
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( )
--------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/paraview/attachments/20151216/dfbfbc32/attachment.html>
More information about the ParaView
mailing list