#!/usr/bin/python
# -*- coding:Utf-8 -*-

#----------------------------------------------------------------------------------------------------
#	Visualization Project : 2D Spatial Data
#
# Author : Arthur COSTE
# Creation Date : November 3rd, 2012
# Update Date :
# Version : 1
# Status : Working
#
# Purpose : MIP
#
#----------------------------------------------------------------------------------------------------

# loading libraries
import argparse
import vtk
import sys

# read input vtk file
reader = vtk.vtkGenericDataObjectReader()
reader.SetFileName(sys.argv[1])
reader.Update()

#MIP ray caster
rayCastFunction = vtk.vtkVolumeRayCastMIPFunction()

# mapper
volumeMapper = vtk.vtkVolumeRayCastMapper()
volumeMapper.SetInputConnection(reader.GetOutputPort())
volumeMapper.SetVolumeRayCastFunction(rayCastFunction)

# instanciate vtkVolume to handle the data set
volume = vtk.vtkVolume()
volume.SetMapper(volumeMapper)

#The contour lines are mapped to the graphics library.
contMapper = vtk.vtkDataSetMapper()
contMapper.SetInputConnection(reader.GetOutputPort())

actor = vtk.vtkActor()
actor.SetMapper(contMapper)
actor.GetProperty().SetPointSize(1)
renderer = vtk.vtkRenderer()
renderWindow = vtk.vtkRenderWindow()
renderWindow.AddRenderer(renderer)
renderWindowInteractor = vtk.vtkRenderWindowInteractor()
renderWindowInteractor.SetRenderWindow(renderWindow)
#renderer.AddActor(actor)

# Finally, add the volume to the renderer
renderer.AddActor(volume)

# modify initial display parameters
renderer.ResetCamera()
renderer.GetActiveCamera().Azimuth(-00)
renderer.GetActiveCamera().Elevation(1)
renderer.GetActiveCamera().SetViewUp(0,0,1)
#renderer.SetBackground(0.2, 0.4, 0.6)
renderer.ResetCameraClippingRange()
renderWindow.SetSize(500, 500)

renderWindow.Render()
renderWindowInteractor.Start()
