Developer Documentation
ACG::SceneGraph::TranslationManipulatorNode Class Reference

#include <ACG/Scenegraph/TranslationManipulatorNode.hh>

Inheritance diagram for ACG::SceneGraph::TranslationManipulatorNode:
ACG::SceneGraph::TransformNode ACG::SceneGraph::ACG::SceneGraph::BaseNode ACG::SceneGraph::QtTranslationManipulatorNode

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 ()
 
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)
 draw the cylinder (if enabled)
 
void getRenderObjects (IRenderer *_renderer, GLState &_state, const DrawModes::DrawMode &_drawMode, const Material *_mat)
 create renderobjects for shaderpipeline renderer
 
GLMatrixd computeWorldMatrix ()
 computes world matrix, transforms from model to world space
 
void pick (GLState &_state, PickTarget _target)
 leave node More...
 
virtual void mouseEvent (GLState &_state, QMouseEvent *_event)
 get mouse events
 
void boundingBox (Vec3d &_bbMin, Vec3d &_bbMax)
 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)
 set current GL-color and GL-material
 
void leave (GLState &_state, const DrawModes::DrawMode &_drawmode)
 restores original GL-color and GL-material
 
void set_center (const Vec3d &_c)
 set center
 
const Vec3dcenter () 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 GLMatrixdmatrix () const
 Returns a const reference to the current transformation matrix.
 
const GLMatrixdinverse_matrix () const
 return inverse matrix
 
void rotation (Vec3d &_axis, double &_angle) const
 return rotation axis & angle
 
const GLMatrixdrotation () const
 return rotation matrix
 
const GLMatrixdinverse_rotation () const
 return inverse rotation matrix
 
const Vec3dtranslation () const
 returns ref. to translation vector
 
const GLMatrixdscale () const
 return scale matrix
 
const GLMatrixdinverse_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)
 
BaseNodefind (const std::string &_name)
 
BaseNodeparent ()
 Get the nodes parent node.
 
const BaseNodeparent () 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::UniformPoolgetRenderObjectUniformPool ()
 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...
 
RenderObjectModifiergetRenderObjectModifier ()
 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::GLConeaxisBottom_
 
ACG::GLConeaxisCenter_
 
ACG::GLConeaxisTop_
 
ACG::GLDiskcircle_
 
ACG::GLSpheresphere_
 
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 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 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
_activeThe 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 
)

leave node

picking

Definition at line 1998 of file TranslationManipulatorNode.cc.

◆ setIdentity()

void ACG::SceneGraph::TranslationManipulatorNode::setIdentity ( )
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: