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.
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)
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
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
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 = []
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()
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)
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)
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
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
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)
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()
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,