1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
#!/usr/bin/env python
from __future__ import print_function
from vtk import *
import sys
import os
import time
myProcId = 0
numProcs = 1
compManager = vtkCompositeRenderManager()
if compManager.GetController():
myProcId = compManager.GetController().GetLocalProcessId()
numProcs = compManager.GetController().GetNumberOfProcesses()
try:
v = vtkMesaRenderer()
if myProcId > 0:
_graphics_fact=vtkGraphicsFactory()
_graphics_fact.SetUseMesaClasses(1)
del _graphics_fact
del v
except Exception as bar:
print("No mesa", bar)
#print("I am process: %d / %d" % (myProcId, numProcs))
# create a rendering window and renderer
ren = vtkRenderer()
renWin = vtkRenderWindow()
renWin.AddRenderer(ren)
renWin.SetSize(300,300)
#if myProcId:
# renWin.OffScreenRenderingOn()
# create an actor and give it cone geometry
cone = vtkConeSource()
cone.SetResolution(8)
coneMapper = vtkPolyDataMapper()
coneMapper.SetInputConnection(cone.GetOutputPort())
coneActor = vtkActor()
coneActor.SetMapper(coneMapper)
# assign our actor to the renderer
ren.AddActor(coneActor)
renWin.SetWindowName("I am node %d" % myProcId)
if numProcs > 1:
compManager.SetRenderWindow(renWin)
compManager.InitializePieces()
#print("Pid of process %d is %d" % (myProcId, os.getpid()))
def ExitMaster(a, b):
#print("ExitMaster; I am %d / %d" % ( myProcId, numProcs ))
if numProcs > 1 and myProcId == 0:
#print("Trigger exit RMI on all satellite nodes")
for a in range(1, numProcs):
#print("Trigger exit in satellite node %d" % a)
contr = compManager.GetController()
contr.TriggerRMI(a, contr.GetBreakRMITag())
if myProcId == 0:
iren = vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
iren.AddObserver("ExitEvent", ExitMaster)
iren.Initialize()
iren.Start()
#renWin.Render()
#renWin.Render()
#renWin.Render()
else:
compManager.InitializeRMIs()
compManager.GetController().ProcessRMIs()
compManager.GetController().Finalize()
#print "**********************************"
#print "Done on the slave node"
#print "**********************************"
sys.exit()
ExitMaster(0, 0)
#time.sleep(5)
|