Use a Skybox

Example with a skybox background in a rotating scene.

skybox rotate
Imageio: 'meadow_cube.jpg' was not found on your computer; downloading it now.
Try 1. Download from (2.3 MB)
Downloading: 8192/2446539 bytes (0.3%)2446539/2446539 bytes (100.0%)
File saved as /home/docs/.imageio/images/meadow_cube.jpg.

import imageio.v3 as iio
from import WgpuCanvas, run
import pygfx as gfx
import pylinalg as la

# Read the image
# The order of the images is already correct for GPU cubemap texture sampling
im = iio.imread("imageio:meadow_cube.jpg")

# Turn it into a 3D image (a 4d nd array)
width = height = im.shape[1]
im.shape = -1, width, height, 3

canvas = WgpuCanvas()
renderer = gfx.renderers.WgpuRenderer(canvas)
scene = gfx.Scene()

# Create cubemap texture
tex_size = width, height, 6
tex = gfx.Texture(im, dim=2, size=tex_size)

# And the background image with the cube texture
background = gfx.Background(None, gfx.BackgroundSkyboxMaterial(map=tex))

axes = gfx.AxesHelper(5)

camera = gfx.PerspectiveCamera(70)

camera.local.position = (0, 4, 20)

controller = gfx.OrbitController(camera, register_events=renderer)

def animate():
    rot = la.quat_from_euler((0.005, 0.01, 0.01))
    scene.local.rotation = la.quat_mul(rot, scene.local.rotation)

    renderer.render(scene, camera)

if __name__ == "__main__":

Total running time of the script: (0 minutes 1.546 seconds)

Gallery generated by Sphinx-Gallery