Examples

Interactive Volume Rendering

This is a simple script for loading the IsolatedGalaxy example dataset and creating an interactive rendering window for it, including a GUI.

1
2
3
4
5
6
7
8
9
import yt

import yt_idv

ds = yt.load_sample("IsolatedGalaxy")

rc = yt_idv.render_context(height=800, width=800, gui=True)
sg = rc.add_scene(ds, "density", no_ghost=True)
rc.run()

Off-screen Volume Rendering

This is a simple script for loading the IsolatedGalaxy example dataset, creating an off-screen rendering context, and then taking two snapshots.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import yt

import yt_idv

ds = yt.load_sample("IsolatedGalaxy")
dd = ds.all_data()

rc = yt_idv.render_context("egl", width=1024, height=1024)
rc.add_scene(dd, "density", no_ghost=True)

image = rc.run()
yt.write_bitmap(image, "step1.png")

rc.scene.camera.move_forward(1.5)

image = rc.run()
yt.write_bitmap(image, "step2.png")

Making a Zoom Movie

This script loads the HiresIsolatedGalaxy sample dataset, creates a 1024x1024 offscreen rendering context, sets the camera position and then zooms toward the center, making 400 snapshots. It also sets the cmap_min and cmap_max attributes, so the colormap is allowed to be dynamically set at every step.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
import yt

import yt_idv

N = 400

ds = yt.load_sample("HiresIsolatedGalaxy")
c = [0.53, 0.53, 0.53]

rc = yt_idv.render_context("egl", width=1024, height=1024)
sc = rc.add_scene(ds, "density", no_ghost=False)
sc.components[0].render_method = "projection"
sc.camera.focus = c
sc.camera.position = [0.45, 0.44, 0.43]

ds = (sc.camera.focus - sc.camera.position) / N

for _ in range(N):
    sc.components[0].cmap_min = sc.components[0].cmap_max = None
    sc.camera.position = sc.camera.position + ds
    sc.camera._update_matrices()
    rc.snap()

Interactive Widget in Jupyter

This script, when executed as a series of Jupyter notebook cells, will create an off-screen context and render into that. The call to add_image() will create an Image widget that is auto-updated when the scene runs.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import yt
import yt_idv

ds = yt.load_sample("IsolatedGalaxy")
dd = ds.all_data()

rc = yt_idv.render_context("egl", width=400, height=400)
rc.add_scene(dd, "density", no_ghost=True)
rc.run()
rc.add_image()

Note that if you have access to OSMesa but not EGL, you can use the OSMesa rendering context instead.