65 #ifdef ENABLE_SKELETON_SUPPORT 69 #if defined(ENABLE_HEXAHEDRALMESH_SUPPORT) || defined(ENABLE_POLYHEDRALMESH_SUPPORT) || defined(ENABLE_TETRAHEDRALMESH_SUPPORT) 70 #include <OpenVolumeMesh/Attribs/NormalAttrib.hh> 73 #include "MoveToolbar.hh" 74 #include "MoveProps.hh" 75 #include "MoveObjectMarker.hh" 77 #include <ACG/QtScenegraph/QtTranslationManipulatorNode.hh> 81 class MovePlugin :
public QObject,
BaseInterface,
MouseInterface,
KeyInterface,
PickingInterface,
ToolboxInterface,
BackupInterface,
LoggingInterface,
ScriptInterface,
ToolbarInterface,
PythonInterface,
ContextMenuInterface,
LoadSaveInterface,
RPCInterface 98 Q_PLUGIN_METADATA(IID
"org.OpenFlipper.Plugins.Plugin-Move")
101 typedef unsigned int SelectionType;
102 static const SelectionType VERTEX = 1;
103 static const SelectionType EDGE = 2;
104 static const SelectionType FACE = 4;
105 static const SelectionType CELL = 8;
110 void updatedObject(
int,
const UpdateType& _type);
111 void nodeVisibilityChanged(
int);
114 void addPickMode(
const std::string& _mode );
115 void addHiddenPickMode(
const std::string& _mode );
116 void setPickModeMouseTracking (
const std::string& _mode,
bool _mouseTracking);
117 void setPickModeToolbar (
const std::string& _mode, QToolBar * _toolbar);
126 void log(
Logtype _type, QString _message);
127 void log(QString _message);
130 void scriptInfo( QString _functionName );
131 void setSlotDescription(QString _slotName, QString _slotDescription,
132 QStringList _parameters, QStringList _descriptions);
135 void addToolbar(QToolBar* _toolbar);
136 void getToolBar( QString _name, QToolBar*& _toolbar);
139 void registerKey(
int _key, Qt::KeyboardModifiers _modifiers, QString _description,
bool _multiUse =
false);
142 void addToolbox( QString _name , QWidget* _widget, QIcon* _icon );
145 void pluginExists(QString _pluginName,
bool &_exists);
146 void functionExists(QString _pluginName, QString _functionName,
bool &_exists);
151 void initializePlugin();
154 void slotAllCleared();
157 void objectDeleted(
int _id );
160 void slotMouseWheelEvent(QWheelEvent * _event,
const std::string & _mode);
164 void slotKeyEvent (QKeyEvent* _event);
165 void slotKeyReleaseEvent (QKeyEvent* _event);
171 void slotBackupRequested(
int , QString ,
int ){};
172 void slotRestoreRequested(
int , QString ,
int ){};
183 QString
name(){
return (QString(
"Move")); };
186 QString
description() {
return (QString(tr(
"Moves Meshes with Manipulators"))); };
244 template <
typename MeshType>
248 template <
typename MeshType>
252 template <
typename MeshType>
338 template<
typename MeshT >
341 #ifdef ENABLE_POLYLINE_SUPPORT 342 template<
class PolyLineT >
347 #ifdef ENABLE_SKELETON_SUPPORT 352 #if defined(ENABLE_HEXAHEDRALMESH_SUPPORT) || defined(ENABLE_POLYHEDRALMESH_SUPPORT) || defined(ENABLE_TETRAHEDRALMESH_SUPPORT) 353 template<
typename VolumeMeshT >
358 template<
typename VolumeMeshT >
359 ACG::Vec3d cogVolumeMesh( VolumeMeshT& _mesh );
362 template<
typename VolumeMeshT >
366 template<
typename VolumeMeshT >
370 template<
typename VolumeMeshT >
385 void placeManip(QMouseEvent * _event,
bool _snap =
false);
388 template<
typename MeshT >
392 template<
typename MeshT >
396 template<
typename MeshT >
607 QString version() {
return QString(
"1.2"); };
bool toolboxActive_
True if the toolbox widget is active.
void placeManip(QMouseEvent *_event, bool _snap=false)
Place and show the Manipulator.
bool transformCellSelection(int _objectId, Matrix4x4 _matrix)
transform current selection of an Object by a given matrix
bool transformFaceSelection(int _objectId, Matrix4x4 _matrix)
transform current selection of an Object by a given matrix
Interface class for creating custom context menus.
Interface to call functions across plugins.
const UpdateType UPDATE_ALL(UpdateTypeSet(1))
Identifier for all updates.
QAction * resizeAction_
Called by pick Toolbar.
void slotEnableSelectionMode()
stores the current axes in the tool
int axisB_
stores the current axes in the tool
QAction * biggerManipAction_
Called by pick Toolbar.
void slotToggleAxisB()
Toggle the second axis for changing direction in tab.
Logtype
Log types for Message Window.
void setDescriptions()
Set Descriptions for scriptable functions.
void updateSelectionType()
Get current primitive selection.
QString name()
Name of the Plugin.
Interface for all plugins which want to Load or Save files and create Objects.
QActionGroup * pickToolBarActions_
Called by pick Toolbar.
Interface for all Plugins which provide scriptable Functions.
QAction * placeAction_
Called by pick Toolbar.
QAction * contextMenuManipControlsAction_
Action holding the context menu for toolbar replication.
void transform(int _objectId, Matrix4x4 _matrix)
transform an Object by a given matrix
void updateManipulatorDialog()
Update the Dialog with the last clicked manipulator.
ManipulatorMode
enum to define the manipulator mode
void setPickModeProps(movePropsWidget *_pW, const std::string &_pickmode)
List of properties dialogs (each corresponding to one manipulator)
void moveSelection(ACG::Matrix4x4d mat, int _id, QEvent::Type _type)
Move selection on an object with given id.
moveToolbarWidget * tool_
Widget for Toolbox.
void slotSetPosition()
Position of manipulator in tab changed.
MovePlugin()
Default Constructor.
void slotToggleAxisA()
Toggle the first axis for changing direction in tab.
void transformHandleRegion(int _objectId, Matrix4x4 _matrix)
Transform handle region using the given transformation matrix.
Unificationtype
stores the current axes in the tool
movePropsWidget * getDialogWidget(BaseObjectData *_obj)
Get properties dialog widget that is attached to BaseDataObject obj.
Interface class for receiving mouse events.
QtTranslationManipulatorNode::ManipulatorMode manMode_
Holds the current manipulator mode.
Vector manipulatorDirectionZ(int _objectId)
Get the z-direction of the manipulator.
Interface for all Plugins which do logging to the logging window of the framework.
void translate(int _objectId, Vector _vector)
translate an Object by a given vector
Vector manipulatorDirectionX(int _objectId)
Get the x-direction of the manipulator.
void showManipulators()
Checks if the manipulators should be visible or not.
void setManipMode(QtTranslationManipulatorNode::ManipulatorMode _mode)
Set the manipulator manipulation mode.
void showProps()
Show properties of move manipulator in a dialog ( Called via context for picking. Get the picked id f...
void slotSetDirection()
Set Direction of manipulator in tab changed.
double manip_size_
Size for the manipulators.
QToolBar * pickToolbar_
Called by pick Toolbar.
bool transformedSelected_
stores if any selected elements where transformed
Allow access to picking functions.
QList< movePropsWidget * > propsWindows_
List of properties dialogs (each corresponding to one manipulator)
QAction * moveAction_
Called by Toolbar to enable move mode.
OpenMesh::Vec3d getNearestFace(MeshType *_mesh, uint _fh, OpenMesh::Vec3d &_hitPoint)
Get closest face to hitpoint.
int axisA_
stores the current axes in the tool
void slotMoveToOrigin()
Move target Meshes cog to the origin.
MoveObjectMarker objectMarker_
Object marker to dimm Objects during manipulator transformation.
void transformMesh(ACG::Matrix4x4d _mat, MeshT &_mesh)
Transform a mesh with the given transformation matrix.
void setManipulatorDirection(int _objectId, Vector _directionX, Vector _directionY)
Set the direction of the manipulator.
void getBB(MeshT &_mesh, ACG::Vec3d &_bb_min, ACG::Vec3d &_bb_max)
get bounding box diagonal of a mesh
QActionGroup * toolBarActions_
Called by Toolbar to enable move mode.
void slotScale()
Scale (with values from Tab)
QAction * currentPoseManipAction_
Called by pick Toolbar.
Plugins can add its own toolbox to the main widget's toolbox area by using this interface.
QAction * toAllTargets_
Checked if transformation should be applied to all target objs.
std::vector< int > IdList
Standard Type for id Lists used for scripting.
void slotProjectToTangentPlane()
Project the current manipulator onto the tangent plane of the object.
QAction * placeAndSnapAction_
Called by pick Toolbar.
void slotEnableObjectMode()
stores the current axes in the tool
void objectRenderingMatrixScale(int _objectId, double _s)
Adds a scaling factor to the Object rendering Matrix in the scenegraph.
QAction * contextAction_
Context menu entry for showing per manipulator settings.
QString description()
Description of the Plugin.
void unifyBB(MeshT &_mesh, Unificationtype u=MovePlugin::DIAGONAL)
scale mesh to have a boundingboxdiagonal of one
void moveObject(ACG::Matrix4x4d mat, int _id)
Move an object with given id.
QAction * rotateTranslateAction_
Called by pick Toolbar.
bool transformVertexSelection(int _objectId, Matrix4x4 _matrix)
transform current selection of an Object by a given matrix
void objectRenderingMatrixIdentity(int _objectId)
Sets the Object Matrix in the scenegraph to identity.
Interface class from which all plugins have to be created.
QAction * smallerManipAction_
Called by pick Toolbar.
void slotUnifyBoundingBoxLongestAxis()
Scale Boundingbox longest axis to unit size (keeps aspect ratio)
QAction * contextActionHide_
Context menu entry to hide a manipulator.
void ManipulatorPositionChanged(QtTranslationManipulatorNode *_node)
update object when its manipulator changes position
void slotTranslation()
perform a translation for Manipulator in tab
QAction * rotateManipAction_
Called by pick Toolbar.
bool transformEdgeSelection(int _objectId, Matrix4x4 _matrix)
transform current selection of an Object by a given matrix
QIcon * toolIcon_
stores the current axes in the tool
Add a toolbox to OpenFlipper.
void translateFaceSelection(int _objectId, Vector _vector)
translate current face selection of an Object by a given vector
QAction * fixChildManipAction_
Called by pick Toolbar.
void manipulatorMoved(QtTranslationManipulatorNode *_node, QMouseEvent *_event)
move the object when its manipulator moves
Keyboard Event Interface.
QAction * transformRefPoseManipAction_
Called by pick Toolbar.
void slotMoveManipToCOG()
Move the current manipulator to the cog of the object.
movePropsWidget * getDialogFromButton(QPushButton *_but)
Get parent properties dialog widget of QPushButton but.
QToolBar * toolbar_
Called by Toolbar to enable move mode.
double manip_size_modifier_
Modifier for the Size (changed by Mousewheel Events)
void hideManipulator()
Hide the manipulator( Called via context for picking. Get the picked id from the Qvariant attached to...
void setAllTargets(bool _state)
Sets whether all targets should be affected or not.
OpenMesh::Vec3d getNearestEdge(MeshType *_mesh, uint _fh, OpenMesh::Vec3d &_hitPoint)
Get closest edge to hitpoint.
void slotPickToolbarAction(QAction *_action)
Called by pick Toolbar.
void slotUnifyBoundingBoxDiagonal()
Scale Boundingbox Diagonal to unit size.
SelectionType selectionType_
Current SelectionType of SelectionPlugin.
ACG::Matrix4x4d getLastManipulatorMatrix(bool _reset=true)
Get the Matrix of the last active Manipulator ( Identity if not found or hidden Manipulator ) ...
OpenMesh::Vec3d getNearestVertex(MeshType *_mesh, uint _fh, OpenMesh::Vec3d &_hitPoint)
Get closest vertex to hitpoint.
void slotUpdateContextMenuNode(int _nodeId)
Hide context menu entry when right clicking on node other than manipulator node.
void objectRenderingMatrixRotate(int _objectId, Vector _axis, double _angle)
Adds a scaling factor to the Object rendering Matrix in the scenegraph.
std::vector< int > activeManipulators_
Size for the manipulators.
void translateEdgeSelection(int _objectId, Vector _vector)
translate current edge selection of an Object by a given vector
int lastActiveManipulator_
Stores the last manipulator which has been clicked ( used for the toolbox dialog) ...
void slotSetMoveMode(QAction *_action)
Called by Toolbar to enable move mode.
void objectRenderingMatrixTranslate(int _objectId, Vector _translation)
Adds a scaling factor to the Object rendering Matrix in the scenegraph.
void slotRotate()
Rotate Manipulator (with values from Tab)
Interface class for backup handling.
Interface class for exporting functions to python.
Vector manipulatorDirectionY(int _objectId)
Get the y-direction of the manipulator.
void unifyBoundingBox(Unificationtype u)
Size for the manipulators.
Matrix4x4 getObjectRenderingMatrix(int _objectId)
Gets the Object Matrix in the scenegraph.
void setManipulatorPosition(int _objectId, Vector _position)
Set the position of the manipulator.
void translateVertexSelection(int _objectId, Vector _vector)
translate current vertex selection of an Object by a given vector
void slotPickModeChanged(const std::string &_mode)
slot is called when the pickMode changed
void slotMouseEvent(QMouseEvent *_event)
MousePress event occured.
QMenu * contextMenuManipControl_
Additional Context Menu replicating the toolbar stuff.
void slotUnifyBoundingBoxAllAxis()
Scale all Boundingbox axis to unit size.
void pluginsInitialized()
Initialization of the plugin when it is loaded by the core.
Vector manipulatorPosition(int _objectId)
Get the position of the manipulator.
QAction * moveSelectionAction_
Called by Toolbar to enable move mode.