diff --git a/cura/Snapshot.py b/cura/Snapshot.py index 04e13165ef..a81cfc18d5 100644 --- a/cura/Snapshot.py +++ b/cura/Snapshot.py @@ -73,10 +73,11 @@ class Snapshot: satisfied = False size = None fovy = 30 + min_x, min_y, max_x, max_y = 0, 0, 0, 0 while not satisfied: if size is not None: - satisfied = True # always be satisfied after second try + satisfied = True # Always be satisfied after second try projection_matrix = Matrix() # Somehow the aspect ratio is also influenced in reverse by the screen width/height # So you have to set it to render_width/render_height to get 1 @@ -92,16 +93,18 @@ class Snapshot: if size > 0.5 or satisfied: satisfied = True else: - # make it big and allow for some empty space around + # Make it big and allow for some empty space around fovy *= 0.5 # strangely enough this messes up the aspect ratio: fovy *= size * 1.1 - - # make it a square - if max_x - min_x >= max_y - min_y: + width = max_x - min_x + height = max_y - min_y + # Make it a square + if width >= height: # make y bigger - min_y, max_y = int((max_y + min_y) / 2 - (max_x - min_x) / 2), int((max_y + min_y) / 2 + (max_x - min_x) / 2) + min_y, max_y = int(height / 2 - width / 2), int(height / 2 + width / 2) else: # make x bigger - min_x, max_x = int((max_x + min_x) / 2 - (max_y - min_y) / 2), int((max_x + min_x) / 2 + (max_y - min_y) / 2) + min_x, max_x = int(width / 2 - height / 2), int(width / 2 + height / 2) + cropped_image = pixel_output.copy(min_x, min_y, max_x - min_x, max_y - min_y) # Scale it to the correct size