Developer Documentation

Classes | Public Types | Public Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
ACG::SceneGraph::TranslationManipulatorNode Class Reference

`#include <ACG/Scenegraph/TranslationManipulatorNode.hh>`

Inheritance diagram for ACG::SceneGraph::TranslationManipulatorNode:

## Classes
class | Element

## Public Types
enum | AutoSizeMode { Never, Once, Always }
enum | ManipulatorMode { Rotation, TranslationRotation, LocalRotation, Resize, Place }
| enum to define the manipulator mode More...
enum | ActiveRotations { X_AXIS = 1, Y_AXIS = 1 << 1, Z_AXIS = 1 << 2, ALL_AXIS = X_AXIS | Y_AXIS | Z_AXIS }
| enum to define which rotation axis should be enabled More...
Public Types inherited from ACG::SceneGraph::ACG::SceneGraph::BaseNode
enum | StatusMode { Active = 0x1, HideNode = 0x2, HideChildren = 0x4, HideSubtree = 0x8 }
| Status modi. More...
enum | TraverseMode { NodeFirst = 0x1, ChildrenFirst = 0x2, SecondPass = 0x4 }
| Node traverse types. More...
typedef std::vector< BaseNode * >::const_iterator | ConstChildIter
| allows to iterate over children
typedef std::vector< BaseNode * >::iterator | ChildIter
| allows to iterate over children
typedef std::vector< BaseNode * >::const_reverse_iterator | ConstChildRIter
| allows to reverse iterate over children
typedef std::vector< BaseNode * >::reverse_iterator | ChildRIter
| allows to reverse iterate over children
enum | PASSES { NOPASS = 0, ALLPASSES = 1 << 0, PASS_1 = 1 << 1, PASS_2 = 1 << 2, PASS_3 = 1 << 3, PASS_4 = 1 << 4, PASS_5 = 1 << 5, PASS_6 = 1 << 6, PASS_7 = 1 << 7, PASS_8 = 1 << 8 }
| This enum should be used to enable rendering of a node in different.
typedef unsigned int | MultipassBitMask
| Multipass pass bit mask type.

## Public Member Functions
| TranslationManipulatorNode (BaseNode *_parent=0, const std::string &_name="<TranslationTranslationManipulatorNode>")
| Default constructor.
| ~TranslationManipulatorNode ()
| Destructor.
| ACG_CLASSNAME (TranslationManipulatorNode)
| class name
virtual void | setIdentity () override
void | set_draw_cylinder (bool _b)
| set draw_cylinder_
bool | draw_manipulator () const
| get drawCylinder
void | set_direction (const Vec3d &_directionX, const Vec3d &_directionY)
| Set direction in world coordinates.
Vec3d | directionX () const
| Get current direction of x-Axis in world coordinates.
Vec3d | directionY () const
| Get current direction of y-Axis in world coordinates.
Vec3d | directionZ () const
| Get current direction of z-Axis in world coordinates.
void | set_size (double _size)
| set cylindersize (height + radius). _size parameter has to be greater than zero
double | size () const
| get cylindersize
void | set_autosize (AutoSizeMode _mode)
| set auto size mode
AutoSizeMode | autosize () const
| get autosize mode
void | enable_rotations (ActiveRotations _active)
| Enable or disable manipulator handles for specific orientations. More...
ActiveRotations | enabled_rotations () const
| Get the current setting, which rotation handles are active. More...
void | rotate (double _angle, Vec3d _axis)
void | draw (GLState &_state, const DrawModes::DrawMode &_drawMode) override
| draw the cylinder (if enabled)
void | getRenderObjects (IRenderer *_renderer, GLState &_state, const DrawModes::DrawMode &_drawMode, const Material *_mat) override
| create renderobjects for shaderpipeline renderer
GLMatrixd | computeWorldMatrix ()
| computes world matrix, transforms from model to world space
void | pick (GLState &_state, PickTarget _target) override
| leave node More...
virtual void | mouseEvent (GLState &_state, QMouseEvent *_event) override
| get mouse events
void | boundingBox (Vec3d &_bbMin, Vec3d &_bbMax) override
| bounding box of node
void | setMode (ManipulatorMode _mode)
| set current operation mode
ManipulatorMode | getMode () const
| get current mode
Public Member Functions inherited from ACG::SceneGraph::TransformNode
| TransformNode (BaseNode *_parent=0, const std::string &_name="<TransformNode>")
| Constructor.
virtual | ~TransformNode ()
| Destructor.
| ACG_CLASSNAME (TransformNode)
| set name
void | enter (GLState &_state, const DrawModes::DrawMode &_drawmode) override
| set current GL-color and GL-material
void | leave (GLState &_state, const DrawModes::DrawMode &_drawmode) override
| restores original GL-color and GL-material
void | set_center (const Vec3d &_c)
| set center
const Vec3d & | center () const
| get center
void | loadIdentity ()
void | translate (const Vec3d &_v)
| Add a translation to the current Transformation.
void | setTranslation (const Vec3d &_v)
| translation setter
void | rotate (double _angle, const Vec3d &_axis)
void | setRotation (const Quaterniond &rotation)
| rotation setter
void | scale (double _s)
| Add scaling to the current Transformation.
void | scale (const Vec3d &_s)
| Add scaling to the current Transformation.
void | scale (const GLMatrixd &_m)
| Add scaling to the current Transformation.
const GLMatrixd & | matrix () const
| Returns a const reference to the current transformation matrix.
const GLMatrixd & | inverse_matrix () const
| return inverse matrix
void | rotation (Vec3d &_axis, double &_angle) const
| return rotation axis & angle
const GLMatrixd & | rotation () const
| return rotation matrix
const GLMatrixd & | inverse_rotation () const
| return inverse rotation matrix
const Vec3d & | translation () const
| returns ref. to translation vector
const GLMatrixd & | scale () const
| return scale matrix
const GLMatrixd & | inverse_scale () const
| return inverse scale matrix
bool | apply_transformation ()
void | apply_transformation (bool _applyTransformation)
bool | is2D ()
void | set2D (bool _2d)
bool | isPerSkeletonObject ()
void | setPerSkeletonObject (bool _is)
void | setPerSkeletonModelView (GLMatrixd _is)
void | ortho2DMode (GLState &_state)
void | perSkeletonMode (GLState &_state)
void | update2DOffset (ACG::Vec2d _offset)
void | scale2D (double _scale)
void | setImageDimensions (ACG::Vec2i _dim)
Public Member Functions inherited from ACG::SceneGraph::ACG::SceneGraph::BaseNode
| BaseNode (BaseNode *_parent=0, std::string _name="<unknown>")
| Default constructor.
| BaseNode (BaseNode *_parent, BaseNode *_child, std::string _name="<unknown>")
| Put this node between _parent and _child.
virtual | ~BaseNode ()
| Destructor.
void | delete_subtree ()
| Delete the whole subtree of this node. More...
virtual const std::string & | className () const =0
| Return class name (implemented by the ACG_CLASSNAME macro)
virtual DrawModes::DrawMode | availableDrawModes () const
virtual void | enter (GLState &, const DrawModes::DrawMode &)
virtual void | enter (IRenderer *, GLState &_state, const DrawModes::DrawMode &_drawMode)
virtual void | draw (GLState &, const DrawModes::DrawMode &)
| Draw this node using the draw modes _drawMode. More...
virtual void | getRenderObjects (IRenderer *_renderer, GLState &_state, const DrawModes::DrawMode &_drawMode, const Material *_mat)
| Deferred draw call with shader based renderer. More...
virtual void | leave (GLState &, const DrawModes::DrawMode &)
virtual void | leave (IRenderer *, GLState &_state, const DrawModes::DrawMode &_drawMode)
virtual void | enterPick (GLState &_state, PickTarget _target, const DrawModes::DrawMode &_drawMode)
virtual void | pick (GLState &, PickTarget)
virtual void | leavePick (GLState &_state, PickTarget _target, const DrawModes::DrawMode &_drawMode)
void | enablePicking (bool _enable)
bool | pickingEnabled ()
virtual void | mouseEvent (GLState &, QMouseEvent *)
| Handle mouse event (some interaction, e.g. modeling)
void | setDirty (bool _dirty=true)
| mark node for redrawn
bool | isDirty () const
| Check if node should be redrawn.
ChildIter | childrenBegin ()
| Returns: begin-iterator of children.
ConstChildIter | childrenBegin () const
| Same but `cont`.
ChildIter | childrenEnd ()
| Returns: end-iterator of children.
ConstChildIter | childrenEnd () const
| Same but `const`.
ChildRIter | childrenRBegin ()
| Returns: reverse begin-iterator of children.
ConstChildRIter | childrenRBegin () const
| Same but const.
ChildRIter | childrenREnd ()
| Returns: reverse end-iterator of children.
ConstChildRIter | childrenREnd () const
| Same but `const`.
void | push_back (BaseNode *_node)
| Insert _node at the end of the list of children.
void | remove (ChildIter _pos)
size_t | nChildren () const
| number of children
ChildIter | find (BaseNode *_node)
BaseNode * | find (const std::string &_name)
BaseNode * | parent ()
| Get the nodes parent node.
const BaseNode * | parent () const
| Get the nodes parent node.
void | set_parent (BaseNode *_parent)
| Set the parent of this node. More...
StatusMode | status () const
| Get node's status.
void | set_status (StatusMode _s)
| Set the status of this node.
void | hide ()
| Hide Node: set status to HideNode.
void | show ()
| Show node: set status to Active.
bool | visible ()
| Is node visible (status == Active)?
bool | hidden ()
| Is node not visible (status != Active)?
std::string | name () const
| Returns: name of node (needs not be unique)
void | name (const std::string &_name)
| rename a node
unsigned int | id () const
DrawModes::DrawMode | drawMode () const
| Return the own draw modes of this node.
void | drawMode (DrawModes::DrawMode _drawMode)
unsigned int | traverseMode () const
| Return how the node should be traversed.
void | setTraverseMode (unsigned int _mode)
| Set traverse mode for node.
MultipassBitMask | multipassStatus () const
| Get the current multipass settings for the nodes status functions. More...
void | setMultipassStatus (const MultipassBitMask _passStatus)
| Set multipass settings for the nodes status functions. More...
void | multipassStatusSetActive (const unsigned int _i, bool _active)
| Set multipass status to traverse in a specific pass. More...
bool | multipassStatusActive (const unsigned int _i) const
| Get multipass status to traverse in a specific pass. More...
MultipassBitMask | multipassNode () const
| Get the current multipass settings for the node. More...
void | setMultipassNode (const MultipassBitMask _passNode)
| Set multipass settings for the node. More...
void | multipassNodeSetActive (const unsigned int _i, bool _active)
| Set Node status to traverse in a specific pass. More...
bool | multipassNodeActive (const unsigned int _i) const
| Get Node status to traverse in a specific pass. More...
void | setRenderObjectShaders (const std::string &_vertexShaderFile, const std::string &_geometryShaderFile, const std::string &_fragmentShaderFile, bool _relativePaths=true, DrawModes::DrawModePrimitive _primitiveType=DrawModes::PRIMITIVE_POLYGON)
| Set custom shaders. More...
void | setRenderObjectShaders (const std::string &_vertexShaderFile, const std::string &_tessControlShaderFile, const std::string &_tessEvalShaderFile, const std::string &_geometryShaderFile, const std::string &_fragmentShaderFile, bool _relativePaths=true, DrawModes::DrawModePrimitive _primitiveType=DrawModes::PRIMITIVE_POLYGON)
| Set custom shaders. More...
void | setRenderObjectUniformPool (const GLSL::UniformPool *_pool)
| Set uniforms for shader based rendering. More...
const GLSL::UniformPool * | getRenderObjectUniformPool ()
| Get uniforms for shader based rendering. More...
void | setRenderObjectTexture (int _samplerSlot, GLuint _texId, GLenum _texType=GL_TEXTURE_2D)
| Set textures for shader based rendering. More...
void | setRenderObjectModifier (RenderObjectModifier *_modifier)
| Set modifier for render objects. More...
RenderObjectModifier * | getRenderObjectModifier ()
| Get render-object modifier. More...
void | applyRenderObjectSettings (DrawModes::DrawModePrimitive _primitive, RenderObject *_obj) const
| Set shaders, textures and uniforms as provided by user to a render-object. More...

## Protected Attributes
bool | touched_
| stores if this manipulator was used in order to avoid emitting manipulatorMoved unnecessarily

## Private Types
enum | StateUpdates { None, Over, Click }
enum | Elements { Origin = 0, XTop, YTop, ZTop, XAxis, YAxis, ZAxis, XRing, YRing, ZRing, NumElements }

## Private Member Functions
void | update_manipulator_system (GLState &_state)
| set the current state to follow manipulator transformation
void | update_rotation (GLState &_state)
| update the internal rotation matrix ( internal rotation may be changed without modifiing children of this node )
bool | hitSphere (GLState &_state, const Vec2i &_v2)
| Determine whether the origin sphere has been hit.
bool | hitOuterSphere (GLState &_state, const Vec2i &_v2)
| Determine whether the outer sphere has been hit by the cursor.
void | drawManipulator (GLState &_state, bool _active)
void | addManipulatorToRenderer (IRenderer *_renderer, RenderObject *_baseRO, bool _active)
void | addAxisToRenderer (IRenderer *_renderer, RenderObject *_baseRO, bool _active, int _axis)
bool | mapToCylinder (GLState &_state, const Vec2i &_v2, StateUpdates _updateStates=None)
bool | mapToCylinderTop (GLState &_state, const Vec2i &_v2, StateUpdates _updateStates=None)
bool | mapToSphere (GLState &_state, const Vec2i &_v2, Vec3d &_v3, StateUpdates _updateStates=None)
void | updateTargetColors ()
bool | updateCurrentColors (GLState &_state)
double | get_screen_length (GLState &_state, Vec3d &_point) const
void | updateSize (GLState &_state)

## Private Attributes
bool | draw_manipulator_
Vec3d | dirX_
Vec3d | dirY_
Vec3d | dirZ_
ACG::GLCone * | axisBottom_
ACG::GLCone * | axisCenter_
ACG::GLCone * | axisTop_
ACG::GLDisk * | circle_
ACG::GLSphere * | sphere_
double | manipulator_radius_
double | manipulator_height_
double | set_manipulator_radius_
double | set_manipulator_height_
int | manipulator_slices_
int | manipulator_stacks_
bool | any_axis_clicked_
bool | any_top_clicked_
bool | outer_ring_clicked_
bool | any_axis_over_
bool | any_top_over_
bool | outer_ring_over_
Element | element_ [NumElements]
float | resize_current_
ManipulatorMode | mode_
bool | ignoreTime_
Vec2i | oldPoint2D_
Vec3d | draggingOrigin3D_
bool | dragging_
Vec3d | currentScale_
GLMatrixd | localTransformation_
AutoSizeMode | auto_size_
double | auto_size_length_
ActiveRotations | activeRotations_

## Additional Inherited Members
Public Attributes inherited from ACG::SceneGraph::TransformNode
bool | is2DObject_
bool | isPerSkeletonObject_
GLMatrixd | perSkeletonModelView_
double | scaleFactor2D_
ACG::Vec2i | imageDimensions_
ACG::Vec2d | offset_

## Detailed Description

Use a manipulator to translate and scale the children of this node.

Definition at line 89 of file TranslationManipulatorNode.hh.

## Member Enumeration Documentation

## ◆ ActiveRotations

enum ACG::SceneGraph::TranslationManipulatorNode::ActiveRotations

enum to define which rotation axis should be enabled

This enum defines which rotation axis rings will be visible and available for picking. The modes can be combined.

Definition at line 120 of file TranslationManipulatorNode.hh.

## ◆ ManipulatorMode

enum ACG::SceneGraph::TranslationManipulatorNode::ManipulatorMode

enum to define the manipulator mode

This enum defines several modes of the manipulator.

- TranslationRotation: Full featured mode, rotations and translations will be possible
- LocalRotation: The manipulator can be rotated, but no transformation is applied to the child node (use to re-align manipulator)
- Resize: No rings, no rotation. The manipulator scales along each axis seperatly. Center sphere scales uniformly in all directions
- Place: –

Definition at line 107 of file TranslationManipulatorNode.hh.

## Member Function Documentation

## ◆ enable_rotations()

void ACG::SceneGraph::TranslationManipulatorNode::enable_rotations | ( | ActiveRotations | _active | ) |
| inline

Enable or disable manipulator handles for specific orientations.

This enum defines which rotation axis rings will be visible and available for picking. The modes can be combined.

Parameters

  _active | The activated axis

Definition at line 187 of file TranslationManipulatorNode.hh.

## ◆ enabled_rotations()

ActiveRotations ACG::SceneGraph::TranslationManipulatorNode::enabled_rotations | ( |  | ) | const
| inline

Get the current setting, which rotation handles are active.

Returns
  _active The activated axis

Definition at line 196 of file TranslationManipulatorNode.hh.

## ◆ mapToCylinder()

bool ACG::SceneGraph::TranslationManipulatorNode::mapToCylinder | ( | GLState & | _state,
|  | const Vec2i & | _v1,
|  | StateUpdates | _updateStates = `None`
| ) |  |
| private

If ray from mouse pointer intersects with one of the three axes?

Definition at line 1661 of file TranslationManipulatorNode.cc.

## ◆ mapToCylinderTop()

bool ACG::SceneGraph::TranslationManipulatorNode::mapToCylinderTop | ( | GLState & | _state,
|  | const Vec2i & | _v1,
|  | StateUpdates | _updateStates = `None`
| ) |  |
| private

If ray from mouse pointer intersects with one of the three tops?

Definition at line 1772 of file TranslationManipulatorNode.cc.

## ◆ mapToSphere()

bool ACG::SceneGraph::TranslationManipulatorNode::mapToSphere | ( | GLState & | _state,
|  | const Vec2i & | _v2,
|  | Vec3d & | _v3,
|  | StateUpdates | _updateStates = `None`
| ) |  |
| private

Determine whether one of the outer rings has been hit. Return true if intersection with either of the rings occurs. _v3 contains the point in world coordinates

Definition at line 1888 of file TranslationManipulatorNode.cc.

## ◆ pick()

void ACG::SceneGraph::TranslationManipulatorNode::pick | ( | GLState & | _state,
|  | PickTarget | _target
| ) |  |
| override

leave node

picking

Definition at line 1998 of file TranslationManipulatorNode.cc.

## ◆ setIdentity()

void ACG::SceneGraph::TranslationManipulatorNode::setIdentity | ( |  | ) |
| override virtual

set the current transformation to the identity transformation, i.e. change the center() to the transfomed center and loadIdentity().

Reimplemented from ACG::SceneGraph::TransformNode.

Definition at line 213 of file TranslationManipulatorNode.cc.

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

- OpenFlipper/libs_required/ACG/Scenegraph/TranslationManipulatorNode.hh
- OpenFlipper/libs_required/ACG/Scenegraph/TranslationManipulatorNode.cc