Skip to content

Commit

Permalink
Issue #222: Allow DepthPeeling to be on/off via VTKOverlayWindow cons…
Browse files Browse the repository at this point in the history
…tructor.
  • Loading branch information
MattClarkson committed Feb 13, 2024
1 parent a25d514 commit a43b544
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 11 deletions.
22 changes: 12 additions & 10 deletions sksurgeryvtk/widgets/vtk_overlay_window.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ def __init__(
video_in_layer_0=True, # For backwards compatibility, prior to 3rd Feb 2024.
video_in_layer_2=False, # For backwards compatibility, prior to 3rd Feb 2024.
layer_2_video_mask=None, # For masking in Layer 3
use_depth_peeling=True # Historically, has defaulted to true.
):
"""
Constructs a new VTKOverlayWindow.
Expand Down Expand Up @@ -161,10 +162,6 @@ def __init__(
self.rgba_image_importer.SetDataExtent(self.rgba_image_extent)
self.rgba_image_importer.SetWholeExtent(self.rgba_image_extent)

# Enable VTK Depth peeling settings for render window.
self.GetRenderWindow().AlphaBitPlanesOn()
self.GetRenderWindow().SetMultiSamples(0)

# Five layers used, see class level docstring.
self.GetRenderWindow().SetNumberOfLayers(5)

Expand All @@ -183,9 +180,6 @@ def __init__(
self.layer_1_renderer = vtk.vtkRenderer()
self.layer_1_renderer.SetLayer(1)
self.layer_1_renderer.LightFollowCameraOn()
self.layer_1_renderer.UseDepthPeelingOn()
self.layer_1_renderer.SetMaximumNumberOfPeels(100)
self.layer_1_renderer.SetOcclusionRatio(0.1)

# Create and setup layer 2 (masked video) renderer.
self.layer_2_image_actor = vtk.vtkImageActor()
Expand All @@ -202,15 +196,23 @@ def __init__(
self.layer_3_renderer = vtk.vtkRenderer()
self.layer_3_renderer.SetLayer(3)
self.layer_3_renderer.LightFollowCameraOn()
self.layer_3_renderer.UseDepthPeelingOn()
self.layer_3_renderer.SetMaximumNumberOfPeels(100)
self.layer_3_renderer.SetOcclusionRatio(0.1)

# Create and setup layer 4 (Overlay's, like text annotations) renderer.
self.layer_4_renderer = vtk.vtkRenderer()
self.layer_4_renderer.SetLayer(4)
self.layer_4_renderer.LightFollowCameraOn()

# Enable VTK Depth peeling settings for render window, and renderers.
if use_depth_peeling:
self.GetRenderWindow().AlphaBitPlanesOn()
self.GetRenderWindow().SetMultiSamples(0)
self.layer_1_renderer.UseDepthPeelingOn()
self.layer_1_renderer.SetMaximumNumberOfPeels(100)
self.layer_1_renderer.SetOcclusionRatio(0.1)
self.layer_3_renderer.UseDepthPeelingOn()
self.layer_3_renderer.SetMaximumNumberOfPeels(100)
self.layer_3_renderer.SetOcclusionRatio(0.1)

# Use this to ensure the video is setup correctly at construction.
self.set_video_image(self.rgb_input)

Expand Down
2 changes: 1 addition & 1 deletion tests/widgets/test_vtk_overlay_window_5_layers.py
Original file line number Diff line number Diff line change
Expand Up @@ -240,4 +240,4 @@ def test_overlay_window_combined_ar_look(setup_vtk_overlay_window_video_only_lay

# You don't really want this in a unit test, :-)
# otherwise you can't exit. It's kept here for interactive testing.
app.exec()
#app.exec()

0 comments on commit a43b544

Please sign in to comment.