trimesh.viewer.widget module

widget.py

A widget which can visualize trimesh.Scene objects in a glooey window.

Check out an example in examples/widget.py

Classes

MeshGroup([transform, texture, parent])

SceneGroup(rect, scene[, background, …])

SceneWidget(scene, **kwargs)

class trimesh.viewer.widget.MeshGroup(transform=None, texture=None, parent=None)

Bases: pyglet.graphics.Group

Methods

set_state()

Apply the OpenGL state change.

unset_state()

Repeal the OpenGL state change.

set_state()

Apply the OpenGL state change.

The default implementation does nothing.

unset_state()

Repeal the OpenGL state change.

The default implementation does nothing.

class trimesh.viewer.widget.SceneGroup(rect, scene, background=None, pixel_per_point=(1, 1), parent=None)

Bases: pyglet.graphics.Group

Methods

set_state()

Apply the OpenGL state change.

unset_state()

Repeal the OpenGL state change.

set_state()

Apply the OpenGL state change.

The default implementation does nothing.

unset_state()

Repeal the OpenGL state change.

The default implementation does nothing.

class trimesh.viewer.widget.SceneWidget(scene, **kwargs)

Bases: glooey.widget.Widget

Methods

clear()

do_claim()

Return the minimum width and height needed to render this widget.

do_draw()

Draw any shapes or images associated with this widget.

do_regroup()

React to a change in the widget’s pyglet graphics group.

do_undraw()

Delete any shapes or images associated with this widget.

on_mouse_drag(x, y, dx, dy, buttons, modifiers)

React to the mouse being dragged within this widget.

on_mouse_press(x, y, buttons, modifiers)

React when the mouse is pressed on this widget.

on_mouse_scroll(x, y, dx, dy)

React to the mouse scroll wheel being turned.

reset_view()

Attributes

scene_group

clear()
do_claim()

Return the minimum width and height needed to render this widget.

Most widgets need to implement this method. The exception is widgets that have exactly one child. In that case, there’s a reasonable default: claim just enough space for that child. Most composite widgets are covered by this default, because they typically have a container widget as their only child and attach any other widgets they need to that container.

do_draw()

Draw any shapes or images associated with this widget.

This method is called by _draw() after it checks to make sure the widget is attached to the root of the GUI hierarchy and that the rect, group, and batch attributes have all been set.

This method is called both to draw the widget for the first time and to update it subsequently. This usually means that you need to check to see if your graphics objects and resources need to be initialized yet.

do_regroup()

React to a change in the widget’s pyglet graphics group.

In pyglet, groups are used to control layers and OpenGL state. This method is called whenever the widget’s group is changed, for example when the widget is attached to the GUI or moved from one part of the GUI to another.

Only widgets that actually draw things need to implement this method, because groups aren’t used for anything but drawing. Widgets that contain other widgets may need to implement do_regroup_children() to describe how those children should be regrouped.

It’s not always trivial to change the group used to draw something in pyglet. The way to do this depends on what’s being drawn and whether or not it’s been drawn before. The simplest case are high-level APIs like pyglet.sprite.Sprite that allow you to simply change a group attribute. On the other hand, if you’re drawing vertex lists yourself, you need to call the pyglet.graphics.Batch.migrate() method. This method needs to know the OpenGL mode (e.g. GL_QUADS) associated with the vertex list, so you will have to keep track of that.

Keep in mind that this method is called before the widget is drawn and may be called after it’s been undrawn, so any vertex lists created in the draw function may or may not exist yet/anymore. If those vertex lists don’t exist yet, there’s nothing this function needs to do. The _draw() function will be called when the widget’s ready to draw, and at that point the vertex lists should be created with the right group.

do_undraw()

Delete any shapes or images associated with this widget. This method may be called before _draw().

on_mouse_drag(x, y, dx, dy, buttons, modifiers)

React to the mouse being dragged within this widget.

The on_mouse_drag event is propagated to any children that remained under the mouse, an on_mouse_drag_enter event is triggered in any children that just came under the mouse, and an on_mouse_drag_leave event is triggered in any children that were previously under the mouse but no longer are.

on_mouse_press(x, y, buttons, modifiers)

React when the mouse is pressed on this widget.

The on_mouse_press` event is propagated to any children under the mouse, an ``on_mouse_hold event is started, and an on_rollover event is fired to indicate that the widget’s rollover state is now “down”.

on_mouse_scroll(x, y, dx, dy)

React to the mouse scroll wheel being turned.

The on_mouse_scroll event is propagated to any children under the mouse.

reset_view()
property scene_group