diff --git a/examples/Importers/ImportURDFDemo/UrdfParser.cpp b/examples/Importers/ImportURDFDemo/UrdfParser.cpp index 0e720a7c2..a6ec0a5c4 100644 --- a/examples/Importers/ImportURDFDemo/UrdfParser.cpp +++ b/examples/Importers/ImportURDFDemo/UrdfParser.cpp @@ -393,13 +393,22 @@ bool UrdfParser::parseGeometry(UrdfGeometry& geom, TiXmlElement* g, ErrorLogger* } geom.m_meshFileName = shape->Attribute("filename"); - - if (shape->Attribute("scale")) + geom.m_meshScale.setValue(1,1,1); + + if (shape->Attribute("scale")) { - parseVector3(geom.m_meshScale,shape->Attribute("scale"),logger); + if (!parseVector3(geom.m_meshScale,shape->Attribute("scale"),logger)) + { + logger->reportWarning("scale should be a vector3, not single scalar. Workaround activated.\n"); + std::string scalar_str = shape->Attribute("scale"); + double scaleFactor = urdfLexicalCast(scalar_str.c_str()); + if (scaleFactor) + { + geom.m_meshScale.setValue(scaleFactor,scaleFactor,scaleFactor); + } + } } else { - geom.m_meshScale.setValue(1,1,1); } } }