trimesh.viewer.trackball#

Trackball class for 3D manipulation of viewpoints.

class trimesh.viewer.trackball.Trackball(pose, size, scale, target=None)#

Bases: object

A trackball class for creating camera transforms from mouse movements.

STATE_PAN = 1#
STATE_ROLL = 2#
STATE_ROTATE = 0#
STATE_ZOOM = 3#
__init__(pose, size, scale, target=None)#

Initialize a trackball with an initial camera-to-world pose and the given parameters.

Parameters:
  • pose ([4,4]) – An initial camera-to-world pose for the trackball.

  • size ((float, float)) – The width and height of the camera image in pixels.

  • scale (float) – The diagonal of the scene’s bounding box – used for ensuring translation motions are sufficiently fast for differently-sized scenes.

  • target ((3,) float) – The center of the scene in world coordinates. The trackball will revolve around this point.

down(point)#

Record an initial mouse press at a given point.

Parameters:

point ((2,) int) – The x and y pixel coordinates of the mouse press.

drag(point)#

Update the tracball during a drag.

Parameters:

point ((2,) int) – The current x and y pixel coordinates of the mouse during a drag. This will compute a movement for the trackball with the relative motion between this point and the one marked by down().

property pose#

The current camera-to-world pose.

Type:

autolab_core.RigidTransform

resize(size)#

Resize the window.

Parameters:

size ((float, float)) – The new width and height of the camera image in pixels.

rotate(azimuth, axis=None)#

Rotate the trackball about the “Up” axis by azimuth radians.

Parameters:

azimuth (float) – The number of radians to rotate.

scroll(clicks)#

Zoom using a mouse scroll wheel motion.

Parameters:

clicks (int) – The number of clicks. Positive numbers indicate forward wheel movement.

set_state(state)#

Set the state of the trackball in order to change the effect of dragging motions.

Parameters:

state (int) – One of Trackball.STATE_ROTATE, Trackball.STATE_PAN, Trackball.STATE_ROLL, and Trackball.STATE_ZOOM.