trimesh.viewer.windowed
windowed.py
Provides a pyglet- based windowed viewer to preview Trimesh, Scene, PointCloud, and Path objects.
Works on all major platforms: Windows, Linux, and OSX.
- class trimesh.viewer.windowed.SceneViewer(scene, smooth=True, flags=None, visible=True, resolution=None, start_loop=True, callback=None, callback_period=None, caption=None, fixed=None, offset_lines=True, line_settings=None, background=None, window_conf=None, profile=False, record=False, **kwargs)
Bases:
BaseWindow
- __init__(scene, smooth=True, flags=None, visible=True, resolution=None, start_loop=True, callback=None, callback_period=None, caption=None, fixed=None, offset_lines=True, line_settings=None, background=None, window_conf=None, profile=False, record=False, **kwargs)
Create a window that will display a trimesh.Scene object in an OpenGL context via pyglet.
- Parameters
scene (trimesh.scene.Scene) – Scene with geometry and transforms
smooth (bool) – If True try to smooth shade things
flags (dict) – If passed apply keys to self.view: [‘cull’, ‘wireframe’, etc]
visible (bool) – Display window or not
resolution ((2,) int) – Initial resolution of window
start_loop (bool) – Call pyglet.app.run() at the end of init
callback (function) – A function which can be called periodically to update things in the scene
callback_period (float) – How often to call the callback, in seconds
fixed (None or iterable) – List of keys in scene.geometry to skip view transform on to keep fixed relative to camera
offset_lines (bool) – If True, will offset lines slightly so if drawn coplanar with mesh geometry they will be visible
background (None or (4,) uint8) – Color for background
window_conf (None, or gl.Config) – Passed to window init
profile (bool) – If set will run a pyinstrument profile for every call to on_draw and print the output.
record (bool) – If True, will save a list of png bytes to a list located in scene.metadata[‘recording’]
kwargs (dict) – Additional arguments to pass, including ‘background’ for to set background color
- add_geometry(name, geometry, **kwargs)
Add a geometry to the viewer.
- Parameters
name (hashable) – Name that references geometry
geometry (Trimesh, Path2D, Path3D, PointCloud) – Geometry to display in the viewer window
** (kwargs) – Passed to rendering.convert_to_vertexlist
- cleanup_geometries()
Remove any stored vertex lists that no longer exist in the scene.
- flip()
Swap the OpenGL front and back buffers.
Call this method on a double-buffered window to update the visible display with the back buffer. The contents of the back buffer is undefined after this operation.
Windows are double-buffered by default. This method is called automatically by EventLoop after the
on_draw()
event.
- hide_geometry(node)
Don’t display the geometry contained at a node on the next draw.
- Parameters
node (str) – Node to not display
- init_gl()
Perform the magic incantations to create an OpenGL scene using pyglet.
- on_draw()
Run the actual draw calls.
- on_key_press(symbol, modifiers)
Call appropriate functions given key presses.
- on_mouse_drag(x, y, dx, dy, buttons, modifiers)
Pan or rotate the view.
- on_mouse_press(x, y, buttons, modifiers)
Set the start point of the drag.
- on_mouse_scroll(x, y, dx, dy)
Zoom the view.
- on_resize(width, height)
Handle resized windows.
- reset_view(flags=None)
Set view to the default view.
- Parameters
flags (None or dict) – If any view key passed override the default e.g. {‘cull’: False}
- save_image(file_obj)
Save the current color buffer to a file object in PNG format.
- Parameters
file_obj (file name, or file- like object) –
- toggle_axis()
Toggle a rendered XYZ/RGB axis marker: off, world frame, every frame
- toggle_culling()
Toggle back face culling.
It is on by default but if you are dealing with non- watertight meshes you probably want to be able to see the back sides.
- toggle_fullscreen()
Toggle between fullscreen and windowed mode.
- toggle_grid()
Toggle a rendered grid.
- toggle_wireframe()
Toggle wireframe mode
Good for looking inside meshes, off by default.
- unhide_geometry(node)
If a node is hidden remove the flag and show the geometry on the next draw.
- Parameters
node (str) – Node to display
- update_flags()
Check the view flags, and call required GL functions.
- trimesh.viewer.windowed.geometry_hash(geometry)
Get a hash for a geometry object
- Parameters
geometry (object) –
- Returns
hash
- Return type
str
- trimesh.viewer.windowed.render_scene(scene, resolution=None, visible=True, **kwargs)
Render a preview of a scene to a PNG. Note that whether this works or not highly variable based on platform and graphics driver.
- Parameters
scene (trimesh.Scene) – Geometry to be rendered
resolution ((2,) int or None) – Resolution in pixels or set from scene.camera
visible (bool) – Show a window during rendering. Note that MANY platforms refuse to render with hidden windows and will likely return a blank image; this is a platform issue and cannot be fixed in Python.
kwargs – Passed to SceneViewer
- Returns
render – Image in PNG format
- Return type
bytes