def TestvtkBioEngInterface():
	src0 = vtk.vtkSphereSource()
	src0.SetRadius(1)
	src0.SetThetaResolution(12)
	src0.SetPhiResolution(12)
	src0.Update()

	s0 = src0.GetOutput()

	src1 = vtk.vtkSphereSource()
	src1.SetRadius(0.5)
	src1.SetThetaResolution(12)
	src1.SetPhiResolution(12)
	src1.Update()

	s1 = src1.GetOutput()

	col0 = vtkesqui.vtkCollisionModel()
	col0.SetName("col0")
	col0.SetInput(s0)
	col0.SetObjectId(0)
	col0.SetId(0)
	col0.Update()
	col0.GetActor().SetPosition(0,0,0)

	col1 = vtkesqui.vtkCollisionModel()
	col1.SetName("col1")
	col1.SetInput(s1)
	col1.SetObjectId(0)
	col1.SetId(0)
	col1.Update()
	col1.GetActor().SetPosition(3,0,0)

	renderer = vtk.vtkRenderer()

	renWin = vtk.vtkRenderWindow()
	renWin.SetSize(500,500)
	renWin.AddRenderer(renderer)

	iren = vtk.vtkRenderWindowInteractor()
	iren.SetRenderWindow(renWin)

	renderer.AddActor(col0.GetActor())
	renderer.AddActor(col1.GetActor())

	col = vtkesqui.vtkBioEngInterface()
	col.SetBoxTolerance(0)
	col.SetCellTolerance(0)
	col.SetNumberOfCellsPerNode(2)
	col.SetModeToFull()
	col.Initialize()

	col.AddModel(col0)
	col.AddModel(col1)
	col.Update()

	renderer.SetBackground(0.3, 0.6, 0.3)
	
	renderer.ResetCamera()
	iren.Initialize()
	iren.CreateRepeatingTimer(500)

	print "here"
	cb = TimerCallback1() # Segmention fault here
	iren.AddObserver("TimerEvent", cb)

	cb.SetModel(0, col0)
	cb.SetModel(1, col1)
	cb.SetFilter(col)

	tid = iren.CreateRepeatingTimer(500)
	cb.SetTimerId(tid)

	renWin.Render()
	
	iren.Start()
예제 #2
0
col1.SetColor(0.0, 1.0, 1.0)
col1.Update()

reader2 = vtk.vtkXMLPolyDataReader()
reader2.SetFileName(fn2)
reader2.Update()

col2 = vtkesqui.vtkCollisionModel()
col2.SetName("ball_col")
col2.SetInput(reader2.GetOutput())
col2.SetObjectId(2)
col2.SetOpacity(1.0)
col2.SetColor(1.0, 1.0, 0.0)
col2.Update()

detection = vtkesqui.vtkBioEngInterface()
detection.AddModel(col0)
detection.AddModel(col1)
detection.AddModel(col2)
detection.Initialize()
detection.Update()

ren = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren)
renWin.SetWindowName("vtkESQui - Collision Detection")
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)

ren.AddActor(col0.GetActor())
ren.AddActor(col1.GetActor())