Depth compositing¶
Display background images that can occlude 3D geometry based on depth values.
Features:
viser.SceneApi.set_background_image()
with depth compositingDepth-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

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)