Depth compositing

Display background images that can occlude 3D geometry based on depth values.

Features:

  • viser.SceneApi.set_background_image() with depth compositing

  • Depth-based occlusion for realistic 2D/3D integration

  • Custom depth maps for controlling visibility

  • Real-time depth buffer updates

Source: examples/01_scene/07_background_composite.py

Depth compositing

Code

 1import time
 2
 3import numpy as np
 4import trimesh
 5import trimesh.creation
 6
 7import viser
 8
 9server = viser.ViserServer()
10
11
12img = np.random.randint(0, 255, size=(1000, 1000, 3), dtype=np.uint8)
13depth = np.ones((1000, 1000, 1), dtype=np.float32)
14
15# Make a square middle portal.
16depth[250:750, 250:750, :] = 10.0
17img[250:750, 250:750, :] = 255
18
19mesh = trimesh.creation.box((0.5, 0.5, 0.5))
20server.scene.add_mesh_trimesh(
21    name="/cube",
22    mesh=mesh,
23    position=(0, 0, 0.0),
24)
25server.scene.set_background_image(img, depth=depth)
26
27
28while True:
29    time.sleep(1.0)