Visualization Library

A lightweight C++ OpenGL middleware for 2D/3D graphics
[Home] [Tutorials] [All Classes] [Grouped Classes]

vl::TrackballManipulator Class Reference

This class lets you rotate a Camera or a Transform node using a vitual trackball. More...

#include <TrackballManipulator.hpp>

Inheritance diagram for vl::TrackballManipulator:

vl::UIEventListener vl::Object

List of all members.

Public Types

enum  ETrackballMode { NoMode, RotationMode, TranslationMode, ZoomMode }

Public Member Functions

virtual const char * className ()
 Returns the name of the class.
 TrackballManipulator ()
virtual void mouseDownEvent (EMouseButton, int x, int y)
virtual void mouseUpEvent (EMouseButton, int x, int y)
virtual void mouseMoveEvent (int x, int y)
mat4 trackballRotation (int x, int y)
vec3 computeVector (int x, int y)
void setCamera (Camera *camera)
Cameracamera ()
void prepareToReconnect ()
 Reimplement this in order to react to a setEnabled(true), see setEnabled() for more information.
void setPivot (vec3 pivot)
 Sets the center point the camera will rotate around.
vec3 pivot () const
void setTransform (Transform *tr)
Transformtransform ()
int rotationButton () const
void setRotationButton (int mouse_button)
int zoomButton () const
void setZoomButton (int mouse_button)
int translationButton () const
void setTranslationButton (int mouse_button)
float rotationSpeed () const
void setRotationSpeed (float speed)
float zoomSpeed () const
void setZoomSpeed (float speed)
float translationSpeed () const
void setTranslationSpeed (float speed)
ETrackballMode mode () const
 Returns the current trackball manipulator state.
void adjustView (const AABB &aabb, const vec3 &dir, const vec3 &up, Real bias=1.0f)
 Adjusts the camera position in order to nicely see the scene. It also position the rotation pivot to the center of the AABB. See also Camera::adjustView().
void adjustView (ActorCollection &actors, const vec3 &dir, const vec3 &up, Real bias=1.0f)
 Adjusts the camera position in order to nicely see the scene. It also position the rotation pivot to the center of the AABB containing the Actor[s]. See also Camera::adjustView().
void adjustView (SceneManager *scene, const vec3 &dir, const vec3 &up, Real bias=1.0f)
 Adjusts the camera position in order to nicely see the scene. It also position the rotation pivot to the center of the AABB containing the given scene manager. See also Camera::adjustView().
void adjustView (Rendering *rendering, const vec3 &dir, const vec3 &up, Real bias=1.0f)
 Adjusts the camera position in order to nicely see the scene. It also position the rotation pivot to the center of the AABB containing all the scene managers part of the given rendering. See also Camera::adjustView().

Protected Attributes

ref< CameramCamera
ivec2 mMouseStart
mat4 mStartMatrix
vec3 mPivot
vec3 mStartCameraPos
vec3 mStartPivot
ref< TransformmTransform
ETrackballMode mMode
int mRotationButton
int mTranslationButton
int mZoomButton
float mRotationSpeed
float mTranslationSpeed
float mZoomSpeed


Detailed Description

This class lets you rotate a Camera or a Transform node using a vitual trackball.

If you set a Transform node to manipulate, using the function setTransform(), this object will manipulate the given Transform. If no Transform is specified or a NULL one is passed to the function setTransform() then this object will manipulate the current camera.

Note:
In any case, before using a TrackballManipulator you have to specify a Camera object using the function setCamera().

The Transform is expected to contain only rotation and translation information. Other transformations like shearing, scaling, projection, and so on can produce unspecified results.


Member Enumeration Documentation

Enumerator:
NoMode 
RotationMode 
TranslationMode 
ZoomMode 


Constructor & Destructor Documentation

vl::TrackballManipulator::TrackballManipulator (  )  [inline]


Member Function Documentation

virtual const char* vl::TrackballManipulator::className (  )  [inline, virtual]

Returns the name of the class.

Reimplemented from vl::UIEventListener.

void TrackballManipulator::mouseDownEvent ( EMouseButton  btn,
int  x,
int  y 
) [virtual]

Reimplemented from vl::UIEventListener.

void TrackballManipulator::mouseUpEvent ( EMouseButton  btn,
int  x,
int  y 
) [virtual]

Reimplemented from vl::UIEventListener.

void TrackballManipulator::mouseMoveEvent ( int  x,
int  y 
) [virtual]

Reimplemented from vl::UIEventListener.

mat4 TrackballManipulator::trackballRotation ( int  x,
int  y 
)

vec3 TrackballManipulator::computeVector ( int  x,
int  y 
)

void vl::TrackballManipulator::setCamera ( Camera camera  )  [inline]

Camera* vl::TrackballManipulator::camera (  )  [inline]

void vl::TrackballManipulator::prepareToReconnect (  )  [inline, virtual]

Reimplement this in order to react to a setEnabled(true), see setEnabled() for more information.

Reimplemented from vl::UIEventListener.

void vl::TrackballManipulator::setPivot ( vec3  pivot  )  [inline]

Sets the center point the camera will rotate around.

vec3 vl::TrackballManipulator::pivot (  )  const [inline]

void vl::TrackballManipulator::setTransform ( Transform tr  )  [inline]

Transform* vl::TrackballManipulator::transform (  )  [inline]

int vl::TrackballManipulator::rotationButton (  )  const [inline]

void vl::TrackballManipulator::setRotationButton ( int  mouse_button  )  [inline]

int vl::TrackballManipulator::zoomButton (  )  const [inline]

void vl::TrackballManipulator::setZoomButton ( int  mouse_button  )  [inline]

int vl::TrackballManipulator::translationButton (  )  const [inline]

void vl::TrackballManipulator::setTranslationButton ( int  mouse_button  )  [inline]

float vl::TrackballManipulator::rotationSpeed (  )  const [inline]

void vl::TrackballManipulator::setRotationSpeed ( float  speed  )  [inline]

float vl::TrackballManipulator::zoomSpeed (  )  const [inline]

void vl::TrackballManipulator::setZoomSpeed ( float  speed  )  [inline]

float vl::TrackballManipulator::translationSpeed (  )  const [inline]

void vl::TrackballManipulator::setTranslationSpeed ( float  speed  )  [inline]

ETrackballMode vl::TrackballManipulator::mode (  )  const [inline]

Returns the current trackball manipulator state.

void TrackballManipulator::adjustView ( const AABB aabb,
const vec3 dir,
const vec3 up,
Real  bias = 1.0f 
)

Adjusts the camera position in order to nicely see the scene. It also position the rotation pivot to the center of the AABB. See also Camera::adjustView().

void TrackballManipulator::adjustView ( ActorCollection actors,
const vec3 dir,
const vec3 up,
Real  bias = 1.0f 
)

Adjusts the camera position in order to nicely see the scene. It also position the rotation pivot to the center of the AABB containing the Actor[s]. See also Camera::adjustView().

void TrackballManipulator::adjustView ( SceneManager scene,
const vec3 dir,
const vec3 up,
Real  bias = 1.0f 
)

Adjusts the camera position in order to nicely see the scene. It also position the rotation pivot to the center of the AABB containing the given scene manager. See also Camera::adjustView().

void TrackballManipulator::adjustView ( Rendering rendering,
const vec3 dir,
const vec3 up,
Real  bias = 1.0f 
)

Adjusts the camera position in order to nicely see the scene. It also position the rotation pivot to the center of the AABB containing all the scene managers part of the given rendering. See also Camera::adjustView().


Member Data Documentation


The documentation for this class was generated from the following files:

Visualization Library v2009.08 Reference Documentation
Copyright 2005-2009 Michele Bosi. All rights reserved.
Updated on Fri Aug 28 10:14:18 2009.
Permission is granted to use this page to write and publish articles regarding Visualization Library.