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

#----------------------------------------------------------------------------------------------------
#	Visualization Final Project : Vector Field analysis
#
# Author : Arthur COSTE
# Creation Date : November 30th, 2012
# Update Date :
# Version : 1
# Status : Working
#
# Purpose : Visulalization and rendering of test vector field 1 
#
#
# call : vtkpython vector_field_chal_1.py data_assignment3/ChalVec1.vtk data_assignment3/ChalMag1.vtk 
#
#----------------------------------------------------------------------------------------------------

import vtk
import sys

chosen_pt = 2
nb_pts = 3
critical_pts = [21.3,30,20,45,45,20,65,45,20,35,15.1,20.1,55,15.2,20,7,30,15]
offset = 25
print critical_pts

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

lutLand = vtk.vtkLookupTable()
lutLand.SetNumberOfColors(256)
lutLand.SetHueRange(0.65, 0.5)
lutLand.SetSaturationRange(0.3, 0.0)
lutLand.SetValueRange(0.75, 1.0)
lutLand.Build()

lut_2 = vtk.vtkLookupTable()
lut_2.SetNumberOfColors(256)
lut_2.SetHueRange(0.45, 0.3)
lut_2.SetSaturationRange(0.7, 0.9)
lut_2.SetValueRange(0.75, 1.0)
lut_2.Build()

lut_3 = vtk.vtkLookupTable()
lut_3.SetNumberOfColors(256)
lut_3.SetHueRange(0.35, 0.2)
lut_3.SetSaturationRange(0.4, 0.6)
lut_3.SetValueRange(0.75, 1.0)
lut_3.Build()

lut_4 = vtk.vtkLookupTable()
lut_4.SetNumberOfColors(256)
lut_4.SetHueRange(0.1, 0.2)
lut_4.SetSaturationRange(0.3, 0.5)
lut_4.SetValueRange(0.75, 1.0)
lut_4.Build()

lut_5 = vtk.vtkLookupTable()
lut_5.SetNumberOfColors(256)
lut_5.SetHueRange(0.1, 0.2)
lut_5.SetSaturationRange(0.7, 0.8)
lut_5.SetValueRange(0.75, 1.0)
lut_5.Build()

lut_6 = vtk.vtkLookupTable()
lut_6.SetNumberOfColors(256)
lut_6.SetHueRange(0.6, 0.7)
lut_6.SetSaturationRange(0.1, 0.8)
lut_6.SetValueRange(0.75, 1.0)
lut_6.Build()

lutArrow = vtk.vtkLookupTable()
lutArrow.SetNumberOfColors(256)
lutArrow.SetHueRange(0.0, 0.1)
lutArrow.SetSaturationRange(0.5, 1.0)
lutArrow.SetValueRange(0.65, 1.0)
lutArrow.SetAlphaRange(0.95, 0.95)
lutArrow.Build()

lutSurf = vtk.vtkLookupTable()
lutSurf.SetHueRange(1.0, 1.0)
lutSurf.SetSaturationRange(1.0, 1.0)
lutSurf.SetValueRange(1.0, 1.0)
lutSurf.SetAlphaRange(0.6, 0.6)
lutSurf.Build()

cubeOutline = vtk.vtkOutlineFilter()
cubeOutline.SetInput(reader.GetOutput())
cubeMapper = vtk.vtkPolyDataMapper()
cubeMapper.SetInputConnection(cubeOutline.GetOutputPort())

cubeActor = vtk.vtkActor()
cubeActor.SetMapper(cubeMapper)
cubeActor.GetProperty().SetColor(1.0,1.0,1.0)

arrow = vtk.vtkArrowSource()
arrow.SetTipRadius(0.2)
arrow.SetShaftRadius(0.075)
arrow.SetTipResolution (18)
arrow.SetTipLength(.4)

arrowGlyph = vtk.vtkGlyph3D()
arrowGlyph.SetInputConnection(reader.GetOutputPort())
arrowGlyph.SetSource(arrow.GetOutput())
arrowGlyph.SetScaleFactor(0.10)
arrowGlyph.SetColorModeToColorByScalar()
arrowMapper =  vtk.vtkPolyDataMapper()
arrowMapper.SetInputConnection(arrowGlyph.GetOutputPort())

arrowActor =  vtk.vtkActor()
arrowActor.SetMapper(arrowMapper)
arrowActor.GetProperty().BackfaceCullingOn()

integ=vtk.vtkRungeKutta45()

chosen_pt = 0
point_source=vtk.vtkPointSource() 
point_source.SetRadius(6)
point_source.SetCenter (critical_pts[(chosen_pt)*3+0],critical_pts[(chosen_pt)*3+1],critical_pts[(chosen_pt)*3+2])
point_source.SetNumberOfPoints (50)

chosen_pt = 1
point_source_2=vtk.vtkPointSource() 
point_source_2.SetRadius(6)
point_source_2.SetCenter (critical_pts[(chosen_pt)*3+0],critical_pts[(chosen_pt)*3+1],critical_pts[(chosen_pt)*3+2])
point_source_2.SetNumberOfPoints (50)

chosen_pt = 2
point_source_3=vtk.vtkPointSource() 
point_source_3.SetRadius(6)
point_source_3.SetCenter (critical_pts[(chosen_pt)*3+0],critical_pts[(chosen_pt)*3+1],critical_pts[(chosen_pt)*3+2])
point_source_3.SetNumberOfPoints (50)

chosen_pt = 3
point_source_4=vtk.vtkPointSource() 
point_source_4.SetRadius(6)
point_source_4.SetCenter (critical_pts[(chosen_pt)*3+0],critical_pts[(chosen_pt)*3+1],critical_pts[(chosen_pt)*3+2])
point_source_4.SetNumberOfPoints (50)

chosen_pt = 4
point_source_5=vtk.vtkPointSource() 
point_source_5.SetRadius(6)
point_source_5.SetCenter (critical_pts[(chosen_pt)*3+0],critical_pts[(chosen_pt)*3+1],critical_pts[(chosen_pt)*3+2])
point_source_5.SetNumberOfPoints (50)

chosen_pt = 5
point_source_6=vtk.vtkPointSource() 
point_source_6.SetRadius(6)
point_source_6.SetCenter (critical_pts[(chosen_pt)*3+0],critical_pts[(chosen_pt)*3+1],critical_pts[(chosen_pt)*3+2])
point_source_6.SetNumberOfPoints (50)

extract = vtk.vtkExtractVOI()
extract.SetInputConnection(reader.GetOutputPort())
extract.SetVOI(critical_pts[(chosen_pt)*3+0]-offset,critical_pts[(chosen_pt)*3+0]+offset,critical_pts[(chosen_pt)*3+1]-offset,critical_pts[(chosen_pt)*3+1]+offset,critical_pts[(chosen_pt)*3+2]-offset,critical_pts[(chosen_pt)*3+2]+offset)

streamers =  vtk.vtkStreamLine()
streamers.SetIntegrator(integ)
streamers.SetInputConnection(reader.GetOutputPort())
streamers.SetSource(point_source.GetOutput())
#streamers.SetIntegrationDirectionToForward()
streamers.SetMaximumPropagationTime(8)
streamers.SetStepLength(0.8) #smoothness
streamers.SetIntegrationStepLength(0.1)
streamers.SpeedScalarsOn()
streamers.SetTerminalSpeed(0.01)
streamers.SetIntegrationDirectionToIntegrateBothDirections()

Magextract = vtk.vtkExtractVOI()
Magextract.SetInputConnection(Magreader.GetOutputPort())
Magextract.SetVOI(critical_pts[(chosen_pt)*3+0]-offset,critical_pts[(chosen_pt)*3+0]+offset,critical_pts[(chosen_pt)*3+1]-offset,critical_pts[(chosen_pt)*3+1]+offset,critical_pts[(chosen_pt)*3+2]-offset,critical_pts[(chosen_pt)*3+2]+offset)

streamers_2 =  vtk.vtkStreamLine()
streamers_2.SetIntegrator(integ)
streamers_2.SetInputConnection(reader.GetOutputPort())
streamers_2.SetSource(point_source_2.GetOutput())
streamers_2.SetMaximumPropagationTime(8)
#streamers2.SetIntegrationDirectionToForward()
streamers_2.SetStepLength(0.8) #smoothness
streamers_2.SetIntegrationStepLength(0.2)
streamers_2.SpeedScalarsOn()
streamers_2.SetTerminalSpeed(0.01)
streamers_2.SetIntegrationDirectionToIntegrateBothDirections()

streamers_3 =  vtk.vtkStreamLine()
streamers_3.SetIntegrator(integ)
streamers_3.SetInputConnection(reader.GetOutputPort())
streamers_3.SetSource(point_source_3.GetOutput())
streamers_3.SetMaximumPropagationTime(8)
#streamers2.SetIntegrationDirectionToForward()
streamers_3.SetStepLength(0.8) #smoothness
streamers_3.SetIntegrationStepLength(0.2)
streamers_3.SpeedScalarsOn()
streamers_3.SetTerminalSpeed(0.01)
streamers_3.SetIntegrationDirectionToIntegrateBothDirections()

streamers_4 =  vtk.vtkStreamLine()
streamers_4.SetIntegrator(integ)
streamers_4.SetInputConnection(reader.GetOutputPort())
streamers_4.SetSource(point_source_4.GetOutput())
streamers_4.SetMaximumPropagationTime(8)
#streamers2.SetIntegrationDirectionToForward()
streamers_4.SetStepLength(0.8) #smoothness
streamers_4.SetIntegrationStepLength(0.2)
streamers_4.SpeedScalarsOn()
streamers_4.SetTerminalSpeed(0.01)
streamers_4.SetIntegrationDirectionToIntegrateBothDirections()

streamers_5 =  vtk.vtkStreamLine()
streamers_5.SetIntegrator(integ)
streamers_5.SetInputConnection(reader.GetOutputPort())
streamers_5.SetSource(point_source_5.GetOutput())
streamers_5.SetMaximumPropagationTime(8)
#streamers2.SetIntegrationDirectionToForward()
streamers_5.SetStepLength(0.8) #smoothness
streamers_5.SetIntegrationStepLength(0.2)
streamers_5.SpeedScalarsOn()
streamers_5.SetTerminalSpeed(0.01)
streamers_5.SetIntegrationDirectionToIntegrateBothDirections()

streamers_6 =  vtk.vtkStreamLine()
streamers_6.SetIntegrator(integ)
streamers_6.SetInputConnection(reader.GetOutputPort())
streamers_6.SetSource(point_source_6.GetOutput())
streamers_6.SetMaximumPropagationTime(8)
#streamers2.SetIntegrationDirectionToForward()
streamers_6.SetStepLength(0.8) #smoothness
streamers_6.SetIntegrationStepLength(0.2)
streamers_6.SpeedScalarsOn()
streamers_6.SetTerminalSpeed(0.01)
streamers_6.SetIntegrationDirectionToIntegrateBothDirections()

a_streamers_1 =  vtk.vtkStreamLine()
a_streamers_1.SetIntegrator(integ)
a_streamers_1.SetInputConnection(reader.GetOutputPort())
a_streamers_1.SetSource(point_source.GetOutput())
a_streamers_1.SetMaximumPropagationTime(250)
#streamers2.SetIntegrationDirectionToForward()
a_streamers_1.SetStepLength(4) #smoothness
a_streamers_1.SetIntegrationStepLength(2)
a_streamers_1.SpeedScalarsOn()
a_streamers_1.SetTerminalSpeed(0.1)
a_streamers_1.SetIntegrationDirectionToIntegrateBothDirections()

a_streamers_2 =  vtk.vtkStreamLine()
a_streamers_2.SetIntegrator(integ)
a_streamers_2.SetInputConnection(reader.GetOutputPort())
a_streamers_2.SetSource(point_source_2.GetOutput())
a_streamers_2.SetMaximumPropagationTime(250)
#streamers2.SetIntegrationDirectionToForward()
a_streamers_2.SetStepLength(4) #smoothness
a_streamers_2.SetIntegrationStepLength(2)
a_streamers_2.SpeedScalarsOn()
a_streamers_2.SetTerminalSpeed(0.1)
a_streamers_2.SetIntegrationDirectionToIntegrateBothDirections()

a_streamers_3 =  vtk.vtkStreamLine()
a_streamers_3.SetIntegrator(integ)
a_streamers_3.SetInputConnection(reader.GetOutputPort())
a_streamers_3.SetSource(point_source_3.GetOutput())
a_streamers_3.SetMaximumPropagationTime(250)
#streamers2.SetIntegrationDirectionToForward()
a_streamers_3.SetStepLength(4) #smoothness
a_streamers_3.SetIntegrationStepLength(2)
a_streamers_3.SpeedScalarsOn()
a_streamers_3.SetTerminalSpeed(0.1)
a_streamers_3.SetIntegrationDirectionToIntegrateBothDirections()

a_streamers_4 =  vtk.vtkStreamLine()
a_streamers_4.SetIntegrator(integ)
a_streamers_4.SetInputConnection(reader.GetOutputPort())
a_streamers_4.SetSource(point_source_4.GetOutput())
a_streamers_4.SetMaximumPropagationTime(250)
#streamers2.SetIntegrationDirectionToForward()
a_streamers_4.SetStepLength(4) #smoothness
a_streamers_4.SetIntegrationStepLength(2)
a_streamers_4.SpeedScalarsOn()
a_streamers_4.SetTerminalSpeed(0.1)
a_streamers_4.SetIntegrationDirectionToIntegrateBothDirections()

a_streamers_5 =  vtk.vtkStreamLine()
a_streamers_5.SetIntegrator(integ)
a_streamers_5.SetInputConnection(reader.GetOutputPort())
a_streamers_5.SetSource(point_source_5.GetOutput())
a_streamers_5.SetMaximumPropagationTime(250)
#streamers2.SetIntegrationDirectionToForward()
a_streamers_5.SetStepLength(2) #smoothness
a_streamers_5.SetIntegrationStepLength(1)
a_streamers_5.SpeedScalarsOn()
a_streamers_5.SetTerminalSpeed(0.1)
a_streamers_5.SetIntegrationDirectionToIntegrateBothDirections()

a_streamers_6 =  vtk.vtkStreamLine()
a_streamers_6.SetIntegrator(integ)
a_streamers_6.SetInputConnection(reader.GetOutputPort())
a_streamers_6.SetSource(point_source_6.GetOutput())
a_streamers_6.SetMaximumPropagationTime(250)
#streamers2.SetIntegrationDirectionToForward()
a_streamers_6.SetStepLength(2) #smoothness
a_streamers_6.SetIntegrationStepLength(1)
a_streamers_6.SpeedScalarsOn()
a_streamers_6.SetTerminalSpeed(0.1)
a_streamers_6.SetIntegrationDirectionToIntegrateBothDirections()

vtkTubeFilter = vtk.vtkTubeFilter()
vtkTubeFilter.SetInputConnection(streamers.GetOutputPort())
vtkTubeFilter.SetRadius(0.10)
vtkTubeFilter.SetNumberOfSides(26)
vtkTubeFilter.CappingOn()

vtkTubeFilter_2 = vtk.vtkTubeFilter()
vtkTubeFilter_2.SetInputConnection(streamers_2.GetOutputPort())
vtkTubeFilter_2.SetRadius(0.10)
vtkTubeFilter_2.SetNumberOfSides(26)
vtkTubeFilter_2.CappingOn()

vtkTubeFilter_3 = vtk.vtkTubeFilter()
vtkTubeFilter_3.SetInputConnection(streamers_3.GetOutputPort())
vtkTubeFilter_3.SetRadius(0.10)
vtkTubeFilter_3.SetNumberOfSides(26)
vtkTubeFilter_3.CappingOn()

vtkTubeFilter_4 = vtk.vtkTubeFilter()
vtkTubeFilter_4.SetInputConnection(streamers_4.GetOutputPort())
vtkTubeFilter_4.SetRadius(0.10)
vtkTubeFilter_4.SetNumberOfSides(26)
vtkTubeFilter_4.CappingOn()

vtkTubeFilter_5 = vtk.vtkTubeFilter()
vtkTubeFilter_5.SetInputConnection(streamers_5.GetOutputPort())
vtkTubeFilter_5.SetRadius(0.10)
vtkTubeFilter_5.SetNumberOfSides(26)
vtkTubeFilter_5.CappingOn()

vtkTubeFilter_6 = vtk.vtkTubeFilter()
vtkTubeFilter_6.SetInputConnection(streamers_6.GetOutputPort())
vtkTubeFilter_6.SetRadius(0.10)
vtkTubeFilter_6.SetNumberOfSides(26)
vtkTubeFilter_6.CappingOn()

Glyph = vtk.vtkGlyph3D()
Glyph.SetInputConnection(a_streamers_1.GetOutputPort())
Glyph.SetSource(arrow.GetOutput())
#Glyph.SetVectorModeToUseVector()
Glyph.SetScaleFactor(0.75)
Glyph.SetColorModeToColorByScalar()

Glyph_2 = vtk.vtkGlyph3D()
Glyph_2.SetInputConnection(a_streamers_2.GetOutputPort())
Glyph_2.SetSource(arrow.GetOutput())
#Glyph.SetVectorModeToUseVector()
Glyph_2.SetScaleFactor(0.75)
Glyph_2.SetColorModeToColorByScalar()

Glyph_3 = vtk.vtkGlyph3D()
Glyph_3.SetInputConnection(a_streamers_3.GetOutputPort())
Glyph_3.SetSource(arrow.GetOutput())
#Glyph.SetVectorModeToUseVector()
Glyph_3.SetScaleFactor(0.75)
Glyph_3.SetColorModeToColorByScalar()

Glyph_4 = vtk.vtkGlyph3D()
Glyph_4.SetInputConnection(a_streamers_4.GetOutputPort())
Glyph_4.SetSource(arrow.GetOutput())
#Glyph.SetVectorModeToUseVector()
Glyph_4.SetScaleFactor(0.75)
Glyph_4.SetColorModeToColorByScalar()

Glyph_5 = vtk.vtkGlyph3D()
Glyph_5.SetInputConnection(a_streamers_5.GetOutputPort())
Glyph_5.SetSource(arrow.GetOutput())
#Glyph.SetVectorModeToUseVector()
Glyph_5.SetScaleFactor(0.75)
Glyph_5.SetColorModeToColorByScalar()

Glyph_6 = vtk.vtkGlyph3D()
Glyph_6.SetInputConnection(a_streamers_6.GetOutputPort())
Glyph_6.SetSource(arrow.GetOutput())
#Glyph.SetVectorModeToUseVector()
Glyph_6.SetScaleFactor(0.75)
Glyph_6.SetColorModeToColorByScalar()

GlyphMapper =  vtk.vtkPolyDataMapper()
GlyphMapper.SetInputConnection(Glyph.GetOutputPort())
GlyphMapper.SetLookupTable(lutLand)
GlyphMapper.ScalarVisibilityOn()
GlyphMapper.SetScalarRange(Magreader.GetOutput().GetScalarRange())

GlyphMapper_2 =  vtk.vtkPolyDataMapper()
GlyphMapper_2.SetInputConnection(Glyph_2.GetOutputPort())
GlyphMapper_2.SetLookupTable(lut_2)
GlyphMapper_2.ScalarVisibilityOn()
GlyphMapper_2.SetScalarRange(Magreader.GetOutput().GetScalarRange())

GlyphMapper_3 =  vtk.vtkPolyDataMapper()
GlyphMapper_3.SetInputConnection(Glyph_3.GetOutputPort())
GlyphMapper_3.SetLookupTable(lut_3)
GlyphMapper_3.ScalarVisibilityOn()
GlyphMapper_3.SetScalarRange(Magreader.GetOutput().GetScalarRange())

GlyphMapper_4 =  vtk.vtkPolyDataMapper()
GlyphMapper_4.SetInputConnection(Glyph_4.GetOutputPort())
GlyphMapper_4.SetLookupTable(lut_4)
GlyphMapper_4.ScalarVisibilityOn()
GlyphMapper_4.SetScalarRange(Magreader.GetOutput().GetScalarRange())

GlyphMapper_5 =  vtk.vtkPolyDataMapper()
GlyphMapper_5.SetInputConnection(Glyph_5.GetOutputPort())
GlyphMapper_5.SetLookupTable(lut_5)
GlyphMapper_5.ScalarVisibilityOn()
GlyphMapper_5.SetScalarRange(Magreader.GetOutput().GetScalarRange())

GlyphMapper_6 =  vtk.vtkPolyDataMapper()
GlyphMapper_6.SetInputConnection(Glyph_6.GetOutputPort())
GlyphMapper_6.SetLookupTable(lut_6)
GlyphMapper_6.ScalarVisibilityOn()
GlyphMapper_6.SetScalarRange(Magreader.GetOutput().GetScalarRange())

GlyphActor =  vtk.vtkActor()
GlyphActor.SetMapper(GlyphMapper)

GlyphActor_2 =  vtk.vtkActor()
GlyphActor_2.SetMapper(GlyphMapper_2)

GlyphActor_3 =  vtk.vtkActor()
GlyphActor_3.SetMapper(GlyphMapper_3)

GlyphActor_4 =  vtk.vtkActor()
GlyphActor_4.SetMapper(GlyphMapper_4)

GlyphActor_5 =  vtk.vtkActor()
GlyphActor_5.SetMapper(GlyphMapper_5)

GlyphActor_6 =  vtk.vtkActor()
GlyphActor_6.SetMapper(GlyphMapper_6)

streamMapper =  vtk.vtkPolyDataMapper()
streamMapper.SetInputConnection(vtkTubeFilter.GetOutputPort())
streamMapper.SetScalarRange(Magreader.GetOutput().GetScalarRange())
streamMapper.SetLookupTable(lutLand)

streamMapper_2 =  vtk.vtkPolyDataMapper()
streamMapper_2.SetInputConnection(vtkTubeFilter_2.GetOutputPort())
streamMapper_2.SetScalarRange(Magreader.GetOutput().GetScalarRange())
streamMapper_2.SetLookupTable(lut_2)

streamMapper_3 =  vtk.vtkPolyDataMapper()
streamMapper_3.SetInputConnection(vtkTubeFilter_3.GetOutputPort())
streamMapper_3.SetScalarRange(Magreader.GetOutput().GetScalarRange())
streamMapper_3.SetLookupTable(lut_3)

streamMapper_4 =  vtk.vtkPolyDataMapper()
streamMapper_4.SetInputConnection(vtkTubeFilter_4.GetOutputPort())
streamMapper_4.SetScalarRange(Magreader.GetOutput().GetScalarRange())
streamMapper_4.SetLookupTable(lut_4)

streamMapper_5 =  vtk.vtkPolyDataMapper()
streamMapper_5.SetInputConnection(vtkTubeFilter_5.GetOutputPort())
streamMapper_5.SetScalarRange(Magreader.GetOutput().GetScalarRange())
streamMapper_5.SetLookupTable(lut_5)

streamMapper_6 =  vtk.vtkPolyDataMapper()
streamMapper_6.SetInputConnection(vtkTubeFilter_6.GetOutputPort())
streamMapper_6.SetScalarRange(Magreader.GetOutput().GetScalarRange())
streamMapper_6.SetLookupTable(lut_6)

streamActor =  vtk.vtkActor()
streamActor.SetMapper(streamMapper)

streamActor_2 =  vtk.vtkActor()
streamActor_2.SetMapper(streamMapper_2)

streamActor_3 =  vtk.vtkActor()
streamActor_3.SetMapper(streamMapper_3)

streamActor_4 =  vtk.vtkActor()
streamActor_4.SetMapper(streamMapper_4)

streamActor_5 =  vtk.vtkActor()
streamActor_5.SetMapper(streamMapper_5)

streamActor_6 =  vtk.vtkActor()
streamActor_6.SetMapper(streamMapper_6)

contours = vtk.vtkContourFilter()
contours.SetInputConnection(Magreader.GetOutputPort())
contours.GenerateValues(4, 0.05,1.4)
contours.SetComputeNormals(1)

contMapper = vtk.vtkPolyDataMapper()
contMapper.SetInputConnection(contours.GetOutputPort())

contMapper.SetScalarRange(lutLand.GetTableRange())
contMapper.SetLookupTable(lutSurf)

contActor = vtk.vtkActor()
contActor.SetMapper(contMapper)
contActor.GetProperty().SetDiffuseColor (1.0, 1.0, 1.0)
contActor.GetProperty().SetSpecular(1.0)
contActor.GetProperty().SetSpecularPower(8)
#contActor.GetProperty().SetOpacity (0.95)

#Create the renderer, render window, and interactor.
ren = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)

# Set the background color to white. Associate the actors with the
# renderer.
ren.SetBackground(0, 0, 0)
ren.AddActor(GlyphActor)
ren.AddActor(GlyphActor_2)
ren.AddActor(GlyphActor_3)
ren.AddActor(GlyphActor_4)
ren.AddActor(GlyphActor_5)
ren.AddActor(GlyphActor_6)
ren.AddActor(cubeActor)
ren.AddActor(streamActor)
ren.AddActor(streamActor_2)
ren.AddActor(streamActor_3)
ren.AddActor(streamActor_4)
ren.AddActor(streamActor_5)
ren.AddActor(streamActor_6)
ren.AddActor(contActor)
renWin.SetSize(600, 600)
 
# Zoom in a little bit.
ren.ResetCamera()
ren.GetActiveCamera().Zoom(1.5)

#Initialize and start the event loop.
iren.Initialize()
renWin.Render()
iren.Start()
