Developer Documentation
ACG::SceneGraph::TransformNode Class Reference

#include <ACG/Scenegraph/TransformNode.hh>

Inheritance diagram for ACG::SceneGraph::TransformNode:
ACG::SceneGraph::BaseNode ACG::SceneGraph::ManipulatorNode ACG::SceneGraph::TrackballNode ACG::SceneGraph::TranslationManipulatorNode ACG::SceneGraph::QtManipulatorNode ACG::SceneGraph::QtTranslationManipulatorNode

Public Member Functions

 TransformNode (BaseNode *_parent=0, const std::string &_name="<TransformNode>")
 Constructor. More...
 
virtual ~TransformNode ()
 Destructor. More...
 
 ACG_CLASSNAME (TransformNode)
 set name
 
void enter (GLState &_state, const DrawModes::DrawMode &_drawmode) override
 set current GL-color and GL-material More...
 
void leave (GLState &_state, const DrawModes::DrawMode &_drawmode) override
 restores original GL-color and GL-material More...
 
void set_center (const Vec3d &_c)
 set center More...
 
const Vec3dcenter () const
 get center More...
 
void loadIdentity ()
 
virtual void setIdentity ()
 
void translate (const Vec3d &_v)
 Add a translation to the current Transformation. More...
 
void setTranslation (const Vec3d &_v)
 translation setter More...
 
void rotate (double _angle, const Vec3d &_axis)
 
void setRotation (const Quaterniond &rotation)
 rotation setter More...
 
void scale (double _s)
 Add scaling to the current Transformation. More...
 
void scale (const Vec3d &_s)
 Add scaling to the current Transformation. More...
 
void scale (const GLMatrixd &_m)
 Add scaling to the current Transformation. More...
 
const GLMatrixdmatrix () const
 Returns a const reference to the current transformation matrix. More...
 
const GLMatrixdinverse_matrix () const
 return inverse matrix More...
 
void rotation (Vec3d &_axis, double &_angle) const
 return rotation axis & angle More...
 
const GLMatrixdrotation () const
 return rotation matrix More...
 
const GLMatrixdinverse_rotation () const
 return inverse rotation matrix More...
 
const Vec3dtranslation () const
 returns ref. to translation vector More...
 
const GLMatrixdscale () const
 return scale matrix More...
 
const GLMatrixdinverse_scale () const
 return inverse scale matrix More...
 
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. More...
 
 BaseNode (BaseNode *_parent, BaseNode *_child, std::string _name="<unknown>")
 Put this node between _parent and _child. More...
 
virtual ~BaseNode ()
 Destructor. More...
 
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 boundingBox (Vec3d &, Vec3d &)
 
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) More...
 
void setDirty (bool _dirty=true)
 mark node for redrawn More...
 
bool isDirty () const
 Check if node should be redrawn. More...
 
ChildIter childrenBegin ()
 Returns: begin-iterator of children. More...
 
ConstChildIter childrenBegin () const
 Same but cont. More...
 
ChildIter childrenEnd ()
 Returns: end-iterator of children. More...
 
ConstChildIter childrenEnd () const
 Same but const. More...
 
ChildRIter childrenRBegin ()
 Returns: reverse begin-iterator of children. More...
 
ConstChildRIter childrenRBegin () const
 Same but const. More...
 
ChildRIter childrenREnd ()
 Returns: reverse end-iterator of children. More...
 
ConstChildRIter childrenREnd () const
 Same but const. More...
 
void push_back (BaseNode *_node)
 Insert _node at the end of the list of children. More...
 
void remove (ChildIter _pos)
 
size_t nChildren () const
 number of children More...
 
ChildIter find (BaseNode *_node)
 
BaseNodefind (const std::string &_name)
 
BaseNodeparent ()
 Get the nodes parent node. More...
 
const BaseNodeparent () const
 Get the nodes parent node. More...
 
void set_parent (BaseNode *_parent)
 Set the parent of this node. More...
 
StatusMode status () const
 Get node's status. More...
 
void set_status (StatusMode _s)
 Set the status of this node. More...
 
void hide ()
 Hide Node: set status to HideNode. More...
 
void show ()
 Show node: set status to Active. More...
 
bool visible ()
 Is node visible (status == Active)? More...
 
bool hidden ()
 Is node not visible (status != Active)? More...
 
std::string name () const
 Returns: name of node (needs not be unique) More...
 
void name (const std::string &_name)
 rename a node More...
 
unsigned int id () const
 
DrawModes::DrawMode drawMode () const
 Return the own draw modes of this node. More...
 
void drawMode (DrawModes::DrawMode _drawMode)
 
unsigned int traverseMode () const
 Return how the node should be traversed. More...
 
void setTraverseMode (unsigned int _mode)
 Set traverse mode for node. More...
 
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...
 

Public Attributes

bool is2DObject_
 
bool isPerSkeletonObject_
 
GLMatrixd perSkeletonModelView_
 
double scaleFactor2D_
 
ACG::Vec2i imageDimensions_
 
ACG::Vec2d offset_
 

Private Member Functions

void updateMatrix ()
 update matrix More...
 

Private Attributes

GLMatrixd matrix_
 
GLMatrixd inverse_matrix_
 
GLMatrixd rotation_matrix_
 
GLMatrixd inverse_rotation_matrix_
 
GLMatrixd scale_matrix_
 
GLMatrixd inverse_scale_matrix_
 
Vec3d center_
 
Vec3d translation_
 
Quaterniond quaternion_
 
bool applyTransformation_
 

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 More...
 
typedef std::vector< BaseNode * >::iterator ChildIter
 allows to iterate over children More...
 
typedef std::vector< BaseNode * >::const_reverse_iterator ConstChildRIter
 allows to reverse iterate over children More...
 
typedef std::vector< BaseNode * >::reverse_iterator ChildRIter
 allows to reverse iterate over children More...
 
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. More...
 

Detailed Description

TransformNode - general 3D geometric transformation node. Provides functionality to translate, scale or rotate around a specified center. This is the base class for e.g. the TrackballNode and the ManipulatorNode, that only add a GUI for generating the transformations.

Note that in order for the transformations to apply in each traversal of the scenegraph, one has to call apply_transformation(true) once.

Definition at line 89 of file TransformNode.hh.

Constructor & Destructor Documentation

◆ TransformNode()

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

Constructor.

Definition at line 69 of file TransformNode.cc.

◆ ~TransformNode()

virtual ACG::SceneGraph::TransformNode::~TransformNode ( )
inlinevirtual

Destructor.

Definition at line 99 of file TransformNode.hh.

Member Function Documentation

◆ apply_transformation() [1/2]

bool ACG::SceneGraph::TransformNode::apply_transformation ( )
inline

Definition at line 189 of file TransformNode.hh.

◆ apply_transformation() [2/2]

void ACG::SceneGraph::TransformNode::apply_transformation ( bool  _applyTransformation)
inline

Definition at line 191 of file TransformNode.hh.

◆ center()

const Vec3d & ACG::SceneGraph::TransformNode::center ( ) const
inline

get center

Definition at line 115 of file TransformNode.hh.

◆ enter()

void ACG::SceneGraph::TransformNode::enter ( GLState _state,
const DrawModes::DrawMode _drawmode 
)
overridevirtual

set current GL-color and GL-material

Reimplemented from ACG::SceneGraph::BaseNode.

Definition at line 227 of file TransformNode.cc.

◆ inverse_matrix()

const GLMatrixd & ACG::SceneGraph::TransformNode::inverse_matrix ( ) const
inline

return inverse matrix

Definition at line 160 of file TransformNode.hh.

◆ inverse_rotation()

const GLMatrixd & ACG::SceneGraph::TransformNode::inverse_rotation ( ) const
inline

return inverse rotation matrix

Definition at line 172 of file TransformNode.hh.

◆ inverse_scale()

const GLMatrixd & ACG::SceneGraph::TransformNode::inverse_scale ( ) const
inline

return inverse scale matrix

Definition at line 185 of file TransformNode.hh.

◆ is2D()

bool ACG::SceneGraph::TransformNode::is2D ( )
inline

Definition at line 195 of file TransformNode.hh.

◆ isPerSkeletonObject()

bool ACG::SceneGraph::TransformNode::isPerSkeletonObject ( )
inline

Definition at line 198 of file TransformNode.hh.

◆ leave()

void ACG::SceneGraph::TransformNode::leave ( GLState _state,
const DrawModes::DrawMode _drawmode 
)
overridevirtual

restores original GL-color and GL-material

Reimplemented from ACG::SceneGraph::BaseNode.

Definition at line 289 of file TransformNode.cc.

◆ loadIdentity()

void ACG::SceneGraph::TransformNode::loadIdentity ( )

Reset transformation to identity, i.e. reset rotation, translating and scaling factor.

Definition at line 89 of file TransformNode.cc.

◆ matrix()

const GLMatrixd & ACG::SceneGraph::TransformNode::matrix ( ) const
inline

Returns a const reference to the current transformation matrix.

Definition at line 158 of file TransformNode.hh.

◆ ortho2DMode()

void ACG::SceneGraph::TransformNode::ortho2DMode ( GLState _state)

Definition at line 374 of file TransformNode.cc.

◆ perSkeletonMode()

void ACG::SceneGraph::TransformNode::perSkeletonMode ( GLState _state)

Definition at line 365 of file TransformNode.cc.

◆ rotate()

void ACG::SceneGraph::TransformNode::rotate ( double  _angle,
const Vec3d _axis 
)

Add a rotation to the current Transformation. Assume angle in degree and axis normalized

Definition at line 146 of file TransformNode.cc.

◆ rotation() [1/2]

const GLMatrixd & ACG::SceneGraph::TransformNode::rotation ( ) const
inline

return rotation matrix

Definition at line 168 of file TransformNode.hh.

◆ rotation() [2/2]

void ACG::SceneGraph::TransformNode::rotation ( Vec3d _axis,
double &  _angle 
) const
inline

return rotation axis & angle

Definition at line 163 of file TransformNode.hh.

◆ scale() [1/4]

const GLMatrixd & ACG::SceneGraph::TransformNode::scale ( ) const
inline

return scale matrix

Definition at line 181 of file TransformNode.hh.

◆ scale() [2/4]

void ACG::SceneGraph::TransformNode::scale ( const GLMatrixd _m)

Add scaling to the current Transformation.

Definition at line 191 of file TransformNode.cc.

◆ scale() [3/4]

void ACG::SceneGraph::TransformNode::scale ( const Vec3d _s)

Add scaling to the current Transformation.

Definition at line 178 of file TransformNode.cc.

◆ scale() [4/4]

void ACG::SceneGraph::TransformNode::scale ( double  _s)
inline

Add scaling to the current Transformation.

Definition at line 145 of file TransformNode.hh.

◆ scale2D()

void ACG::SceneGraph::TransformNode::scale2D ( double  _scale)
inline

Definition at line 205 of file TransformNode.hh.

◆ set2D()

void ACG::SceneGraph::TransformNode::set2D ( bool  _2d)
inline

Definition at line 196 of file TransformNode.hh.

◆ set_center()

void ACG::SceneGraph::TransformNode::set_center ( const Vec3d _c)
inline

set center

Definition at line 113 of file TransformNode.hh.

◆ setIdentity()

void ACG::SceneGraph::TransformNode::setIdentity ( )
virtual

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

Reimplemented in ACG::SceneGraph::ManipulatorNode, ACG::SceneGraph::TrackballNode, and ACG::SceneGraph::TranslationManipulatorNode.

Definition at line 110 of file TransformNode.cc.

◆ setImageDimensions()

void ACG::SceneGraph::TransformNode::setImageDimensions ( ACG::Vec2i  _dim)
inline

Definition at line 206 of file TransformNode.hh.

◆ setPerSkeletonModelView()

void ACG::SceneGraph::TransformNode::setPerSkeletonModelView ( GLMatrixd  _is)
inline

Definition at line 200 of file TransformNode.hh.

◆ setPerSkeletonObject()

void ACG::SceneGraph::TransformNode::setPerSkeletonObject ( bool  _is)
inline

Definition at line 199 of file TransformNode.hh.

◆ setRotation()

void ACG::SceneGraph::TransformNode::setRotation ( const Quaterniond rotation)

rotation setter

Definition at line 162 of file TransformNode.cc.

◆ setTranslation()

void ACG::SceneGraph::TransformNode::setTranslation ( const Vec3d _v)

translation setter

Definition at line 134 of file TransformNode.cc.

◆ translate()

void ACG::SceneGraph::TransformNode::translate ( const Vec3d _v)

Add a translation to the current Transformation.

Definition at line 123 of file TransformNode.cc.

◆ translation()

const Vec3d & ACG::SceneGraph::TransformNode::translation ( ) const
inline

returns ref. to translation vector

Definition at line 178 of file TransformNode.hh.

◆ update2DOffset()

void ACG::SceneGraph::TransformNode::update2DOffset ( ACG::Vec2d  _offset)
inline

Definition at line 204 of file TransformNode.hh.

◆ updateMatrix()

void ACG::SceneGraph::TransformNode::updateMatrix ( )
private

update matrix

Definition at line 205 of file TransformNode.cc.

Member Data Documentation

◆ applyTransformation_

bool ACG::SceneGraph::TransformNode::applyTransformation_
private

Definition at line 222 of file TransformNode.hh.

◆ center_

Vec3d ACG::SceneGraph::TransformNode::center_
private

Definition at line 217 of file TransformNode.hh.

◆ imageDimensions_

ACG::Vec2i ACG::SceneGraph::TransformNode::imageDimensions_

Definition at line 230 of file TransformNode.hh.

◆ inverse_matrix_

GLMatrixd ACG::SceneGraph::TransformNode::inverse_matrix_
private

Definition at line 215 of file TransformNode.hh.

◆ inverse_rotation_matrix_

GLMatrixd ACG::SceneGraph::TransformNode::inverse_rotation_matrix_
private

Definition at line 216 of file TransformNode.hh.

◆ inverse_scale_matrix_

GLMatrixd ACG::SceneGraph::TransformNode::inverse_scale_matrix_
private

Definition at line 216 of file TransformNode.hh.

◆ is2DObject_

bool ACG::SceneGraph::TransformNode::is2DObject_

Definition at line 226 of file TransformNode.hh.

◆ isPerSkeletonObject_

bool ACG::SceneGraph::TransformNode::isPerSkeletonObject_

Definition at line 227 of file TransformNode.hh.

◆ matrix_

GLMatrixd ACG::SceneGraph::TransformNode::matrix_
private

Definition at line 215 of file TransformNode.hh.

◆ offset_

ACG::Vec2d ACG::SceneGraph::TransformNode::offset_

Definition at line 231 of file TransformNode.hh.

◆ perSkeletonModelView_

GLMatrixd ACG::SceneGraph::TransformNode::perSkeletonModelView_

Definition at line 228 of file TransformNode.hh.

◆ quaternion_

Quaterniond ACG::SceneGraph::TransformNode::quaternion_
private

Definition at line 219 of file TransformNode.hh.

◆ rotation_matrix_

GLMatrixd ACG::SceneGraph::TransformNode::rotation_matrix_
private

Definition at line 216 of file TransformNode.hh.

◆ scale_matrix_

GLMatrixd ACG::SceneGraph::TransformNode::scale_matrix_
private

Definition at line 216 of file TransformNode.hh.

◆ scaleFactor2D_

double ACG::SceneGraph::TransformNode::scaleFactor2D_

Definition at line 229 of file TransformNode.hh.

◆ translation_

Vec3d ACG::SceneGraph::TransformNode::translation_
private

Definition at line 218 of file TransformNode.hh.


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