Commit 57c41ef5d96a613412a70bec057b5ac7660659b6
1 parent
2794a7ed
Exists in
master
and in
68 other branches
ADD: Volume raycasting cut plane enable/disable as volume is shown/hiden
Showing
1 changed file
with
26 additions
and
16 deletions
Show diff stats
invesalius/data/volume.py
| @@ -76,13 +76,11 @@ class Volume(): | @@ -76,13 +76,11 @@ class Volume(): | ||
| 76 | self.wl = None | 76 | self.wl = None |
| 77 | self.n = 0 | 77 | self.n = 0 |
| 78 | self.plane = None | 78 | self.plane = None |
| 79 | + self.plane_on = False | ||
| 79 | 80 | ||
| 80 | self.__bind_events() | 81 | self.__bind_events() |
| 81 | 82 | ||
| 82 | def __bind_events(self): | 83 | def __bind_events(self): |
| 83 | - #ps.Publisher().subscribe(self.OnLoadVolume, 'Create volume raycasting') | ||
| 84 | - #ps.Publisher().subscribe(self.OnShowVolume, | ||
| 85 | - # 'Show raycasting volume') | ||
| 86 | ps.Publisher().subscribe(self.OnHideVolume, | 84 | ps.Publisher().subscribe(self.OnHideVolume, |
| 87 | 'Hide raycasting volume') | 85 | 'Hide raycasting volume') |
| 88 | ps.Publisher().subscribe(self.OnUpdatePreset, | 86 | ps.Publisher().subscribe(self.OnUpdatePreset, |
| @@ -102,12 +100,19 @@ class Volume(): | @@ -102,12 +100,19 @@ class Volume(): | ||
| 102 | self.LoadVolume() | 100 | self.LoadVolume() |
| 103 | 101 | ||
| 104 | def OnHideVolume(self, pubsub_evt): | 102 | def OnHideVolume(self, pubsub_evt): |
| 103 | + print "Hide", self.plane, self.plane_on | ||
| 105 | self.volume.SetVisibility(0) | 104 | self.volume.SetVisibility(0) |
| 105 | + if (self.plane and self.plane_on): | ||
| 106 | + print "--- Hide Plane" | ||
| 107 | + self.plane.Disable() | ||
| 106 | ps.Publisher().sendMessage('Render volume viewer') | 108 | ps.Publisher().sendMessage('Render volume viewer') |
| 107 | 109 | ||
| 108 | def OnShowVolume(self, pubsub_evt): | 110 | def OnShowVolume(self, pubsub_evt): |
| 109 | if self.exist: | 111 | if self.exist: |
| 110 | self.volume.SetVisibility(1) | 112 | self.volume.SetVisibility(1) |
| 113 | + if (self.plane and self.plane_on): | ||
| 114 | + print "----- Show Plane" | ||
| 115 | + self.plane.Enable() | ||
| 111 | ps.Publisher().sendMessage('Render volume viewer') | 116 | ps.Publisher().sendMessage('Render volume viewer') |
| 112 | else: | 117 | else: |
| 113 | ps.Publisher.sendMessage('Load raycasting preset', const.RAYCASTING_LABEL) | 118 | ps.Publisher.sendMessage('Load raycasting preset', const.RAYCASTING_LABEL) |
| @@ -125,6 +130,9 @@ class Volume(): | @@ -125,6 +130,9 @@ class Volume(): | ||
| 125 | self.LoadVolume() | 130 | self.LoadVolume() |
| 126 | self.exist = 1 | 131 | self.exist = 1 |
| 127 | 132 | ||
| 133 | + if (self.plane and self.plane_on): | ||
| 134 | + self.plane.Enable() | ||
| 135 | + | ||
| 128 | def __load_preset_config(self): | 136 | def __load_preset_config(self): |
| 129 | self.config = prj.Project().raycasting_preset | 137 | self.config = prj.Project().raycasting_preset |
| 130 | 138 | ||
| @@ -470,11 +478,13 @@ class Volume(): | @@ -470,11 +478,13 @@ class Volume(): | ||
| 470 | if tool_name == "Cut plane": | 478 | if tool_name == "Cut plane": |
| 471 | if self.plane: | 479 | if self.plane: |
| 472 | if enable: | 480 | if enable: |
| 473 | - self.plane.EnablePlane() | 481 | + self.plane_on = True |
| 482 | + self.plane.Enable() | ||
| 474 | else: | 483 | else: |
| 475 | - print "TODO: Desabilitar plano" | ||
| 476 | - self.plane.DisablePlane() | 484 | + self.plane_on = False |
| 485 | + self.plane.Disable() | ||
| 477 | else: | 486 | else: |
| 487 | + self.plane_on = True | ||
| 478 | self.plane = CutPlane(self.final_imagedata, | 488 | self.plane = CutPlane(self.final_imagedata, |
| 479 | self.volume_mapper) | 489 | self.volume_mapper) |
| 480 | 490 | ||
| @@ -491,18 +501,18 @@ class CutPlane: | @@ -491,18 +501,18 @@ class CutPlane: | ||
| 491 | def __init__(self, img, volume_mapper): | 501 | def __init__(self, img, volume_mapper): |
| 492 | self.img = img | 502 | self.img = img |
| 493 | self.volume_mapper = volume_mapper | 503 | self.volume_mapper = volume_mapper |
| 494 | - self.CreatePlane() | 504 | + self.Create() |
| 495 | self.__bind_events() | 505 | self.__bind_events() |
| 496 | 506 | ||
| 497 | def __bind_events(self): | 507 | def __bind_events(self): |
| 498 | - ps.Publisher().subscribe(self.ResetPlane, | 508 | + ps.Publisher().subscribe(self.Reset, |
| 499 | 'Reset Cut Plane') | 509 | 'Reset Cut Plane') |
| 500 | - ps.Publisher().subscribe(self.EnablePlane, | 510 | + ps.Publisher().subscribe(self.Enable, |
| 501 | 'Enable Cut Plane') | 511 | 'Enable Cut Plane') |
| 502 | - ps.Publisher().subscribe(self.DisablePlane, | 512 | + ps.Publisher().subscribe(self.Disable, |
| 503 | 'Disable Cut Plane') | 513 | 'Disable Cut Plane') |
| 504 | 514 | ||
| 505 | - def CreatePlane(self): | 515 | + def Create(self): |
| 506 | self.plane_widget = plane_widget = vtk.vtkImagePlaneWidget() | 516 | self.plane_widget = plane_widget = vtk.vtkImagePlaneWidget() |
| 507 | plane_widget.SetInput(self.img) | 517 | plane_widget.SetInput(self.img) |
| 508 | plane_widget.SetPlaneOrientationToXAxes() | 518 | plane_widget.SetPlaneOrientationToXAxes() |
| @@ -527,7 +537,7 @@ class CutPlane: | @@ -527,7 +537,7 @@ class CutPlane: | ||
| 527 | plane_actor.SetMapper(plane_mapper) | 537 | plane_actor.SetMapper(plane_mapper) |
| 528 | plane_actor.GetProperty().BackfaceCullingOn() | 538 | plane_actor.GetProperty().BackfaceCullingOn() |
| 529 | plane_actor.GetProperty().SetOpacity(0) | 539 | plane_actor.GetProperty().SetOpacity(0) |
| 530 | - plane_widget.AddObserver("InteractionEvent", self.UpdatePlane) | 540 | + plane_widget.AddObserver("InteractionEvent", self.Update) |
| 531 | ps.Publisher().sendMessage('AppendActor', self.plane_actor) | 541 | ps.Publisher().sendMessage('AppendActor', self.plane_actor) |
| 532 | ps.Publisher().sendMessage('Set Widget Interactor', self.plane_widget) | 542 | ps.Publisher().sendMessage('Set Widget Interactor', self.plane_widget) |
| 533 | plane_actor.SetVisibility(1) | 543 | plane_actor.SetVisibility(1) |
| @@ -542,7 +552,7 @@ class CutPlane: | @@ -542,7 +552,7 @@ class CutPlane: | ||
| 542 | self.p2 = plane_widget.GetPoint2() | 552 | self.p2 = plane_widget.GetPoint2() |
| 543 | self.normal = plane_widget.GetNormal() | 553 | self.normal = plane_widget.GetNormal() |
| 544 | 554 | ||
| 545 | - def UpdatePlane(self, a, b): | 555 | + def Update(self, a, b): |
| 546 | plane_source = self.plane_source | 556 | plane_source = self.plane_source |
| 547 | plane_widget = self.plane_widget | 557 | plane_widget = self.plane_widget |
| 548 | plane_source.SetOrigin(plane_widget.GetOrigin()) | 558 | plane_source.SetOrigin(plane_widget.GetOrigin()) |
| @@ -554,19 +564,19 @@ class CutPlane: | @@ -554,19 +564,19 @@ class CutPlane: | ||
| 554 | self.plane.SetOrigin(plane_source.GetOrigin()) | 564 | self.plane.SetOrigin(plane_source.GetOrigin()) |
| 555 | ps.Publisher().sendMessage('Render volume viewer', None) | 565 | ps.Publisher().sendMessage('Render volume viewer', None) |
| 556 | 566 | ||
| 557 | - def EnablePlane(self, evt_pubsub=None): | 567 | + def Enable(self, evt_pubsub=None): |
| 558 | self.plane_widget.On() | 568 | self.plane_widget.On() |
| 559 | self.plane_actor.VisibilityOn() | 569 | self.plane_actor.VisibilityOn() |
| 560 | self.volume_mapper.RemoveClippingPlane(self.plane) | 570 | self.volume_mapper.RemoveClippingPlane(self.plane) |
| 561 | ps.Publisher().sendMessage('Render volume viewer', None) | 571 | ps.Publisher().sendMessage('Render volume viewer', None) |
| 562 | 572 | ||
| 563 | - def DisablePlane(self,evt_pubsub=None): | 573 | + def Disable(self,evt_pubsub=None): |
| 564 | self.plane_widget.Off() | 574 | self.plane_widget.Off() |
| 565 | self.plane_actor.VisibilityOff() | 575 | self.plane_actor.VisibilityOff() |
| 566 | self.volume_mapper.AddClippingPlane(self.plane) | 576 | self.volume_mapper.AddClippingPlane(self.plane) |
| 567 | ps.Publisher().sendMessage('Render volume viewer', None) | 577 | ps.Publisher().sendMessage('Render volume viewer', None) |
| 568 | 578 | ||
| 569 | - def ResetPlane(self, evt_pubsub=None): | 579 | + def Reset(self, evt_pubsub=None): |
| 570 | plane_source = self.plane_source | 580 | plane_source = self.plane_source |
| 571 | plane_widget = self.plane_widget | 581 | plane_widget = self.plane_widget |
| 572 | plane_source.SetOrigin(self.origin) | 582 | plane_source.SetOrigin(self.origin) |