.. _quickstart_guide: Quickstart ========== Minimal Example for 3D Viewer ----------------------------- Here is a minimal example of loading and viewing a triangular mesh model in pyrender. >>> import trimesh >>> import pyrender >>> fuze_trimesh = trimesh.load('examples/models/fuze.obj') >>> mesh = pyrender.Mesh.from_trimesh(fuze_trimesh) >>> scene = pyrender.Scene() >>> scene.add(mesh) >>> pyrender.Viewer(scene, use_raymond_lighting=True) .. image:: /_static/fuze.png Minimal Example for Offscreen Rendering --------------------------------------- .. note:: If you're using a headless server, make sure that you followed the guide for installing OSMesa. See :ref:`osmesa`. Here is a minimal example of rendering a mesh model offscreen in pyrender. The only additional necessities are that you need to add lighting and a camera. >>> import numpy as np >>> import trimesh >>> import pyrender >>> import matplotlib.pyplot as plt >>> fuze_trimesh = trimesh.load('examples/models/fuze.obj') >>> mesh = pyrender.Mesh.from_trimesh(fuze_trimesh) >>> scene = pyrender.Scene() >>> scene.add(mesh) >>> camera = pyrender.PerspectiveCamera(yfov=np.pi / 3.0, aspectRatio=1.0) >>> s = np.sqrt(2)/2 >>> camera_pose = np.array([ ... [0.0, -s, s, 0.3], ... [1.0, 0.0, 0.0, 0.0], ... [0.0, s, s, 0.35], ... [0.0, 0.0, 0.0, 1.0], ... ]) >>> scene.add(camera, pose=camera_pose) >>> light = pyrender.SpotLight(color=np.ones(3), intensity=3.0, ... innerConeAngle=np.pi/16.0, ... outerConeAngle=np.pi/6.0) >>> scene.add(light, pose=camera_pose) >>> r = pyrender.OffscreenRenderer(400, 400) >>> color, depth = r.render(scene) >>> plt.figure() >>> plt.subplot(1,2,1) >>> plt.axis('off') >>> plt.imshow(color) >>> plt.subplot(1,2,2) >>> plt.axis('off') >>> plt.imshow(depth, cmap=plt.cm.gray_r) >>> plt.show() .. image:: /_static/minexcolor.png :width: 45% :align: left .. image:: /_static/minexdepth.png :width: 45% :align: right