Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.36 KB | None | 0 0
  1. from __future__ import print_function
  2.  
  3. import vtk
  4. from math import sin
  5. from threading import Thread
  6.  
  7. class vtkTimerCallback():
  8. def __init__(self):
  9. self.timer_count = 0
  10.  
  11. def execute(self,obj,event):
  12. #print(self.timer_count)
  13. self.actor.SetPosition(0, self.timer_count, 0);
  14. iren = obj
  15. iren.GetRenderWindow().Render()
  16. self.timer_count += 1
  17.  
  18. def threadFunction(actor2, interator):
  19. cb = vtkTimerCallback()
  20. cb.actor = actor2
  21. interactor.AddObserver('TimerEvent', cb.execute)
  22. timerId = interactor.CreateRepeatingTimer(100);
  23.  
  24. def main():
  25. colors = vtk.vtkNamedColors()
  26.  
  27. sphereSource = vtk.vtkSphereSource()
  28. sphereSource.SetCenter(0.5, 0.5, 0.5)
  29. sphereSource.SetRadius(0.5)
  30. sphereSource.SetPhiResolution(40)
  31. sphereSource.SetThetaResolution(40)
  32.  
  33. # create a box
  34. box = vtk.vtkBox()
  35. box.SetBounds(-1, 1, -1, 1, -1, 1)
  36.  
  37. # combine the two implicit functions
  38. boolean = vtk.vtkImplicitBoolean()
  39. boolean.SetOperationTypeToDifference()
  40. boolean.AddFunction(box)
  41.  
  42. # The sample function generates a distance function from the implicit
  43. # function. This is then contoured to get a polygonal surface.
  44. sample = vtk.vtkSampleFunction()
  45. sample.SetImplicitFunction(boolean)
  46. sample.SetModelBounds(-1, 2, -1, 1, -1, 1)
  47. sample.SetSampleDimensions(80, 80, 80)
  48. sample.ComputeNormalsOff()
  49.  
  50. # contour
  51. surface = vtk.vtkContourFilter()
  52. surface.SetInputConnection(sample.GetOutputPort())
  53. # surface.SetValue(0, 0.0)
  54.  
  55. mapper2 = vtk.vtkPolyDataMapper()
  56. mapper2.SetInputConnection(sphereSource.GetOutputPort())
  57. actor2 = vtk.vtkActor()
  58. actor2.GetProperty().SetColor(colors.GetColor3d("Red"))
  59. actor2.GetProperty().SetSpecular(0.6)
  60. actor2.GetProperty().SetSpecularPower(30)
  61. actor2.SetMapper(mapper2)
  62.  
  63. # mapper
  64. mapper = vtk.vtkPolyDataMapper()
  65. mapper.SetInputConnection(surface.GetOutputPort())
  66. mapper.ScalarVisibilityOff()
  67. actor = vtk.vtkActor()
  68. actor.GetProperty().SetOpacity(0.3)
  69. actor.SetMapper(mapper)
  70. #actor.GetProperty().EdgeVisibilityOn()
  71. actor.GetProperty().SetColor(colors.GetColor3d('LimeGreen'))
  72. actor.GetProperty().SetEdgeColor(colors.GetColor3d('PaleGreen'))
  73.  
  74. # A renderer and render window
  75. renderer = vtk.vtkRenderer()
  76. renderer.SetBackground(colors.GetColor3d('Peru'))
  77.  
  78. # add the actor
  79. renderer.AddActor(actor)
  80. renderer.AddActor(actor2)
  81.  
  82. # render window
  83. renwin = vtk.vtkRenderWindow()
  84. renwin.AddRenderer(renderer)
  85.  
  86. # An interactor
  87. interactor = vtk.vtkRenderWindowInteractor()
  88. interactor.SetRenderWindow(renwin)
  89.  
  90. # Start
  91. interactor.Initialize()
  92.  
  93. # cb = vtkTimerCallback()
  94. # cb.actor = actor2
  95. # interactor.AddObserver('TimerEvent', cb.execute)
  96. # timerId = interactor.CreateRepeatingTimer(100);
  97.  
  98. #renwin.Render()
  99. # renderer.GetActiveCamera().AddObserver('ModifiedEvent', CameraModifiedCallback)
  100. renderer.GetActiveCamera().SetPosition(5.0, -4.0, 1.6)
  101. renderer.GetActiveCamera().SetViewUp(0.1, 0.5, 0.9)
  102. renderer.GetActiveCamera().SetDistance(7.5)
  103. renwin.Render()
  104.  
  105. thread = Thread(target = threadFunction, args = (actor2, interactor, ))
  106. thread.start()
  107. #thread.join()
  108.  
  109. interactor.Start()
  110.  
  111.  
  112. if __name__ == '__main__':
  113. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement