pip install vispy
python
import numpy as np
from vispy import app, gloo
from vispy.util.transforms import perspective, translate, rotate
python
class MapVisualization(app.Canvas):
def __init__(self):
app.Canvas.__init__(self, keys='interactive')
def on_initialize(self, event):
# ...
pass
def on_draw(self, event):
# ...
pass
def on_update(self, event):
# ...
pass
def on_key_press(self, event):
# ...
pass
def on_mouse_move(self, event):
# ...
pass
def run(self):
self.show()
app.run()
python
def on_initialize(self, event):
self.map_data = np.array([[0, 0], [0, 1], [1, 1], [1, 0]])
self.map_color = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1], [1, 1, 1]])
def on_draw(self, event):
gloo.clear(color='black')
gloo.set_viewport(0, 0, *self.size)
gloo.set_state(clear_color=(0, 0, 0, 1), blend=False, depth_test=True)
program = gloo.Program(vertex_shader=VERTEX_SHADER, fragment_shader=FRAGMENT_SHADER)
program['map_data'] = gloo.VertexBuffer(self.map_data)
program['map_color'] = gloo.VertexBuffer(self.map_color)
program['transform'] = translate((0, 0, -5))
program['transform'] = rotate(0, (0, 1, 0))
program['transform'] = perspective(45.0, self.size[0] / float(self.size[1]), 1.0, 100.0)
program.draw('triangles')
def on_update(self, event):
# ...
pass
python
app = MapVisualization()
app.run()