diff --git a/source/RobotAPI/components/ArViz/Coin/VisualizationObject.cpp b/source/RobotAPI/components/ArViz/Coin/VisualizationObject.cpp index d1e10e97f8a89dafba0671a704f5814f5ca5ca84..3a066c978c6464055b8968e9c8c893b6b91412f4 100644 --- a/source/RobotAPI/components/ArViz/Coin/VisualizationObject.cpp +++ b/source/RobotAPI/components/ArViz/Coin/VisualizationObject.cpp @@ -9,6 +9,8 @@ #include <VirtualRobot/XML/ObjectIO.h> #include <VirtualRobot/Visualization/CoinVisualization/CoinVisualization.h> +#include <boost/algorithm/string/predicate.hpp> + namespace armarx::viz::coin { @@ -46,7 +48,19 @@ namespace armarx::viz::coin try { ARMARX_INFO << "Loading object from " << fullFilename; - result = VirtualRobot::ObjectIO::loadManipulationObject(fullFilename); + + if (boost::ends_with(fullFilename, ".wrl")) + { + VirtualRobot::VisualizationFactoryPtr factory = VirtualRobot::VisualizationFactory::fromName("inventor", NULL); + VirtualRobot::VisualizationNodePtr vis = factory->getVisualizationFromFile(fullFilename); + result = VirtualRobot::ManipulationObjectPtr(new VirtualRobot::ManipulationObject(filename, vis)); + + } + else + { + result = VirtualRobot::ObjectIO::loadManipulationObject(fullFilename); + + } } catch (std::exception const& ex) { @@ -55,6 +69,7 @@ namespace armarx::viz::coin } + return result; }