Пример #1
0
 def test_merge_cameras(self):
     """Test function merge_cameras."""
     cam_1 = TurntableCamera(center=(0., 0., 0.), scale_factor=100.,
                             distance=100.)
     cam_2 = TurntableCamera(center=(10., 10., 10.), scale_factor=10.,
                             distance=10.)
     cam_3 = TurntableCamera(center=(2., 20., 5.), scale_factor=20.,
                             distance=20.)
     m_cam = merge_cameras(cam_1, cam_2, cam_3)
     assert np.array_equal(m_cam.center, (4.0, 10.0, 5.0))
     assert m_cam.scale_factor == 100.
     assert m_cam.distance == 100.
Пример #2
0
    def __init__(self,
                 fov=0.0,
                 elevation=30.0,
                 azimuth=30.0,
                 roll=0.0,
                 distance=None,
                 translate_speed=1.0,
                 **kwargs):
        TurntableCamera.__init__(self, fov, elevation, azimuth, roll, distance,
                                 **kwargs)

        self._translate_speed = None
        self.translate_speed = translate_speed
Пример #3
0
    def __init__(self,
                 fov=0.0,
                 elevation=30.0,
                 azimuth=30.0,
                 roll=0.0,
                 distance=None,
                 translate_speed=1.0,
                 **kwargs):
        TurntableCamera.__init__(self, fov, elevation, azimuth, roll, distance,
                                 **kwargs)

        self._translate_speed = None
        self.translate_speed = translate_speed
    def __init__(self, keyupdateCB):
        scene.SceneCanvas.__init__(self, keys=None)
        self.size = 800, 600
        self.unfreeze()
        self.view = self.central_widget.add_view()
        self.view.bgcolor = '#ffffff'
        self.view.camera = TurntableCamera(fov=10.0,
                                           distance=30.0,
                                           up='+z',
                                           center=(0.0, 0.0, 0.0))
        self.last_pos = [0, 0, 0]
        self.pos_markers = visuals.Markers()
        self.meas_markers = visuals.Markers()
        self.pos_data = np.array([0, 0, 0], ndmin=2)
        self.meas_data = np.array([0, 0, 0], ndmin=2)
        self.lines = []

        self.view.add(self.pos_markers)
        self.view.add(self.meas_markers)
        for i in range(6):
            line = visuals.Line()
            self.lines.append(line)
            self.view.add(line)

        self.keyCB = keyupdateCB

        self.freeze()

        scene.visuals.XYZAxis(parent=self.view.scene)
Пример #5
0
def merge_cameras(*args):
    """Merge several TurnTable cameras.

    This function returns the mean center and the max across scale_factor and
    distances.

    Parameter
    ---------
    args : TurnTableCamera
        The turntable cameras to use.

    Returns
    -------
    cam_state : dict
        The dictionary of merged camera states.
    """
    assert all([isinstance(k, TurntableCamera) for k in args])
    center = np.zeros((3,), dtype=np.float32)
    scale_factor, distance = [], []
    # Get the camera state of multiple cameras :
    for k in args:
        cam_state = k.get_state()
        center += cam_state['center']
        scale_factor.append(cam_state['scale_factor'])
        if isinstance(k.distance, (int, float)):
            distance.append(k.distance)
    # Get mean center, max scale_factor and max distance :
    center /= len(args)
    scale_factor = np.max(scale_factor)
    distance = np.max(distance) if len(distance) else None
    # Create turntable camera :
    cam = TurntableCamera(center=center, scale_factor=scale_factor,
                          distance=distance)
    return cam
Пример #6
0
    def __init__(self):
        self.canvas = scene.SceneCanvas(keys='interactive',
                                        size=(1024, 768),
                                        show=True,
                                        config=dict(samples=4),
                                        resizable=True)

        self.plane_color = 0.25 * np.ones((1, 3))
        self.bg_color = 0.9 * np.ones((1, 3))
        self.line_color = 0.7 * np.ones((1, 3))

        # Set up a viewbox to display the cube with interactive arcball
        self.view = self.canvas.central_widget.add_view()
        self.view.bgcolor = self.bg_color
        self.view.camera = TurntableCamera(fov=30.0,
                                           elevation=30.0,
                                           azimuth=90.0,
                                           center=(0.0, 0.0, 1.25))
        self.cam_state = self.view.camera.get_state()

        # add a colored 3D axis for orientation
        axis = scene.visuals.XYZAxis(parent=self.view.scene)
        self.cfs = []
        self.color_cache = []

        ground = scene.visuals.Plane(32.0,
                                     32.0,
                                     direction="+z",
                                     color=self.plane_color,
                                     parent=self.view.scene)

        # Lazy-constructed vispy objects and data for connectivity graph gfx.
        self.graph_edges = None
        self.graph_lines = None
        self.graph = None
Пример #7
0
    def __init__(
            self,
            hidden=False):  # hidden=true useful for speed when creating video
        self.canvas = scene.SceneCanvas(keys='interactive',
                                        size=(1900, 1145),
                                        show=not hidden,
                                        config=dict(samples=4),
                                        resizable=True,
                                        always_on_top=True,
                                        bgcolor='white',
                                        vsync=True)

        # Set up a viewbox to display the cube with interactive arcball
        self.view = self.canvas.central_widget.add_view()
        self.view.bgcolor = '#efefef'
        self.view.camera = TurntableCamera(fov=60.0,
                                           elevation=30.0,
                                           azimuth=280.0)

        # add a colored 3D axis for orientation
        axis = scene.visuals.XYZAxis(parent=self.view.scene)
        self.cfs = []
        self.spheres = []
        self.crumbs = []
        self.markers = scene.visuals.Markers(parent=self.view.scene)
        self.markers.transform = transforms.STTransform()
        self.obstacles = []
Пример #8
0
def view_patch_vispy(r,
                     attrib=[],
                     opacity=1,
                     fig=0,
                     show=1,
                     colorbar=1,
                     clim=[0],
                     outfile=0,
                     azimuth=0,
                     elevation=-90,
                     colormap='jet'):
    meshdata = vispy.geometry.MeshData(vertices=r.vertices,
                                       faces=r.faces,
                                       vertex_colors=r.vColor)
    canvas = scene.SceneCanvas(keys='interactive', size=(800, 600), show=True)
    mesh = scene.visuals.Mesh(meshdata=meshdata, shading='smooth')
    view = canvas.central_widget.add_view()
    view.add(mesh)
    view.bgcolor = '#efefef'
    view.camera = TurntableCamera(azimuth=azimuth, elevation=elevation)
    color = Color("#3f51b5")
    #    mesh.set_gl_state('translucent', depth_test=True, cull_face=True)
    axis = scene.visuals.XYZAxis(parent=view.scene)
    if __name__ == '__main__' and sys.flags.interactive == 0:
        canvas.app.run()
Пример #9
0
 def test_rotate_turntable(self):
     """Test function rotate_turntable."""
     cam = TurntableCamera()
     xyz = [20, 40, 10]
     cs = (800, 600)
     cam_state = dict(elevation=180., azimuth=90)
     # Default views :
     for k in FIXED_CAM.keys():
         rotate_turntable(fixed=k)
         rotate_turntable(fixed=k, camera=cam, xyz=xyz)
         rotate_turntable(fixed=k, camera=cam, xyz=xyz, csize=cs,
                          camera_state=cam_state)
Пример #10
0
    def _vispy_init(self):

        self._points = {}
        self._xyrects = {}
        self._polygons = {}
        self._canvas = vispy.scene.SceneCanvas(keys='interactive',
                                               show=True,
                                               title="vispy template")
        self._view = self._canvas.central_widget.add_view()
        self._view.camera = TurntableCamera(
            parent=self._view.scene
        )  # NoAccelerationFlyCamera(speed_scaler=0.5)
        self._debug_axis = vispy.scene.visuals.XYZAxis(parent=self._view.scene)
Пример #11
0
    def _dist_to_trans(self, distance):
        """
        Converts mouse x, y movement into x, y, z translations.

        Parameters
        ----------
        distance : numeric
            Distance traveled by the mouse.
        """

        translate = np.asarray(TurntableCamera._dist_to_trans(self, distance))
        translate *= self.__translate_speed

        return translate
Пример #12
0
    def _dist_to_trans(self, distance):
        """
        Converts mouse x, y movement into x, y, z translations.

        Parameters
        ----------
        distance : numeric
            Distance traveled by the mouse.
        """

        translate = np.asarray(TurntableCamera._dist_to_trans(self, distance))
        translate *= self._translate_speed

        return translate
Пример #13
0
    def __init__(self):
        self.canvas = scene.SceneCanvas(keys='interactive', size=(1024, 768), show=True, config=dict(samples=4), resizable=True)

        # Set up a viewbox to display the cube with interactive arcball
        self.view = self.canvas.central_widget.add_view()
        self.view.bgcolor = '#efefef'
        self.view.camera = TurntableCamera(fov=60.0, elevation=30.0, azimuth=280.0)

        # add a colored 3D axis for orientation
        axis = scene.visuals.XYZAxis(parent=self.view.scene)
        self.cfs = []
        self.color_cache = []

        ground = scene.visuals.Plane(6.0, 6.0, direction="+z",
            color=(0.3, 0.3, 0.3, 1.0), parent=self.view.scene)
Пример #14
0
 def run(self, cam=True, center=None):
   if cam:
     self.view.camera = TurntableCamera(fov=70, center=center)
   self.canvas.show()
   #self.view.camera.set_range()
   vispy.app.run()
Пример #15
0
                                  label='depth',
                                  cmap=colormap,
                                  orientation='left')
colorbar.clim = ('%.2f' % depth_norm.vmin, '%.2f' % depth_norm.vmax)
vb1.add(colorbar)

t = scene.visuals.Text('Depth map from OpenGL', parent=vb1, color='k')
t.font_size = 5
t.pos = (100, 20)

#
depth_diff = dimg_depths - depths
depth_diff_norm = norm.Normalize(vmin=depth_diff.min(), vmax=depth_diff.max())

# -------- vb2 : mesh with dimg_depth
vb2.camera = TurntableCamera(fov=45)
# The default depth_value of 100000 causes small artifacts. Use something
# smaller since our mesh uses meter units (so it has at most a height of ~2)
vb2.camera.depth_value = 10
vb2.camera.center = (0, 0, 0.7)
vb2.bgcolor = '#efefef'

mesh = scene.visuals.Mesh(meshdata=meshdata, shading='smooth', color='w')
# Need to enable cull_face
# https://github.com/vispy/vispy/issues/896#issuecomment-152083382
#mesh.set_gl_state('translucent', depth_test=True, cull_face=False)
vb2.add(mesh)

points = scene.visuals.Markers()
points.set_data(verts,
                edge_color=None,