def __init__(self): self.images = [visuals.Image(image, method='impostor') for i in range(4)] #base = STTransform(scale=(0.009, 0.009), translate=(-0.45, -0.45)) self.images[0].transform = (STTransform(scale=(0.06, 0.06), translate=(-0.5, -0.5)) * SineTransform() * STTransform(scale=(0.1, 0.1), translate=(-5, -5))) tr = AffineTransform() tr.rotate(30, (0, 0, 1)) tr.scale((0.7, 0.7)) self.images[1].transform = (STTransform(translate=(0.5, -0.5)) * tr * STTransform(scale=(0.009, 0.009), translate=(-0.45, -0.45))) self.images[2].transform = (STTransform(scale=(1, 0.14), translate=(-0.5, 0)) * LogTransform((0, 2, 0)) * STTransform(scale=(0.009, 1), translate=(-0.45, 1))) self.images[3].transform = (STTransform(scale=(1, 1), translate=(0.5, 0.2)) * PolarTransform() * STTransform(scale=(np.pi/200, 0.005), translate=(np.pi/4., 0.1))) vispy.scene.SceneCanvas.__init__(self, close_keys='escape') self.size = (800, 800) self.show()
def __init__(self): self.images = [visuals.Image(image, method="impostor") for i in range(4)] self.images[0].transform = ( STTransform(scale=(30, 30), translate=(600, 600)) * SineTransform() * STTransform(scale=(0.1, 0.1), translate=(-5, -5)) ) tr = AffineTransform() tr.rotate(30, (0, 0, 1)) tr.scale((3, 3)) self.images[1].transform = STTransform(translate=(200, 600)) * tr * STTransform(translate=(-50, -50)) self.images[2].transform = ( STTransform(scale=(3, -150), translate=(200, 100)) * LogTransform((0, 2, 0)) * STTransform(scale=(1, -0.01), translate=(-50, 1.3)) ) self.images[3].transform = ( STTransform(scale=(400, 400), translate=(600, 300)) * PolarTransform() * STTransform(scale=(np.pi / 200, 0.005), translate=(-3 * np.pi / 4.0, 0.1)) ) vispy.scene.SceneCanvas.__init__(self, keys="interactive") self.size = (800, 800) self.show()
def __init__(self): self.meshes = [] self.rotation = AffineTransform() # Generate some data to work with global mdata mdata = create_sphere(20, 40, 1.0) # Mesh with pre-indexed vertices, uniform color self.meshes.append(Mesh(meshdata=mdata, color='r')) #mesh.transform = STTransform(scale=(1, 1, .001), translate=(400, 400)) ## Mesh with pre-indexed vertices, per-face color ## Because vertices are pre-indexed, we get a different color ## every time a vertex is visited, resulting in sharp color ## differences between edges. verts = mdata.vertices(indexed='faces') nf = verts.size // 9 fcolor = np.ones((nf, 3, 4), dtype=np.float32) fcolor[..., 0] = np.linspace(1, 0, nf)[:, np.newaxis] fcolor[..., 1] = np.random.normal(size=nf)[:, np.newaxis] fcolor[..., 2] = np.linspace(0, 1, nf)[:, np.newaxis] mesh = Mesh(vertices=verts, face_colors=fcolor) self.meshes.append(mesh) ## Mesh with unindexed vertices, per-vertex color ## Because vertices are unindexed, we get the same color ## every time a vertex is visited, resulting in no color differences ## between edges. verts = mdata.vertices() faces = mdata.faces() nv = verts.size // 3 vcolor = np.ones((nv, 4), dtype=np.float32) vcolor[:, 0] = np.linspace(1, 0, nv) vcolor[:, 1] = np.random.normal(size=nv) vcolor[:, 2] = np.linspace(0, 1, nv) self.meshes.append(Mesh(verts, faces, vcolor)) self.meshes.append(Mesh(verts, faces, vcolor, shading='flat')) self.meshes.append(Mesh(verts, faces, vcolor, shading='smooth')) # Lay out meshes in a grid grid = (3, 3) s = 300. / max(grid) for i, mesh in enumerate(self.meshes): x = 800. * (i % grid[0]) / grid[0] + 400. / grid[0] - 2 y = 800. * (i // grid[1]) / grid[1] + 400. / grid[1] + 2 mesh.transform = ChainTransform([ STTransform(translate=(x, y), scale=(s, s, 1)), self.rotation ]) vispy.scene.SceneCanvas.__init__(self, keys='interactive') self.size = (800, 800) self.show() self.timer = vispy.app.Timer(connect=self.rotate) self.timer.start(0.016)
def __init__(self): self.meshes = [] self.rotation = AffineTransform() # Generate some data to work with global mdata mdata = create_sphere(20, 40, 1.0) # Mesh with pre-indexed vertices, uniform color self.meshes.append(Mesh(meshdata=mdata, color='r')) #mesh.transform = STTransform(scale=(1, 1, .001), translate=(400, 400)) ## Mesh with pre-indexed vertices, per-face color ## Because vertices are pre-indexed, we get a different color ## every time a vertex is visited, resulting in sharp color ## differences between edges. verts = mdata.vertices(indexed='faces') nf = verts.size//9 fcolor = np.ones((nf, 3, 4), dtype=np.float32) fcolor[..., 0] = np.linspace(1, 0, nf)[:, np.newaxis] fcolor[..., 1] = np.random.normal(size=nf)[:, np.newaxis] fcolor[..., 2] = np.linspace(0, 1, nf)[:, np.newaxis] mesh = Mesh(vertices=verts, face_colors=fcolor) self.meshes.append(mesh) ## Mesh with unindexed vertices, per-vertex color ## Because vertices are unindexed, we get the same color ## every time a vertex is visited, resulting in no color differences ## between edges. verts = mdata.vertices() faces = mdata.faces() nv = verts.size//3 vcolor = np.ones((nv, 4), dtype=np.float32) vcolor[:, 0] = np.linspace(1, 0, nv) vcolor[:, 1] = np.random.normal(size=nv) vcolor[:, 2] = np.linspace(0, 1, nv) self.meshes.append(Mesh(verts, faces, vcolor)) self.meshes.append(Mesh(verts, faces, vcolor, shading='flat')) self.meshes.append(Mesh(verts, faces, vcolor, shading='smooth')) # Lay out meshes in a grid grid = (3, 3) s = 300. / max(grid) for i, mesh in enumerate(self.meshes): x = 800. * (i % grid[0]) / grid[0] + 400. / grid[0] - 2 y = 800. * (i // grid[1]) / grid[1] + 400. / grid[1] + 2 mesh.transform = ChainTransform([STTransform(translate=(x, y), scale=(s, s, 1)), self.rotation]) vispy.scene.SceneCanvas.__init__(self, keys='interactive') self.size = (800, 800) self.show() self.timer = vispy.app.Timer(connect=self.rotate) self.timer.start(0.016)
def __init__(self): self.images = [ visuals.Image(image, method='impostor') for i in range(4) ] self.images[0].transform = ( STTransform(scale=(30, 30), translate=(600, 600)) * SineTransform() * STTransform(scale=(0.1, 0.1), translate=(-5, -5))) tr = AffineTransform() tr.rotate(30, (0, 0, 1)) tr.scale((3, 3)) self.images[1].transform = (STTransform(translate=(200, 600)) * tr * STTransform(translate=(-50, -50))) self.images[2].transform = ( STTransform(scale=(3, -150), translate=(200, 100)) * LogTransform( (0, 2, 0)) * STTransform(scale=(1, -0.01), translate=(-50, 1.3))) self.images[3].transform = ( STTransform(scale=(400, 400), translate=(600, 300)) * PolarTransform() * STTransform(scale=(np.pi / 200, 0.005), translate=(-3 * np.pi / 4., 0.1))) vispy.scene.SceneCanvas.__init__(self, keys='interactive') self.size = (800, 800) self.show()
def __init__(self): # Define several Line visuals that use the same position data # but have different colors and transformations colors = [color, (1, 0, 0, 1), (0, 1, 0, 1), (0, 0, 1, 1), (1, 1, 0, 1), (1, 1, 1, 1)] self.lines = [visuals.Line(pos=pos, color=colors[i]) for i in range(6)] center = STTransform(translate=(400, 400)) self.lines[0].transform = center self.lines[1].transform = (center * STTransform(scale=(1, 0.1, 1))) self.lines[2].transform = (center * STTransform(translate=(200, 200, 0)) * STTransform(scale=(0.3, 0.5, 1))) self.lines[3].transform = (center * STTransform(translate=(-200, -200, 0), scale=(200, 1)) * LogTransform(base=(10, 0, 0)) * STTransform(translate=(1, 0, 0))) self.lines[4].transform = AffineTransform() self.lines[4].transform.rotate(45, (0, 0, 1)) self.lines[4].transform.scale((0.3, 0.3, 1)) self.lines[4].transform.translate((200, 200, 0)) self.lines[5].transform = (STTransform(translate=(200, 600, 0), scale=(5, 5)) * PolarTransform() * LogTransform(base=(2, 0, 0)) * STTransform(scale=(0.01, 0.1), translate=(4, 20))) vispy.scene.SceneCanvas.__init__(self, keys='interactive') self.size = (800, 800) self.show()
def __init__(self): self.meshes = [] self.rotation = AffineTransform() # Generate some data to work with global mdata mdata = sphere(20, 40, 1.0) # Mesh with pre-indexed vertices, uniform color verts = mdata.vertices(indexed='faces') mesh = visuals.Mesh(pos=verts, color=(1, 0, 0, 1)) self.meshes.append(mesh) # Mesh with pre-indexed vertices, per-face color # Because vertices are pre-indexed, we get a different color # every time a vertex is visited, resulting in sharp color # differences between edges. nf = verts.size//9 fcolor = np.ones((nf, 3, 4), dtype=np.float32) fcolor[..., 0] = np.linspace(1, 0, nf)[:, np.newaxis] fcolor[..., 1] = np.random.normal(size=nf)[:, np.newaxis] fcolor[..., 2] = np.linspace(0, 1, nf)[:, np.newaxis] mesh = visuals.Mesh(pos=verts, color=fcolor) self.meshes.append(mesh) # Mesh with unindexed vertices, per-vertex color # Because vertices are unindexed, we get the same color # every time a vertex is visited, resulting in no color differences # between edges. verts = mdata.vertices() faces = mdata.faces() nv = verts.size//3 vcolor = np.ones((nv, 4), dtype=np.float32) vcolor[:, 0] = np.linspace(1, 0, nv) vcolor[:, 1] = np.random.normal(size=nv) vcolor[:, 2] = np.linspace(0, 1, nv) mesh = visuals.Mesh(pos=verts, faces=faces, color=vcolor) self.meshes.append(mesh) # Mesh colored by vertices + grid contours mesh = visuals.Mesh(pos=verts, faces=faces) mesh.color_components = [VertexColorComponent(vcolor), GridContourComponent(spacing=(0.13, 0.13, 0.13))] self.meshes.append(mesh) # Phong shaded mesh mesh = visuals.Mesh(pos=verts, faces=faces) normal_comp = VertexNormalComponent(mdata) mesh.color_components = [VertexColorComponent(vcolor), GridContourComponent(spacing=(0.1, 0.1, 0.1)), ShadingComponent(normal_comp, lights=[((-1, 1, -1), (1.0, 1.0, 1.0))], ambient=0.2)] self.meshes.append(mesh) # Phong shaded mesh, flat faces mesh = visuals.Mesh(pos=mdata.vertices(indexed='faces')) normal_comp = VertexNormalComponent(mdata, smooth=False) mesh.color_components = [VertexColorComponent(vcolor[mdata.faces()]), GridContourComponent(spacing=(0.1, 0.1, 0.1)), ShadingComponent(normal_comp, lights=[((-1, 1, -1), (1.0, 1.0, 1.0))], ambient=0.2)] self.meshes.append(mesh) # Lay out meshes in a grid grid = (3, 3) s = 0.8 / max(grid) for i, mesh in enumerate(self.meshes): x = 2.0 * (i % grid[0]) / grid[0] + 4.0 / grid[0] - 2 y = - 2.0 * (i // grid[1]) / grid[1] - 4.0 / grid[1] + 2 mesh.transform = ChainTransform([STTransform(translate=(x, y), scale=(s, s, s)), self.rotation]) vispy.app.Canvas.__init__(self, close_keys='escape') self.size = (800, 800) self.show() self.timer = vispy.app.Timer(connect=self.rotate) self.timer.start(0.016)
def __init__(self): self.meshes = [] self.rotation = AffineTransform() # Generate some data to work with global mdata mdata = create_sphere(20, 40, 1.0) # Mesh with pre-indexed vertices, uniform color verts = mdata.get_vertices(indexed='faces') mesh = ModularMesh(pos=verts, color=(1, 0, 0, 1)) self.meshes.append(mesh) # Mesh with pre-indexed vertices, per-face color # Because vertices are pre-indexed, we get a different color # every time a vertex is visited, resulting in sharp color # differences between edges. nf = verts.size//9 fcolor = np.ones((nf, 3, 4), dtype=np.float32) fcolor[..., 0] = np.linspace(1, 0, nf)[:, np.newaxis] fcolor[..., 1] = np.random.normal(size=nf)[:, np.newaxis] fcolor[..., 2] = np.linspace(0, 1, nf)[:, np.newaxis] mesh = ModularMesh(pos=verts, color=fcolor) self.meshes.append(mesh) # Mesh with unindexed vertices, per-vertex color # Because vertices are unindexed, we get the same color # every time a vertex is visited, resulting in no color differences # between edges. verts = mdata.get_vertices() faces = mdata.get_faces() nv = verts.size//3 vcolor = np.ones((nv, 4), dtype=np.float32) vcolor[:, 0] = np.linspace(1, 0, nv) vcolor[:, 1] = np.random.normal(size=nv) vcolor[:, 2] = np.linspace(0, 1, nv) mesh = ModularMesh(pos=verts, faces=faces, color=vcolor) self.meshes.append(mesh) # Mesh colored by vertices + grid contours mesh = ModularMesh(pos=verts, faces=faces) mesh.color_components = [VertexColorComponent(vcolor), GridContourComponent(spacing=(0.13, 0.13, 0.13))] self.meshes.append(mesh) # Phong shaded mesh mesh = ModularMesh(pos=verts, faces=faces) normal_comp = VertexNormalComponent(mdata) mesh.color_components = [VertexColorComponent(vcolor), GridContourComponent(spacing=(0.1, 0.1, 0.1)), ShadingComponent(normal_comp, lights=[((-1, 1, -1), (1.0, 1.0, 1.0))], ambient=0.2)] self.meshes.append(mesh) # Phong shaded mesh, flat faces mesh = ModularMesh(pos=mdata.get_vertices(indexed='faces')) normal_comp = VertexNormalComponent(mdata, smooth=False) mesh.color_components = [ VertexColorComponent(vcolor[mdata.get_faces()]), GridContourComponent(spacing=(0.1, 0.1, 0.1)), ShadingComponent(normal_comp, lights=[((-1, 1, -1), (1.0, 1.0, 1.0))], ambient=0.2)] self.meshes.append(mesh) # Lay out meshes in a grid grid = (3, 3) s = 300. / max(grid) for i, mesh in enumerate(self.meshes): x = 800. * (i % grid[0]) / grid[0] + 400. / grid[0] - 2 y = 800. * (i // grid[1]) / grid[1] + 400. / grid[1] + 2 mesh.transform = ChainTransform([STTransform(translate=(x, y), scale=(s, s, 1)), self.rotation]) vispy.scene.SceneCanvas.__init__(self, keys='interactive') self.size = (800, 800) self.show() self.timer = vispy.app.Timer(connect=self.rotate) self.timer.start(0.016)
class Canvas(vispy.scene.SceneCanvas): def __init__(self): self.meshes = [] self.rotation = AffineTransform() # Generate some data to work with global mdata mdata = create_sphere(20, 40, 1.0) # Mesh with pre-indexed vertices, uniform color verts = mdata.get_vertices(indexed='faces') mesh = ModularMesh(pos=verts, color=(1, 0, 0, 1)) self.meshes.append(mesh) # Mesh with pre-indexed vertices, per-face color # Because vertices are pre-indexed, we get a different color # every time a vertex is visited, resulting in sharp color # differences between edges. nf = verts.size//9 fcolor = np.ones((nf, 3, 4), dtype=np.float32) fcolor[..., 0] = np.linspace(1, 0, nf)[:, np.newaxis] fcolor[..., 1] = np.random.normal(size=nf)[:, np.newaxis] fcolor[..., 2] = np.linspace(0, 1, nf)[:, np.newaxis] mesh = ModularMesh(pos=verts, color=fcolor) self.meshes.append(mesh) # Mesh with unindexed vertices, per-vertex color # Because vertices are unindexed, we get the same color # every time a vertex is visited, resulting in no color differences # between edges. verts = mdata.get_vertices() faces = mdata.get_faces() nv = verts.size//3 vcolor = np.ones((nv, 4), dtype=np.float32) vcolor[:, 0] = np.linspace(1, 0, nv) vcolor[:, 1] = np.random.normal(size=nv) vcolor[:, 2] = np.linspace(0, 1, nv) mesh = ModularMesh(pos=verts, faces=faces, color=vcolor) self.meshes.append(mesh) # Mesh colored by vertices + grid contours mesh = ModularMesh(pos=verts, faces=faces) mesh.color_components = [VertexColorComponent(vcolor), GridContourComponent(spacing=(0.13, 0.13, 0.13))] self.meshes.append(mesh) # Phong shaded mesh mesh = ModularMesh(pos=verts, faces=faces) normal_comp = VertexNormalComponent(mdata) mesh.color_components = [VertexColorComponent(vcolor), GridContourComponent(spacing=(0.1, 0.1, 0.1)), ShadingComponent(normal_comp, lights=[((-1, 1, -1), (1.0, 1.0, 1.0))], ambient=0.2)] self.meshes.append(mesh) # Phong shaded mesh, flat faces mesh = ModularMesh(pos=mdata.get_vertices(indexed='faces')) normal_comp = VertexNormalComponent(mdata, smooth=False) mesh.color_components = [ VertexColorComponent(vcolor[mdata.get_faces()]), GridContourComponent(spacing=(0.1, 0.1, 0.1)), ShadingComponent(normal_comp, lights=[((-1, 1, -1), (1.0, 1.0, 1.0))], ambient=0.2)] self.meshes.append(mesh) # Lay out meshes in a grid grid = (3, 3) s = 300. / max(grid) for i, mesh in enumerate(self.meshes): x = 800. * (i % grid[0]) / grid[0] + 400. / grid[0] - 2 y = 800. * (i // grid[1]) / grid[1] + 400. / grid[1] + 2 mesh.transform = ChainTransform([STTransform(translate=(x, y), scale=(s, s, 1)), self.rotation]) vispy.scene.SceneCanvas.__init__(self, keys='interactive') self.size = (800, 800) self.show() self.timer = vispy.app.Timer(connect=self.rotate) self.timer.start(0.016) def rotate(self, event): self.rotation.rotate(1, (0, 1, 0)) # TODO: altering rotation should trigger this automatically. for m in self.meshes: m._program._need_build = True self.update() def on_draw(self, ev): gloo.set_clear_color('black') gloo.clear(color=True, depth=True) for mesh in self.meshes: self.draw_visual(mesh)