Skip to content

Instantly share code, notes, and snippets.

@alisterburt
Created February 23, 2024 16:37
Show Gist options
  • Save alisterburt/b86bcc4d5180c8d4b10dc619328d848a to your computer and use it in GitHub Desktop.
Save alisterburt/b86bcc4d5180c8d4b10dc619328d848a to your computer and use it in GitHub Desktop.
jules
import napari
import numpy as np
from skimage import data
from napari_threedee.manipulators.base_manipulator import BaseManipulator
class FullManipulator(BaseManipulator):
def __init__(self, viewer, layer=None):
super().__init__(viewer, layer, rotator_axes='yz', translator_axes='z')
def set_layers(self, layers: napari.layers.Layer):
super().set_layers(layers)
def _connect_events(self):
self.layer.events.rotate.connect(self._update_transform)
def _disconnect_events(self):
self.layer.events.rotate.disconnect(self._update_transform)
def _update_transform(self):
# get the new transformation data
self._initialize_transform()
# redraw
self._backend._on_transformation_changed()
def _initialize_transform(self):
self.origin = np.asarray((0, 0, 0))
self.rotation_matrix = self.layer.rotate.copy()
def _while_dragging_rotator(self):
# with self.layer.events.rotate.blocker(self._update_transform):
# self.layer.rotate = self.rotation_matrix.copy()
with self.layer.events.blocker(self._update_transform):
self.layer.rotate = self.rotation_matrix.copy()
viewer = napari.Viewer(ndisplay=3)
blobs = data.binary_blobs(
length=64, volume_fraction=0.1, n_dim=3
).astype(float)
layer = viewer.add_image(blobs)
manipulator = FullManipulator(viewer=viewer, layer=layer)
manipulator.enabled = True
napari.run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment