diff --git a/VirtualRobot/CMakeLists.txt b/VirtualRobot/CMakeLists.txt index d3c3363035ef3ca72c1ef13c97da3c7a0814c346..f09afe8aab09f035f22154b49bfd182bd360abe8 100644 --- a/VirtualRobot/CMakeLists.txt +++ b/VirtualRobot/CMakeLists.txt @@ -347,6 +347,7 @@ SET(SOURCES Visualization/TriMeshModel.cpp Visualization/TriMeshUtils.cpp Visualization/Visualization.cpp + Visualization/VisualizationFactory.cpp Visualization/VisualizationNode.cpp Workspace/Manipulability.cpp diff --git a/VirtualRobot/Visualization/CoinVisualization/CoinVisualizationFactory.cpp b/VirtualRobot/Visualization/CoinVisualization/CoinVisualizationFactory.cpp index fe1f660317cbf154589b0043317103130b54a625..3e9cd8a83bab578f2ef3d2cf22f17c5542d2b616 100644 --- a/VirtualRobot/Visualization/CoinVisualization/CoinVisualizationFactory.cpp +++ b/VirtualRobot/Visualization/CoinVisualization/CoinVisualizationFactory.cpp @@ -4345,45 +4345,6 @@ namespace VirtualRobot return root; } - void CoinVisualizationFactory::applyDisplacement(VisualizationNodePtr o, Eigen::Matrix4f& m) - { - if (!o) - { - return; - } - - - if (o->getType() != getName()) - { - VR_ERROR << "Skipping Visualization type " << o->getType() << ", but factory is of type " << getName() << std::endl; - return; - } - - CoinVisualizationNode* cvn = dynamic_cast<CoinVisualizationNode*>(o.get()); - - if (cvn) - { - SoNode* n = cvn->getCoinVisualization(); - - if (n) - { - SoSeparator* s = new SoSeparator; - s->ref(); - SoMatrixTransform* ma = getMatrixTransformScaleMM2M(m); - s->addChild(ma); - s->addChild(n->copy(FALSE)); - - cvn->setVisualization(s); - //o.reset(new CoinVisualizationNode(s)); - s->unrefNoDelete(); - } - } - else - { - VR_WARNING << "Invalid type casting to CoinVisualizationNode?!" << std::endl; - } - } - SoGroup* CoinVisualizationFactory::convertSoFileChildren(SoGroup* orig) { diff --git a/VirtualRobot/Visualization/CoinVisualization/CoinVisualizationFactory.h b/VirtualRobot/Visualization/CoinVisualization/CoinVisualizationFactory.h index 0afb2907df68c4f767248d2e03a231b9897a24bc..eaf8b1878e4eedb63547d6a51ba0eb7ed899396f 100644 --- a/VirtualRobot/Visualization/CoinVisualization/CoinVisualizationFactory.h +++ b/VirtualRobot/Visualization/CoinVisualization/CoinVisualizationFactory.h @@ -107,10 +107,6 @@ namespace VirtualRobot \return A VisualizationNode containing the visualization. */ VisualizationNodePtr createEllipse(float x, float y, float z, bool showAxes = true, float axesHeight = 4.0f, float axesWidth = 8.0f) override; - /*! - Move local visualization by homogeneous matrix m. MM is used. - */ - void applyDisplacement(VisualizationNodePtr o, Eigen::Matrix4f& m) override; /*! Create an empty VisualizationNode. diff --git a/VirtualRobot/Visualization/VisualizationFactory.cpp b/VirtualRobot/Visualization/VisualizationFactory.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3a4f8a5924329ee527e12adc16b0a6898b464225 --- /dev/null +++ b/VirtualRobot/Visualization/VisualizationFactory.cpp @@ -0,0 +1,26 @@ +/** +* @package VirtualRobot +* @author Rainer Kartmann +* @copyright 2022 Rainer Kartmann +*/ + +#include "VisualizationFactory.h" + +#include <VirtualRobot/Visualization/VisualizationNode.h> + + +namespace VirtualRobot +{ + + void + VisualizationFactory::applyDisplacement(VisualizationNodePtr visu, + Eigen::Matrix4f& displacement) + { + if (visu) + { + visu->setLocalPose(displacement); + } + } + + +} // namespace VirtualRobot diff --git a/VirtualRobot/Visualization/VisualizationFactory.h b/VirtualRobot/Visualization/VisualizationFactory.h index ef9da305c9405bae0dffa05515e957dbbf8e7ded..94f1142cdbd9b6bcf8cd19c8a6c29fcaf5aed91a 100644 --- a/VirtualRobot/Visualization/VisualizationFactory.h +++ b/VirtualRobot/Visualization/VisualizationFactory.h @@ -206,7 +206,7 @@ namespace VirtualRobot /*! Move local visualization by homogeneous matrix m. (MM) */ - virtual void applyDisplacement(VisualizationNodePtr /*o*/, Eigen::Matrix4f& /*m*/) {} + virtual void applyDisplacement(VisualizationNodePtr visu, Eigen::Matrix4f& displacement); /*! Create an empty VisualizationNode.