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) |