Camera¶
Show how to manipulate a camera.
Tags: camera, keyboard

import datoviz as dvz
app = dvz.App()
figure = app.figure()
panel = figure.panel(background=True)
panel.demo_3D()
# Camera initial parameters (the ones used when calling camera_reset()).
position = (0, 0, 2)
up = (0, 1, 0)
lookat = (0, 0, 0)
# Get or create the panel's 3D perspective camera.
camera = panel.camera(initial=position, initial_up=up, initial_lookat=lookat)
d = 0.1
mapping = {
    'up': (2, -d),
    'down': (2, +d),
    'left': (0, -d),
    'right': (0, +d),
}
@app.connect(figure)
def on_keyboard(ev):
    # Keyboard events are PRESS, RELEASE, and REPEAT.
    if ev.key_event() != 'release':
        # Move the camera position depending on the pressed keys.
        i, dp = mapping.get(ev.key_name(), (0, 0))
        position = list(camera.position())
        position[i] += dp
        lookat = (position[0], position[1], position[2] - 1)
        # Update the camera.
        camera.set(position=position, lookat=lookat)
app.run()
app.destroy()