Meshes#

Visualize a mesh. To get the demo data, see ./assets/download_dragon_mesh.sh.

 1import time
 2from pathlib import Path
 3
 4import numpy as onp
 5import trimesh
 6import viser
 7import viser.transforms as tf
 8
 9mesh = trimesh.load_mesh(str(Path(__file__).parent / "assets/dragon.obj"))
10assert isinstance(mesh, trimesh.Trimesh)
11mesh.apply_scale(0.05)
12
13vertices = mesh.vertices
14faces = mesh.faces
15print(f"Loaded mesh with {vertices.shape} vertices, {faces.shape} faces")
16
17server = viser.ViserServer()
18server.scene.add_mesh_simple(
19    name="/simple",
20    vertices=vertices,
21    faces=faces,
22    wxyz=tf.SO3.from_x_radians(onp.pi / 2).wxyz,
23    position=(0.0, 0.0, 0.0),
24)
25server.scene.add_mesh_trimesh(
26    name="/trimesh",
27    mesh=mesh.smoothed(),
28    wxyz=tf.SO3.from_x_radians(onp.pi / 2).wxyz,
29    position=(0.0, 5.0, 0.0),
30)
31
32while True:
33    time.sleep(10.0)