Developer Documentation
Loading...
Searching...
No Matches
ACG::SceneGraph::ManipulatorNode Class Reference

#include <ACG/Scenegraph/ManipulatorNode.hh>

Inheritance diagram for ACG::SceneGraph::ManipulatorNode:
ACG::SceneGraph::TransformNode ACG::SceneGraph::BaseNode ACG::SceneGraph::QtManipulatorNode

Public Member Functions

 ManipulatorNode (BaseNode *_parent=0, const std::string &_name="<ManipulatorNode>")
 Default constructor.
 
 ~ManipulatorNode ()
 Destructor.
 
 ACG_CLASSNAME (ManipulatorNode)
 class name
 
virtual void setIdentity () override
 
void set_draw_cylinder (bool _b)
 set draw_cylinder_
 
bool draw_cylinder () const
 get drawCylinder
 
void set_direction (Vec3d &_v)
 
Vec3d direction () const
 
void set_size (double _size)
 set cylindersize (height + radius)
 
double size () const
 get cylindersize
 
void translate (double _s)
 translate in cylinder direction
 
void draw (GLState &_state, const DrawModes::DrawMode &_drawMode) override
 draw the cylinder (if enabled)
 
void pick (GLState &_state, PickTarget _target) override
 picking
 
virtual void mouseEvent (GLState &_state, QMouseEvent *_event) override
 get mouse events
 
bool touched ()
 
void reset_touched ()
 Reset the touched flag ( see touched for details )
 
- 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 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::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.
 
virtual const std::string & className () const =0
 Return class name (implemented by the ACG_CLASSNAME macro)
 
virtual DrawModes::DrawMode availableDrawModes () const
 
virtual void boundingBox (Vec3d &, Vec3d &)
 
virtual void enter (IRenderer *, GLState &_state, const DrawModes::DrawMode &_drawMode)
 
virtual void getRenderObjects (IRenderer *_renderer, GLState &_state, const DrawModes::DrawMode &_drawMode, const Material *_mat)
 Deferred draw call with shader based renderer.
 
virtual void leave (IRenderer *, GLState &_state, const DrawModes::DrawMode &_drawMode)
 
virtual void enterPick (GLState &_state, PickTarget _target, const DrawModes::DrawMode &_drawMode)
 
virtual void leavePick (GLState &_state, PickTarget _target, const DrawModes::DrawMode &_drawMode)
 
void enablePicking (bool _enable)
 
bool pickingEnabled ()
 
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.
 
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.
 
void setMultipassStatus (const MultipassBitMask _passStatus)
 Set multipass settings for the nodes status functions.
 
void multipassStatusSetActive (const unsigned int _i, bool _active)
 Set multipass status to traverse in a specific pass.
 
bool multipassStatusActive (const unsigned int _i) const
 Get multipass status to traverse in a specific pass.
 
MultipassBitMask multipassNode () const
 Get the current multipass settings for the node.
 
void setMultipassNode (const MultipassBitMask _passNode)
 Set multipass settings for the node.
 
void multipassNodeSetActive (const unsigned int _i, bool _active)
 Set Node status to traverse in a specific pass.
 
bool multipassNodeActive (const unsigned int _i) const
 Get Node status to traverse in a specific pass.
 
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.
 
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.
 
void setRenderObjectUniformPool (const GLSL::UniformPool *_pool)
 Set uniforms for shader based rendering.
 
const GLSL::UniformPoolgetRenderObjectUniformPool ()
 Get uniforms for shader based rendering.
 
void setRenderObjectTexture (int _samplerSlot, GLuint _texId, GLenum _texType=GL_TEXTURE_2D)
 Set textures for shader based rendering.
 
void setRenderObjectModifier (RenderObjectModifier *_modifier)
 Set modifier for render objects.
 
RenderObjectModifiergetRenderObjectModifier ()
 Get render-object modifier.
 
void applyRenderObjectSettings (DrawModes::DrawModePrimitive _primitive, RenderObject *_obj) const
 Set shaders, textures and uniforms as provided by user to a render-object.
 

Private Member Functions

void setup_sphere_system (GLState &_state)
 
void setup_cylinder_system (GLState &_state)
 
bool mapToSphere (GLState &_state, const Vec2i &_v2, Vec3d &_v3)
 
bool hitSphere (GLState &_state, const Vec2i &_v2)
 
bool mapToCylinder (GLState &_state, const Vec2i &_v2, double &axis_hit)
 

Private Attributes

bool draw_cylinder_
 
Vec3d direction_
 
GLCylindercylinder_
 
double cylinder_radius_
 
double cylinder_height_
 
int cylinder_slices_
 
int cylinder_stacks_
 
bool cylinder_clicked_
 
bool sphere_clicked_
 
Vec2i oldPoint2D_
 
bool touched_
 if the manipulator is cklicked with a mouse, this flag will be set to true
 

Additional Inherited Members

- Public Types inherited from 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. More...
 
typedef unsigned int MultipassBitMask
 Multipass pass bit mask type.
 
- 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 rotate, translate and scale the children of this node.

Definition at line 86 of file ManipulatorNode.hh.

Constructor & Destructor Documentation

◆ ManipulatorNode()

ACG::SceneGraph::ManipulatorNode::ManipulatorNode ( BaseNode _parent = 0,
const std::string &  _name = "<ManipulatorNode>" 
)

Default constructor.

Definition at line 78 of file ManipulatorNode.cc.

◆ ~ManipulatorNode()

ACG::SceneGraph::ManipulatorNode::~ManipulatorNode ( )

Destructor.

Definition at line 98 of file ManipulatorNode.cc.

Member Function Documentation

◆ direction()

Vec3d ACG::SceneGraph::ManipulatorNode::direction ( ) const

Get direction in world coordinates. Will take the current rotation into account.

Definition at line 601 of file ManipulatorNode.cc.

◆ draw()

void ACG::SceneGraph::ManipulatorNode::draw ( GLState _state,
const DrawModes::DrawMode _drawMode 
)
overridevirtual

draw the cylinder (if enabled)

Reimplemented from ACG::SceneGraph::BaseNode.

Definition at line 166 of file ManipulatorNode.cc.

◆ draw_cylinder()

bool ACG::SceneGraph::ManipulatorNode::draw_cylinder ( ) const
inline

get drawCylinder

Definition at line 115 of file ManipulatorNode.hh.

◆ hitSphere()

bool ACG::SceneGraph::ManipulatorNode::hitSphere ( GLState _state,
const Vec2i _v2 
)
private

Definition at line 413 of file ManipulatorNode.cc.

◆ mapToCylinder()

bool ACG::SceneGraph::ManipulatorNode::mapToCylinder ( GLState _state,
const Vec2i _v2,
double &  axis_hit 
)
private

Definition at line 512 of file ManipulatorNode.cc.

◆ mapToSphere()

bool ACG::SceneGraph::ManipulatorNode::mapToSphere ( GLState _state,
const Vec2i _v2,
Vec3d _v3 
)
private

Definition at line 452 of file ManipulatorNode.cc.

◆ mouseEvent()

void ACG::SceneGraph::ManipulatorNode::mouseEvent ( GLState _state,
QMouseEvent *  _event 
)
overridevirtual

get mouse events

Reimplemented from ACG::SceneGraph::BaseNode.

Reimplemented in ACG::SceneGraph::QtManipulatorNode.

Definition at line 281 of file ManipulatorNode.cc.

◆ pick()

void ACG::SceneGraph::ManipulatorNode::pick ( GLState _state,
PickTarget  _target 
)
overridevirtual

picking

Reimplemented from ACG::SceneGraph::BaseNode.

Definition at line 558 of file ManipulatorNode.cc.

◆ reset_touched()

void ACG::SceneGraph::ManipulatorNode::reset_touched ( )
inline

Reset the touched flag ( see touched for details )

Definition at line 153 of file ManipulatorNode.hh.

◆ set_direction()

void ACG::SceneGraph::ManipulatorNode::set_direction ( Vec3d _v)

Set direction in world coordinates. Will take the current rotation into account.

Definition at line 592 of file ManipulatorNode.cc.

◆ set_draw_cylinder()

void ACG::SceneGraph::ManipulatorNode::set_draw_cylinder ( bool  _b)
inline

set draw_cylinder_

Definition at line 112 of file ManipulatorNode.hh.

◆ set_size()

void ACG::SceneGraph::ManipulatorNode::set_size ( double  _size)
inline

set cylindersize (height + radius)

Definition at line 126 of file ManipulatorNode.hh.

◆ setIdentity()

void ACG::SceneGraph::ManipulatorNode::setIdentity ( )
overridevirtual

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 110 of file ManipulatorNode.cc.

◆ setup_cylinder_system()

void ACG::SceneGraph::ManipulatorNode::setup_cylinder_system ( GLState _state)
private

Definition at line 122 of file ManipulatorNode.cc.

◆ setup_sphere_system()

void ACG::SceneGraph::ManipulatorNode::setup_sphere_system ( GLState _state)
private

Definition at line 153 of file ManipulatorNode.cc.

◆ size()

double ACG::SceneGraph::ManipulatorNode::size ( ) const
inline

get cylindersize

Definition at line 130 of file ManipulatorNode.hh.

◆ touched()

bool ACG::SceneGraph::ManipulatorNode::touched ( )
inline

if the manipulator node has been clicked by the mouse, this function will return true. Use reset_touched to reset this flag

Definition at line 150 of file ManipulatorNode.hh.

◆ translate()

void ACG::SceneGraph::ManipulatorNode::translate ( double  _s)
inline

translate in cylinder direction

Definition at line 133 of file ManipulatorNode.hh.

Member Data Documentation

◆ cylinder_

GLCylinder* ACG::SceneGraph::ManipulatorNode::cylinder_
private

Definition at line 173 of file ManipulatorNode.hh.

◆ cylinder_clicked_

bool ACG::SceneGraph::ManipulatorNode::cylinder_clicked_
private

Definition at line 180 of file ManipulatorNode.hh.

◆ cylinder_height_

double ACG::SceneGraph::ManipulatorNode::cylinder_height_
private

Definition at line 175 of file ManipulatorNode.hh.

◆ cylinder_radius_

double ACG::SceneGraph::ManipulatorNode::cylinder_radius_
private

Definition at line 174 of file ManipulatorNode.hh.

◆ cylinder_slices_

int ACG::SceneGraph::ManipulatorNode::cylinder_slices_
private

Definition at line 176 of file ManipulatorNode.hh.

◆ cylinder_stacks_

int ACG::SceneGraph::ManipulatorNode::cylinder_stacks_
private

Definition at line 177 of file ManipulatorNode.hh.

◆ direction_

Vec3d ACG::SceneGraph::ManipulatorNode::direction_
private

Definition at line 172 of file ManipulatorNode.hh.

◆ draw_cylinder_

bool ACG::SceneGraph::ManipulatorNode::draw_cylinder_
private

Definition at line 170 of file ManipulatorNode.hh.

◆ oldPoint2D_

Vec2i ACG::SceneGraph::ManipulatorNode::oldPoint2D_
private

Definition at line 183 of file ManipulatorNode.hh.

◆ sphere_clicked_

bool ACG::SceneGraph::ManipulatorNode::sphere_clicked_
private

Definition at line 181 of file ManipulatorNode.hh.

◆ touched_

bool ACG::SceneGraph::ManipulatorNode::touched_
private

if the manipulator is cklicked with a mouse, this flag will be set to true

Definition at line 186 of file ManipulatorNode.hh.


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