Commit 93cfccd2dcedf8bd6e0ed88f7ee04261fc353071
1 parent
51c65c2f
Exists in
master
and in
67 other branches
ENH: Added surface interpolation option
Showing
3 changed files
with
24 additions
and
8 deletions
Show diff stats
invesalius/data/surface.py
| @@ -128,8 +128,8 @@ class SurfaceManager(): | @@ -128,8 +128,8 @@ class SurfaceManager(): | ||
| 128 | 128 | ||
| 129 | ps.Publisher().subscribe(self.OnDuplicate, "Duplicate surfaces") | 129 | ps.Publisher().subscribe(self.OnDuplicate, "Duplicate surfaces") |
| 130 | ps.Publisher().subscribe(self.OnRemove,"Remove surfaces") | 130 | ps.Publisher().subscribe(self.OnRemove,"Remove surfaces") |
| 131 | - | ||
| 132 | - | 131 | + ps.Publisher().subscribe(self.UpdateSurfaceInterpolation, 'Update Surface Interpolation') |
| 132 | + | ||
| 133 | def OnDuplicate(self, pubsub_evt): | 133 | def OnDuplicate(self, pubsub_evt): |
| 134 | selected_items = pubsub_evt.data | 134 | selected_items = pubsub_evt.data |
| 135 | proj = prj.Project() | 135 | proj = prj.Project() |
| @@ -508,7 +508,7 @@ class SurfaceManager(): | @@ -508,7 +508,7 @@ class SurfaceManager(): | ||
| 508 | smoother.Update() | 508 | smoother.Update() |
| 509 | polydata = smoother.GetOutput() | 509 | polydata = smoother.GetOutput() |
| 510 | 510 | ||
| 511 | - print "Normals" | 511 | + |
| 512 | normals = vtk.vtkPolyDataNormals() | 512 | normals = vtk.vtkPolyDataNormals() |
| 513 | normals.SetInput(polydata) | 513 | normals.SetInput(polydata) |
| 514 | normals.SetFeatureAngle(80) | 514 | normals.SetFeatureAngle(80) |
| @@ -537,7 +537,6 @@ class SurfaceManager(): | @@ -537,7 +537,6 @@ class SurfaceManager(): | ||
| 537 | # Represent an object (geometry & properties) in the rendered scene | 537 | # Represent an object (geometry & properties) in the rendered scene |
| 538 | actor = vtk.vtkActor() | 538 | actor = vtk.vtkActor() |
| 539 | actor.SetMapper(mapper) | 539 | actor.SetMapper(mapper) |
| 540 | - | ||
| 541 | # Create Surface instance | 540 | # Create Surface instance |
| 542 | if overwrite: | 541 | if overwrite: |
| 543 | surface = Surface(index = self.last_surface_index) | 542 | surface = Surface(index = self.last_surface_index) |
| @@ -550,6 +549,13 @@ class SurfaceManager(): | @@ -550,6 +549,13 @@ class SurfaceManager(): | ||
| 550 | actor.GetProperty().SetColor(colour) | 549 | actor.GetProperty().SetColor(colour) |
| 551 | actor.GetProperty().SetOpacity(1-surface.transparency) | 550 | actor.GetProperty().SetOpacity(1-surface.transparency) |
| 552 | 551 | ||
| 552 | + prop = actor.GetProperty() | ||
| 553 | + | ||
| 554 | + interpolation = int(ses.Session().surface_interpolation) | ||
| 555 | + | ||
| 556 | + prop.SetInterpolation(interpolation) | ||
| 557 | + #prop.SetInterpolationToPhong() | ||
| 558 | + | ||
| 553 | # Remove temporary files | 559 | # Remove temporary files |
| 554 | #if sys.platform == "win32": | 560 | #if sys.platform == "win32": |
| 555 | # try: | 561 | # try: |
| @@ -606,6 +612,16 @@ class SurfaceManager(): | @@ -606,6 +612,16 @@ class SurfaceManager(): | ||
| 606 | 612 | ||
| 607 | ps.Publisher().sendMessage('End busy cursor') | 613 | ps.Publisher().sendMessage('End busy cursor') |
| 608 | 614 | ||
| 615 | + | ||
| 616 | + def UpdateSurfaceInterpolation(self, pub_evt): | ||
| 617 | + interpolation = int(ses.Session().surface_interpolation) | ||
| 618 | + key_actors = self.actors_dict.keys() | ||
| 619 | + | ||
| 620 | + for key in self.actors_dict: | ||
| 621 | + self.actors_dict[key].GetProperty().SetInterpolation(interpolation) | ||
| 622 | + ps.Publisher().sendMessage('Render volume viewer') | ||
| 623 | + | ||
| 624 | + | ||
| 609 | def RemoveActor(self, index): | 625 | def RemoveActor(self, index): |
| 610 | """ | 626 | """ |
| 611 | Remove actor, according to given actor index. | 627 | Remove actor, according to given actor index. |
| @@ -626,7 +642,6 @@ class SurfaceManager(): | @@ -626,7 +642,6 @@ class SurfaceManager(): | ||
| 626 | index, value = pubsub_evt.data | 642 | index, value = pubsub_evt.data |
| 627 | self.ShowActor(index, value) | 643 | self.ShowActor(index, value) |
| 628 | 644 | ||
| 629 | - | ||
| 630 | def ShowActor(self, index, value): | 645 | def ShowActor(self, index, value): |
| 631 | """ | 646 | """ |
| 632 | Show or hide actor, according to given actor index and value. | 647 | Show or hide actor, according to given actor index and value. |
invesalius/data/viewer_volume.py
| @@ -181,6 +181,8 @@ class Viewer(wx.Panel): | @@ -181,6 +181,8 @@ class Viewer(wx.Panel): | ||
| 181 | 181 | ||
| 182 | ps.Publisher().subscribe(self.RemoveVolume, 'Remove Volume') | 182 | ps.Publisher().subscribe(self.RemoveVolume, 'Remove Volume') |
| 183 | 183 | ||
| 184 | + | ||
| 185 | + | ||
| 184 | def SetStereoMode(self, pubsub_evt): | 186 | def SetStereoMode(self, pubsub_evt): |
| 185 | mode = pubsub_evt.data | 187 | mode = pubsub_evt.data |
| 186 | ren_win = self.interactor.GetRenderWindow() | 188 | ren_win = self.interactor.GetRenderWindow() |
invesalius/gui/frame.py
| @@ -332,11 +332,10 @@ class Frame(wx.Frame): | @@ -332,11 +332,10 @@ class Frame(wx.Frame): | ||
| 332 | 332 | ||
| 333 | ses.Session().rendering = values[const.RENDERING] | 333 | ses.Session().rendering = values[const.RENDERING] |
| 334 | ses.Session().surface_interpolation = values[const.SURFACE_INTERPOLATION] | 334 | ses.Session().surface_interpolation = values[const.SURFACE_INTERPOLATION] |
| 335 | - | 335 | + |
| 336 | ps.Publisher().sendMessage('Remove Volume') | 336 | ps.Publisher().sendMessage('Remove Volume') |
| 337 | ps.Publisher().sendMessage('Reset Reaycasting') | 337 | ps.Publisher().sendMessage('Reset Reaycasting') |
| 338 | - | ||
| 339 | - | 338 | + ps.Publisher().sendMessage('Update Surface Interpolation') |
| 340 | 339 | ||
| 341 | def ShowAbout(self): | 340 | def ShowAbout(self): |
| 342 | """ | 341 | """ |