[vtkusers] Is it possible to render two intersected ImageData as Volume?
Berk Geveci
berk.geveci at kitware.com
Wed Jul 18 10:16:11 EDT 2007
Volume rendering of 2 overlapping volumes is not supported.
-berk
On 7/2/07, Jordi Campos i Miralles <jcampos at maia.ub.es> wrote:
> Hi,
>
> When I load 2 intersected ImageData files and try to render them as
> Volume, the last one is always rendered over the first one.
>
> Is there any way to avoid this behaviour?
>
> I also tried to make and assembly of both volumes before adding them to
> the renderer, but I obtain the same result.
>
> I first "detected the problem" in Paraview, but I also tested it in
> "plain VTK" with the same behavior.
>
> What am I doing wrong?
>
> Thanks,
>
> jor;)i
>
> Listings:
>
> - 15-VolumesIntersected-2Volumes.py
> - 15-VolumesIntersected-Assembly.py
>
>
>
> #!/usr/bin/python
> # 15-VolumesIntersected-2Volumes.py
> import vtk
> from vtk import *
>
> def main():
> alphaTF = vtkPiecewiseFunction() # Opacity (A-TF)
> alphaTF.AddPoint( 0.0, 1.0) ; alphaTF.AddPoint( 42.0, 1.0)
>
> colorTF = vtkColorTransferFunction() # Color (RGB-TF)
> colorTF.AddRGBPoint( 0, 0, 1, 0) ; colorTF.AddRGBPoint( 42, 1, 0, 0)
>
> volProp = vtkVolumeProperty() # VolumeProperty
> volProp.SetColor(colorTF) ; volProp.SetScalarOpacity(alphaTF)
> volProp.SetInterpolationTypeToLinear()
>
> ren = vtkRenderer() # Renderer
> createMapperAndVtkVolume( "teddy-64-body.vti", volProp, ren )
> createMapperAndVtkVolume( "teddy-64-armR.vti", volProp, ren )
> ren.ResetCamera()
>
> renwin = vtkRenderWindow() # Window
> renwin.AddRenderer(ren)
> renwin.SetSize(300, 300)
>
> iren = vtkRenderWindowInteractor() # Interactor
> iren.SetRenderWindow(renwin)
> iren.Start()
>
> def createMapperAndVtkVolume( fileName, volProp, renderer ):
> source = vtkXMLImageDataReader() # Read: Body
> source.SetFileName( fileName )
>
> volumeMapper = vtkVolumeRayCastMapper() # Mapper
> cast = vtkImageCast() # - uchar conversion
> cast.SetInput( source.GetOutput() ) # (required by VRayCast)
> cast.SetOutputScalarTypeToUnsignedChar()
> volumeMapper.SetInput( cast.GetOutput() )
> compositeFunc = vtkVolumeRayCastCompositeFunction() # - composite
> volumeMapper.SetVolumeRayCastFunction(compositeFunc)
>
> volume = vtkVolume() # Volume=Mapper+Property
> volume.SetMapper(volumeMapper)
> volume.SetProperty(volProp)
>
> renderer.AddVolume(volume)
>
> main()
>
>
>
>
>
>
>
>
>
>
> #!/usr/bin/python
> # 15-VolumesIntersected-Assembly.py
> import vtk
> from vtk import *
>
> def main():
> alphaTF = vtkPiecewiseFunction() # Opacity (A-TF)
> alphaTF.AddPoint( 0.0, 1.0) ; alphaTF.AddPoint( 42.0, 1.0)
>
> colorTF = vtkColorTransferFunction() # Color (RGB-TF)
> colorTF.AddRGBPoint( 0, 0, 1, 0) ; colorTF.AddRGBPoint( 42, 1, 0, 0)
>
> volProp = vtkVolumeProperty() # VolumeProperty
> volProp.SetColor(colorTF) ; volProp.SetScalarOpacity(alphaTF)
> volProp.SetInterpolationTypeToLinear()
>
> ren = vtkRenderer() # Renderer
> assembly = vtk.vtkAssembly() # Assembly
>
> createMapperAndVtkVolume( "teddy-64-body.vti", volProp, assembly )
> createMapperAndVtkVolume( "teddy-64-armR.vti", volProp, assembly )
>
> ren.AddVolume( assembly )
> ren.ResetCamera()
>
> renwin = vtkRenderWindow() # Window
> renwin.AddRenderer(ren)
> renwin.SetSize(300, 300)
>
> iren = vtkRenderWindowInteractor() # Interactor
> iren.SetRenderWindow(renwin)
> iren.Start()
>
> def createMapperAndVtkVolume( fileName, volProp, assembly ):
> source = vtkXMLImageDataReader() # Read: Body
> source.SetFileName( fileName )
>
> volumeMapper = vtkVolumeRayCastMapper() # Mapper
> cast = vtkImageCast() # - uchar conversion
> cast.SetInput( source.GetOutput() ) # (required by VRayCast)
> cast.SetOutputScalarTypeToUnsignedChar()
> volumeMapper.SetInput( cast.GetOutput() )
> compositeFunc = vtkVolumeRayCastCompositeFunction() # - composite
> volumeMapper.SetVolumeRayCastFunction(compositeFunc)
>
> volume = vtkVolume() # Volume=Mapper+Property
> volume.SetMapper(volumeMapper)
> volume.SetProperty(volProp)
>
> assembly.AddPart( volume )
>
> main()
>
>
>
> --
> Jordi Campos i Miralles
> Departament de Matemàtica Aplicada i Anàlisi, MAiA
> Facultat de Matemàtiques, Universitat de Barcelona
> Gran Via de les Corts Catalanes, 585
> 08007 Barcelona
> Telf : +34 93 403 93 72
>
> _______________________________________________
> This is the private VTK discussion list.
> Please keep messages on-topic. Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
--
Berk Geveci
Kitware Inc.
28 Corporate Drive
Clifton Park, NY, 12065
More information about the vtkusers
mailing list