SimpleRayCast
VTKExamples/Python/VolumeRendering/SimpleRayCast
Other Languages
See (Cxx)
Code¶
SimpleRayCast.py
#!/usr/bin/env python import vtk def main(): fileName = get_program_parameters() colors = vtk.vtkNamedColors() # This is a simple volume rendering example that # uses a vtkFixedPointVolumeRayCastMapper # Create the standard renderer, render window # and interactor. ren1 = vtk.vtkRenderer() renWin = vtk.vtkRenderWindow() renWin.AddRenderer(ren1) iren = vtk.vtkRenderWindowInteractor() iren.SetRenderWindow(renWin) # Create the reader for the data. reader = vtk.vtkStructuredPointsReader() reader.SetFileName(fileName) # Create transfer mapping scalar value to opacity. opacityTransferFunction = vtk.vtkPiecewiseFunction() opacityTransferFunction.AddPoint(20, 0.0) opacityTransferFunction.AddPoint(255, 0.2) # Create transfer mapping scalar value to color. colorTransferFunction = vtk.vtkColorTransferFunction() colorTransferFunction.AddRGBPoint(0.0, 0.0, 0.0, 0.0) colorTransferFunction.AddRGBPoint(64.0, 1.0, 0.0, 0.0) colorTransferFunction.AddRGBPoint(128.0, 0.0, 0.0, 1.0) colorTransferFunction.AddRGBPoint(192.0, 0.0, 1.0, 0.0) colorTransferFunction.AddRGBPoint(255.0, 0.0, 0.2, 0.0) # The property describes how the data will look. volumeProperty = vtk.vtkVolumeProperty() volumeProperty.SetColor(colorTransferFunction) volumeProperty.SetScalarOpacity(opacityTransferFunction) volumeProperty.ShadeOn() volumeProperty.SetInterpolationTypeToLinear() # The mapper / ray cast function know how to render the data. volumeMapper = vtk.vtkFixedPointVolumeRayCastMapper() volumeMapper.SetInputConnection(reader.GetOutputPort()) # The volume holds the mapper and the property and # can be used to position/orient the volume. volume = vtk.vtkVolume() volume.SetMapper(volumeMapper) volume.SetProperty(volumeProperty) ren1.AddVolume(volume) ren1.SetBackground(colors.GetColor3d("Wheat")) ren1.GetActiveCamera().Azimuth(45) ren1.GetActiveCamera().Elevation(30) ren1.ResetCameraClippingRange() ren1.ResetCamera() renWin.SetSize(600, 600) renWin.Render() iren.Start() def get_program_parameters(): import argparse description = 'Volume rendering of a high potential iron protein.' epilogue = ''' This is a simple volume rendering example that uses a vtkFixedPointVolumeRayCastMapper. ''' parser = argparse.ArgumentParser(description=description, epilog=epilogue, formatter_class=argparse.RawDescriptionHelpFormatter) parser.add_argument('filename', help='ironProt.vtk.') args = parser.parse_args() return args.filename if __name__ == '__main__': main()