Get Renders#

Example for getting renders from a client’s viewport to the Python API.

 1import time
 2
 3import imageio.v3 as iio
 4import numpy as onp
 5import viser
 6
 7
 8def main():
 9    server = viser.ViserServer()
10
11    button = server.gui.add_button("Render a GIF")
12
13    @button.on_click
14    def _(event: viser.GuiEvent) -> None:
15        client = event.client
16        assert client is not None
17
18        client.scene.reset()
19
20        images = []
21
22        for i in range(20):
23            positions = onp.random.normal(size=(30, 3)) * 3.0
24            client.scene.add_spline_catmull_rom(
25                f"/catmull_{i}",
26                positions,
27                tension=0.5,
28                line_width=3.0,
29                color=onp.random.uniform(size=3),
30            )
31            images.append(client.camera.get_render(height=720, width=1280))
32
33        print("Generating and sending GIF...")
34        client.send_file_download(
35            "image.gif", iio.imwrite("<bytes>", images, extension=".gif")
36        )
37        print("Done!")
38
39    while True:
40        time.sleep(10.0)
41
42
43if __name__ == "__main__":
44    main()