Developer Documentation
|
#include <ACG/Scenegraph/TranslationManipulatorNode.hh>
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_ |
Use a manipulator to translate and scale the children of this node.
Definition at line 89 of file TranslationManipulatorNode.hh.
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.
enum to define the manipulator mode
This enum defines several modes of the manipulator.
Definition at line 107 of file TranslationManipulatorNode.hh.
|
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.
_active | The activated axis |
Definition at line 187 of file TranslationManipulatorNode.hh.
|
inline |
Get the current setting, which rotation handles are active.
Definition at line 196 of file TranslationManipulatorNode.hh.
|
private |
If ray from mouse pointer intersects with one of the three axes?
Definition at line 1661 of file TranslationManipulatorNode.cc.
|
private |
If ray from mouse pointer intersects with one of the three tops?
Definition at line 1772 of file TranslationManipulatorNode.cc.
|
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.
|
override |
|
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 213 of file TranslationManipulatorNode.cc.