Basic Scene#
Demonstrates a basic scene with multiple visual elements and imgui controls.

import cmap
import numpy as np
import scenex as snx
try:
from scenex.imgui import add_imgui_controls
except ImportError:
print("imgui not available, skipping imgui controls")
add_imgui_controls = None
view = snx.View(
scene=snx.Scene(
children=[
snx.Image(
data=np.random.randint(0, 255, (200, 200)).astype(np.uint8),
cmap=cmap.Colormap("viridis"),
transform=snx.Transform().scaled((1.3, 0.5)).translated((-40, 20)),
clims=(0, 255),
opacity=0.7,
order=0,
),
snx.Points(
vertices=np.random.randint(0, 200, (100, 2)).astype(np.uint8),
size=5,
face_color=snx.UniformColor(color=cmap.Color("coral")),
edge_color=snx.UniformColor(color=cmap.Color("purple")),
transform=snx.Transform().translated((0, -50)),
order=1,
),
]
),
camera=snx.Camera(controller=snx.PanZoom(), interactive=True),
on_resize=snx.Letterbox(),
)
# example of adding an object to a scene
X, Y = np.meshgrid(np.linspace(-10, 10, 100), np.linspace(-10, 10, 100))
sine_img = (np.sin(X) * np.cos(Y)).astype(np.float32)
image = snx.Image(name="sine image", data=sine_img, clims=(-1, 1), order=2)
view.scene.add_child(image)
# both are optional, just for example
# snx.use("pygfx")
# snx.use("vispy")
snx.show(view)
if add_imgui_controls is not None:
add_imgui_controls(view)
snx.run()